7

ポリゴン(凹面または凸面)を使用する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)
4

1 に答える 1

12

poly2maskおそらく、スクリプトのように patch を使用してプロットする代わりに、関心領域を計算するために使用できます。例えば

Polygon = [ 15    45    33    30  40 23 ; 9    9    24    15 13 13]';
ImageWidth = 100;
ImageHeight = 50;
bw = poly2mask(Polygon(:,1),Polygon(:,2),ImageHeight,ImageWidth);
imshow(bw)

上記のコードの結果 bw がこの画像です。

bw

于 2009-04-24T16:26:59.800 に答える