dilation of specific objects
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Akzeptierte Antwort
Nathan Greco
am 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 Kommentare
Image Analyst
am 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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Image Segmentation and Analysis finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!