0
我想檢測提供的二進制(黑白)圖像中的連接組件。我正在使用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