Zajmuję się programowaniem matlab, w którym używam wielokątów (wklęsłych lub wypukłych). Muszę użyć funkcji przetwarzania obrazu, takich jak imdilate lub imerode itp. Na wielokątach. W tym celu powinienem przekształcić moje wielokąty w obraz. Zastanawiam się, czy istnieje sposób na szkicowanie wielokąta bezpośrednio w matrycy binarnej (1 na pierwszym planie i 0 na tło)?jak naszkicować wielokąt w matrycy lub obrazie binarnym, aby skorzystać z funkcji przetwarzania obrazu?
Obecnie używam do tego funkcji "getframe", następnie "frame2im", a następnie "im2bw". ale jego wadą jest to, że nie mam żadnej kontroli nad rozmiarem ostatecznego obrazu (= matrycy) (tj. rozmiaru obrazu w pikselach podczas konwersji ramki na obraz) z powodu faktu, że matlab nie wyświetla swoich wykresów w pikselach (?). Za każdym razem, gdy ktoś robi "powiększenie" lub "pomniejszenie" na wykresie, wynikowa macierz (= obraz) będzie się różnić.
mój kod:
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)
zmodyfikowane -> mc = poly2mask (wielokąt (:, 1), wielokąt (:, 2), ImageHeight, ImageWidth); –
@Kamran: czy możesz wyjaśnić swój komentarz? co masz na myśli przez modyfikację? – Azim
@Azim: Myślę, że wskazywał małą literówkę. Naprawiłem to. – gnovice