Estoy desarrollando un programa de matlab en el que utilizo polígonos (cóncavos o convexos). Necesito usar funciones de procesamiento de imágenes como imdilate o imerode y etc. en los polígonos. Para este fin, debería convertir mis polígonos a imagen. Me pregunto si hay una forma de dibujar un polígono directamente en una matriz binaria (1 para primer plano y 0 para fondo).cómo dibujar un polígono en una matriz o imagen binaria para utilizar las funciones de procesamiento de imagen?
Actualmente, uso las funciones 'getframe', 'frame2im' y '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 al convertir un marco en imagen) debido a que matlab no muestra sus gráficos en píxeles (?). Entonces, cada vez que alguien "amplía" o "aleja" el gráfico, 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)
modificado -> bw = poly2mask (Polygon (:, 1), polígono (:, 2), ImageHeight, ImageWidth); –
@ Kamran: ¿puedes explicar tu comentario? ¿Qué quieres decir con modificado? – Azim
@Azim: Creo que estaba señalando un pequeño error tipográfico. Lo arreglé. – gnovice