私はポリゴン(凹凸)を使ったmatlabプログラムを開発しています。ポリゴンにimdilateや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)
- > BW = poly2mask(ポリゴン(:、1)、多角形(:、2)、ImageHeight、ImageWidth)。 –
@Kamran:あなたのコメントを説明できますか?変更されたことはどういう意味ですか? – Azim
@Azim:彼は小さなタイプミスを指摘していたと思います。それを私が直した。 – gnovice