Sto sviluppando un programma matlab in cui utilizzo poligoni (concavi o convessi). Ho bisogno di usare le funzioni di elaborazione delle immagini come imdilate o imerode ed ecc. Sui poligoni. A tal fine, dovrei convertire i miei poligoni in immagine. Mi chiedo se c'è un modo per disegnare un poligono direttamente in una matrice binaria (1 per primo piano e 0 per sfondo)?come disegnare un poligono in una matrice o un'immagine binaria per utilizzare le funzioni di elaborazione delle immagini?
Attualmente, utilizzo le funzioni 'getframe', quindi 'frame2im' e quindi 'im2bw' per farlo. ma il suo svantaggio è che non ho alcun controllo sulla dimensione dell'immagine finale (= matrice) (cioè la dimensione dell'immagine in pixel quando converti un frame in immagine) a causa del fatto che MATLAB non mostra i suoi grafici in pixel (?). Quindi ogni volta che qualcuno esegue uno "zoom in" o uno "zoom out" sul grafico, la matrice risultante (= immagine) sarebbe diversa.
il mio codice:
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)
modificato -> bw = poly2mask (Poligono (:, 1), Poligono (:, 2), ImageHeight, ImageWidth); –
@Kamran: puoi spiegare il tuo commento? cosa intendi per modificato? – Azim
@ Azim: Penso che stia indicando un piccolo refuso. L'ho riparato. – gnovice