dilation of specific objects
    8 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
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 commentaires
Réponse acceptée
  Nathan Greco
      
 le 11 Juil 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 commentaires
  Image Analyst
      
      
 le 12 Juil 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.
Plus de réponses (0)
Voir également
Catégories
				En savoir plus sur Convert Image Type dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


