Ich entwickle ein Matlab-Programm, in dem ich Polygone (konkav oder konvex) verwende. Ich muss Bildverarbeitungsfunktionen wie imdilate oder imerode und etc auf den Polygonen verwenden. Zu diesem Zweck sollte ich meine Polygone in Bild konvertieren. Ich frage mich, ob es eine Möglichkeit gibt, ein Polygon direkt in einer binären Matrix zu skizzieren (1 für den Vordergrund und 0 für den Hintergrund)?Wie skizziert man ein Polygon in einer Matrix oder einem Binärbild, um Bildverarbeitungsfunktionen zu verwenden?
Derzeit verwende ich 'getframe', dann 'frame2im' und dann 'im2bw' Funktionen, um dies zu tun. aber sein Nachteil ist, dass ich keine Kontrolle über die Größe des endgültigen Bildes (= Matrix) habe (dh die Größe des Bildes in Pixeln, wenn ein Bild in Bild umgewandelt wird), da Matlab seine Plots nicht in Pixeln anzeigt (?). Jedes Mal, wenn jemand in der Zeichnung "hineinzoomt" oder "herauszoomt", würde sich die resultierende Matrix (= Bild) unterscheiden.
mein Code:
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)
modifiziert -> BW = poly2mask (Polygon (:, 1), Polygon (:, 2), Imageheight, Width); –
@Kamran: Können Sie Ihren Kommentar erklären? Was meinst du mit modifiziert? – Azim
@Azim: Ich denke, er wies auf einen kleinen Tippfehler hin. Ich habe es repariert. – gnovice