dilation of specific objects

2 views (last 30 days)
Mahalakshmi
Mahalakshmi on 11 Jul 2011
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.

Accepted Answer

Nathan Greco
Nathan Greco on 11 Jul 2011
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 Comments
Image Analyst
Image Analyst on 12 Jul 2011
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.
Mahalakshmi
Mahalakshmi on 12 Jul 2011
Thanx :).. It worked :) :)..

Sign in to comment.

More Answers (0)

Categories

Find more on Convert Image Type in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!