Je développe un programme matlab dans lequel j'utilise des polygones (concaves ou convexes). J'ai besoin d'utiliser des fonctions de traitement d'image comme imdilate ou imerode et etc. sur les polygones. À cette fin, je devrais convertir mes polygones en image. Je me demande s'il existe un moyen d'esquisser un polygone directement dans une matrice binaire (1 pour le premier plan et 0 pour le fond)?comment esquisser un polygone dans une matrice ou une image binaire afin d'utiliser des fonctions de traitement d'image?
Actuellement, j'utilise les fonctions 'getframe', puis 'frame2im', puis 'im2bw' pour ce faire. mais son inconvénient est que je n'ai aucun contrôle sur la taille de l'image finale (= la matrice) (c'est-à-dire la taille de l'image en pixels lors de la conversion d'une image) parce que matlab n'affiche pas ses tracés en pixels (?). Donc, à chaque fois que quelqu'un fait un «zoom avant» ou un «zoom arrière» sur le tracé, la matrice résultante (= image) serait différente.
mon 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)
modifié -> bw = poly2mask (Polygone (:, 1), polygone (:, 2), ImageHeight, ImageWidth); –
@ Kamran: pouvez-vous expliquer votre commentaire? que voulez-vous dire par modifié? – Azim
@Azim: Je pense qu'il soulignait une petite faute de frappe. Je l'ai corrigé. – gnovice