

function main_function( )
clear all
clc
Image=imread('problem1.bmp');
[m n]=size(Image);
Image1=zeros(m,n,'uint8');
Image2=zeros(m,n,'uint8');
for i=1:m
for j=1:n
if check_V(Image(i,j))
Image1(i,j)=1;
else
Image1(i,j)=0;
end
end
end
for i=1:m
for j=1:n
if ismemberofU(Image(i,j))
Image2(i,j)=1;
else
Image2(i,j)=0;
end
end
end
% for i=1:m
% for j=1:n
% if check_U(Image(i,j))
% Image2(i,j)=1;
% else
% Image2(i,j)=0;
% end
% end
% end
[L1 num1] = mbwlabel(Image1,8);
num1
figure(1)
imshow(L1,[ ]);
title('8 adjacency for V');
imwrite(L1,'8adj2V.bmp');
[L2 num2] = mbwlabel(Image2,8);
num2
figure(2)
imshow(L2);
title('8 adjacency for U');
imwrite(L2,'8adj2U.bmp');
[L3 num3] = mbwlabel(Image1,4);
num3
figure(3)
imshow(L3,[ ]);
title('4 adjacency for V');
imwrite(L3,'4adj2V.bmp');
[L4 num4] = mbwlabel(Image2,4);
num4
figure(4)
imshow(L4);
title('4 adjacency for U');
imwrite(L2,'4adj2U.bmp');
function re=check_V(p) %checking the element wheather it is set V
v=[20 150 255];
re=0;
for i=1:length(v)
if p==v(i);
re=1;
end
end
function re=check_U(p) %checking the element wheather it is set U
u=[0 155 250];
re=0;
for i=1:length(u)
if p==u(i);
re=1;
end
end
function[labeledmask num] = mbwlabell(A,n)
[M,N] =size(A);
LabelMap= zeros(M,N,'uint8');
LabelIndex= 0;
queue =zeros(M*N,2);
be = 1;
en = 1;
for i = 1:M
for j = 1:N
if(LabelMap(i,j) ~= 0 || A(i,j) == 0)
continue;
end
LabelIndex = LabelIndex + 40;
LabelMap(i,j) = LabelIndex;
if(i > 1&& LabelMap(i-1,j)== 0 && A(i-1,j) == 1)
LabelMap(i-1,j) = LabelIndex;
queue(en,1) = i-1;
queue(en,2) = j;
en = en + 1;
end
if(i < M && LabelMap(i+1,j)== 0 && A(i+1,j) == 1)
LabelMap(i+1,j) = LabelIndex;
queue(en,1) = i+1;
queue(en,2) = j;
en = en + 1;
end
if(j > 1&& LabelMap(i,j-1)== 0 && A(i,j-1) == 1)
LabelMap(i,j-1) = LabelIndex;
queue(en,1) = i;
queue(en,2) = j-1;
en = en + 1;
end
if(j < N && LabelMap(i,j+1)== 0 && A(i,j+1) == 1)
LabelMap(i,j+1) = LabelIndex;
queue(en,1) = i;
queue(en,2) = j+1;
en = en + 1;
end
if n ==8
if(i > 1&& j > 1 && LabelMap(i-1,j-1) == 0 && A(i-1,j-1) == 1)
LabelMap(i-1,j-1) = LabelIndex;
queue(en,1) = i-1;
queue(en,2) = j-1;
en = en + 1;
end
if(i > 1&& j < N && LabelMap(i-1,j+1) == 0 && A(i-1,j+1) == 1)
LabelMap(i-1,j+1) = LabelIndex;
queue(en,1) = i-1;
queue(en,2) = j+1
en = en + 1;
end
if(i < M&& j > 1 && LabelMap(i+1,j-1) == 0 && A(i+1,j-1) == 1)
LabelMap(i+1,j-1) = LabelIndex;
queue(en,1) = i+1;
queue(en,2) = j-1;
en = en + 1;
end
if(i < M&& j < N && LabelMap(i+1,j+1) == 0 && A(i+1,j+1) == 1)
LabelMap(i+1,j+1) = LabelIndex;
queue(en,1) = i+1;
queue(en,2) = j+1;
en = en + 1;
end
end
while be<en
qi = queue(be,1);
qj = queue(be,2);
be = be + 1;
if(qi >1 && LabelMap(qi-1,qj)== 0 && A(qi-1,qj) == 1)
LabelMap(qi-1,qj) =LabelIndex;
queue(en,1) = qi-1;
queue(en,2) = qj;
en = en + 1;
end
if(qi <M && LabelMap(qi+1,qj)== 0 && A(qi+1,qj) == 1)
LabelMap(qi+1,qj) =LabelIndex;
queue(en,1) = qi+1;
queue(en,2) = qj;
en = en + 1;
end
if(qj >1 && LabelMap(qi,qj-1)== 0 && A(qi,qj-1) == 1)
LabelMap(qi,qj-1) =LabelIndex;
queue(en,1) = qi;
queue(en,2) = qj-1;
en = en + 1;
end
if(qj <N && LabelMap(qi,qj+1)== 0 && A(qi,qj+1) == 1)
LabelMap(qi,qj+1) =LabelIndex;
queue(en,1) = qi;
queue(en,2) = qj+1;
en = en + 1;
end
if n == 8
if(qi >1 && qj > 1 && LabelMap(qi-1,qj-1) == 0 && A(qi-1,qj-1) == 1)
LabelMap(qi-1,qj-1) =LabelIndex;
queue(en,1) = qi-1;
queue(en,2) = qj-1;
en = en + 1;
end
if(qi >1 && qj < N && LabelMap(qi-1,qj+1) == 0 && A(qi-1,qj+1) == 1)
LabelMap(qi-1,qj+1) =LabelIndex;
queue(en,1) = qi-1;
queue(en,2) = qj+1;
en = en + 1;
end
if(qi <M && qj > 1 && LabelMap(qi+1,qj-1) == 0 && A(qi+1,qj-1) == 1)
LabelMap(qi+1,qj-1) =LabelIndex;
queue(en,1) = qi+1;
queue(en,2) = qj-1;
en = en + 1;
end
if(qi < M && qj < N &&LabelMap(qi+1,qj+1) == 0 && A(qi+1,qj+1) == 1)
LabelMap(qi+1,qj+1) =LabelIndex;
queue(en,1) = qi+1;
queue(en,2) = qj+1;
en = en + 1;
end
end
end
end
end
labeledmask =LabelMap;
num =LabelIndex;

浙公网安备 33010602011771号