dilation of specific objects
6 ビュー (過去 30 日間)
古いコメントを表示
I am wondering if it is possible to perform dilation on a part of the image. Basically after converting the image to binary I have a number of objects. By using regionprops I have their area. Can I perform dilation only for those whose area<x using imdilate. If not imdilate is there a way I can do that? Thanx.
0 件のコメント
採用された回答
Nathan Greco
2011 年 7 月 11 日
First, I would label regions in your image:
bwl = bwlabel(img,8);
Area of regions:
a = regionprops(img,'area');
a = {a.Area}; %turn into cell array
Create a mask for what you want to be dilated:
xarea = 10;
idx = find(cellfun(@(x)x<xarea,a));
bwl2 = sum(reshape(cell2mat(arrayfun(@(x)x==bwl,idx,'un',0)),size(img,1),size(img,2),[]),3);
Dilate the mask:
bwl2 = bwmorph(bwl2,'dilate',1);
And finally, apply this dilated mask back to the original bw image:
img = img | bwl2;
2 件のコメント
Image Analyst
2011 年 7 月 12 日
Yikes! For a simpler way to extract the indicated region, you might use ismember:
bw12 = ismember(bwl, idx) > 0;
instead of that complicated sum() expression.
その他の回答 (0 件)
参考
カテゴリ
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!