제공되는 이진 (흑백) 이미지에서 연결된 구성 요소를 감지하고 싶습니다. 나는 그것을하기 위해 DFS를 사용하고있다. 그러나 그것은 무한 루프에 빠져 있습니다. 나는 기본적으로 matlab이 500 깊이 이상의 재귀를 지원하지 않는다는 것을 알고있다. 그래서 안전을 위해 크기가 100 X 200 인 작은 이미지를 사용하고 있습니다. 그러나 다음은 내 코드입니다. 어떤 몸이라도 문제를 발견하도록 도울 수 있습니까?matlab에서 dfs를 사용하는 연결된 구성 요소가 작동하지 않습니다.
국가 번호 :
img = imread('small_img.png');
[row col] = size(img);
img_label = zeros(row,col,'uint8');
labelCounter = 1;
for i=1:row
for j=1:col
if img(i,j)==0 && img_label(i,j)==0
dfs(i,j,img,img_label,row,col,labelCounter);
end
end
end
imshow(img);
와 DFS
function dfs(i,j,img,img_label,row,col,labelCounter)
if i < 1 || i >row || j < 1 || j > col || img_label(i,j) ~=0 || img(i,j) ~=0
return;
end
img_label(i,j) = labelCounter;
dfs(i,j-1,img,img_label,row,col,labelCounter);
dfs(i-1,j,img,img_label,row,col,labelCounter);
end