[討論] 用遞迴寫 connected component labeling
小弟因為要寫成硬體,無法使用bwlabel
所以把函式寫開
問題一
在寫這個程式時,它一直跑出
Error in search (line 21)
if(A(i-1,j-1)==1)
小弟看了很久一直找不出來,請問有人能幫我看一下嗎,感謝
A是二質化後的矩陣
B是要標記放的矩陣
以下是我的程式碼
%%%%%
img=imread('C:\Users\user\Desktop\recursive connected
components\TC-IDL-0830.jpg');
im_g=rgb2gray(img);
umb=graythresh(im_g);
A=im2bw(im_g,umb);
[A1,A2,A3]=size(A);
B=zeros(A1,A2);
lab=0;
for i=1:A1
for j=1:A2
if(A(i,j)==1)
lab=lab+1;
B=search(A,B,lab,i,j,A1,A2);
end
end
end
function [B]=search(A,B,lab,i,j,A1,A2)
B(i,j)=lab;
if(i-1<=0)
i-1==1;
end
if(j-1<=0)
j-1==1;
end
if(i+1>A1)
i+1==A1;
end
if(j+1>A2)
j+1==A2;
end
if(A(i-1,j-1)==1)
if(B(i-1,j-1)~=lab)
B=search(A,B,lab,i-1,j-1,A1,A2);
end
end
if(A(i-1,j)==1)
if(B(i-1,j)~=lab)
B=search(A,B,lab,i-1,j,A1,A2);
end
end
if(A(i-1,j+1)==1)
if(B(i-1,j+1)~=1)
B=search(A,B,lab,i-1,j+1,A1,A2);
end
end
if(A(i,j-1)==1)
if(B(i,j-1)~=1)
B=search(A,B,lab,i,j-1,A1,A2);
end
end
if(A(i,j+1)==1)
if(B(i,j+1)~=1)
B=search(A,B,lab,i,j+1,A1,A2);
end
end
if(A(i+1,j-1)==1)
if(B(i+1,j-1)~=1)
B=search(A,B,lab,i+1,j-1,A1,A2);
end
end
if(A(i+1,j)==1)
if(B(i+1,j)~=1)
B=search(A,B,lab,i+1,j,A1,A2);
end
end
if(A(i+1,j+1)==1)
if(B(i+1,j+1)~=1)
B=search(A,B,lab,i+1,j+1,A1,A2);
end
end
end
%%%
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.12.104
※ 編輯: rereaa 來自: 122.116.12.104 (06/08 22:43)
※ 編輯: rereaa 來自: 122.116.12.104 (06/08 22:44)
※ 編輯: rereaa 來自: 122.116.12.104 (06/08 22:45)
※ 編輯: rereaa 來自: 122.116.12.104 (06/08 22:48)
※ 編輯: rereaa 來自: 122.116.12.104 (06/08 22:49)
→
06/10 07:52, , 1F
06/10 07:52, 1F
→
06/10 09:02, , 2F
06/10 09:02, 2F