Я разрабатываю программу Matlab, в которой я использую полигоны (вогнутые или выпуклые). Мне нужно использовать функции обработки изображений, такие как Imdate или Imerode и т. Д. На полигонах. Для этого я должен преобразовать свои полигоны в изображение. Интересно, есть ли способ нарисовать многоугольник непосредственно в двоичной матрице (1 для переднего плана и 0 для фона)?
В настоящее время я использую для этого функции getframe, затем frame2im и im2bw. но его недостаток заключается в том, что я не могу контролировать размер конечного изображения (= матрица) (т.е. размер изображения в пикселях при преобразовании кадра в изображение) из-за того, что matlab не отображает свои графики в пикселях (?). Поэтому каждый раз, когда кто-нибудь делает «увеличение» или «уменьшение» на графике, результирующая матрица (= изображение) будет отличаться.
мой код:
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)