fill holes on BW image with bwconncomp and labelmatrix
1 次查看(过去 30 天)
显示 更早的评论
How can I fill holes on BW image with bwconncomp and labelmatrix without imfill. Give me simple example ,please. for example, I want to fill the star with white.
0 个评论
回答(1 个)
Walter Roberson
2017-5-20
x = checkerboard(20,3,5);
y = x;y(rand(size(x))<.3) = 0;
labelmatrix = bwlabel(y);
to_fill = imclearborder(labelmatrix==0, 4);
[~, idx] = bwdist(labelmatrix ~= 0);
filled_label_matrix = labelmatrix;
filled_label_matrix(to_fill) = labelmatrix(idx(to_fill));
subplot(1,2,1); imagesc(labelmatrix);
subplot(1,2,2); imagesc(filled_label_matrix);
Note: for this purpose I defined "hole" in terms of 4 connectivity: with the default 8 connectivity, diagonal empty blocks were considered reachable from each other. You should try both ways and see which is better for your purpose.
4 个评论
Walter Roberson
2017-5-21
Call bwconncomp and throw the result away.
... Or explain why bwconncomp() must be used and imfill() must not be used.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Segmentation and Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!