dilation of specific objects
2 次查看(过去 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 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!