cómo dibujar un polígono en una matriz o imagen binaria con el fin de utilizar las funciones de procesamiento de imágenes?

StackOverflow https://stackoverflow.com/questions/786375

Pregunta

Estoy desarrollando un programa MATLAB en la que I utiliza polígonos (cóncavas o convexas). Necesito utilizar las funciones de procesamiento de imágenes como imdilate o imerode y etc de los polígonos. Con este fin, debería convertir mis polígonos de imagen. Me pregunto si hay una manera de dibujar un polígono directamente en una matriz binaria (1 de primer plano y de 0 para el fondo de)?

Actualmente, utilizo 'GetFrame', luego 'frame2im' y entonces funciona '' im2bw para hacerlo. pero su inconveniente es que no tengo control sobre el tamaño de la imagen final (= matriz) (es decir. el tamaño de la imagen en píxeles cuando convertir una trama a la imagen) debido al hecho de que MATLAB no muestra sus parcelas en píxeles (?). Así que cada vez que alguien hace 'zoom in' o 'zoom out' en la parcela, la matriz resultante (= imagen) sería diferente.

mi código:

Polygon = [ 15    45    33    30  40 23 ; 9    9    24    15 13 13]';
figure(1); clf; patch(Polygon(:,1),Polygon(:,2),'black');
axis off

%convert the plot to binary image
frame = getframe(gca);
im =frame2im(frame);
level = graythresh(im);
bw = ~im2bw(im,level);

%draw the resulting image
imtool(bw)
%dilate the image
SE = strel('square',5);
bw2 = imdilate(bw,SE);

%draw the dilated image
imtool(bw2)
¿Fue útil?

Solución

Tal vez usted podría utilizar para calcular poly2mask una región de interés en lugar de trazar usando el parche como en la secuencia de comandos. Por ejemplo

Polygon = [ 15    45    33    30  40 23 ; 9    9    24    15 13 13]';
ImageWidth = 100;
ImageHeight = 50;
bw = poly2mask(Polygon(:,1),Polygon(:,2),ImageHeight,ImageWidth);
imshow(bw)

Y el resultado, peso corporal, del código anterior es esta imagen.

BW

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top