poly2mask not creating filled mask
    5 views (last 30 days)
  
       Show older comments
    
I am trying to create a mask from the attached image (sampleEdges.png), which was obtaiend by applying the edge command to the sample image (sampleImage.jpg). I have obtained the coordinates of the area I want to mask using regionprops. The MaskBoundary looks like as shown in MaskBoundary.png. I now want to create a mask from the MaskBoundary coordinates using poly2mask, but it does not create a filled mask (mask.png)
sample = imread('sampleImage.jpg')
sampleEdges = edge(rgb2gray(sample),'canny',0.1,25);
regions = regionprops(sampleEdges, 'all');
[~,index] = sortrows([regions.Area].'); % Sort by descending area 
regions = regions(index(end:-1:1)); 
MaskBoundary = bwtraceboundary(sampleEdges,[regions(2).PixelList(1,2) regions(2).PixelList(1,1)],'n');
MaskX = MaskBoundary(:,2);
MaskY = MaskBoundary(:,1);
Mask = poly2mask(MaskX,MaskY,size(sample,1),size(sample,2))
The two regions are the ones that enclose the red markings in ROI.png. But regionprops can only find the right one.
0 Comments
Answers (1)
  Image Analyst
      
      
 on 4 Mar 2020
        Use bwboundaries() instead of bwtraceboundary().
2 Comments
  Image Analyst
      
      
 on 5 Mar 2020
				How do you identify the one you want?  A week or two ago I gave you code to identify the curved bar.  Why did you discard that approach?
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
