Borrar filtros
Borrar filtros

poly2mask not creating filled mask

2 visualizaciones (últimos 30 días)
Afzal
Afzal el 4 de Mzo. de 2020
Comentada: Image Analyst el 5 de Mzo. de 2020
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.

Respuestas (1)

Image Analyst
Image Analyst el 4 de Mzo. de 2020
Use bwboundaries() instead of bwtraceboundary().
  2 comentarios
Afzal
Afzal el 4 de Mzo. de 2020
Editada: Afzal el 4 de Mzo. de 2020
With bwboundaries() I cannot specify the start point, and it does not seem to find the region I want. I am also having issues getting the left ROI (see edited post)
Image Analyst
Image Analyst el 5 de Mzo. de 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?

Iniciar sesión para comentar.

Etiquetas

Productos


Versión

R2016b

Community Treasure Hunt

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

Start Hunting!

Translated by