2017-11-17 4 views
-1

私はmatlabにy * x行列を持ち、Aのように4点間の行列領域の任意の点に値を代入したい、B、C、D私は座標を知っている画像、ポイントが整列していれば問題はないが、そうではない。Matlabの与えられた領域内の行列の各要素に値を代入

これを行う機能はありますか?

Example of result編集

Iは数値の入力行列有する行列のサイズは720×1280 領域[この

X =ように定義されている0と1の間 3 10 27 20 3]; y = [10 40 31 1 10];

ピクセルが除外されているか、矩形のエッジに沿って含まれているかどうかは関係ありませんが、含まれている方が良いです。

出力行列は、私が探していたソリューションはに非常に類似している2

例えば、入力行列にいくつかの他の値に置き換えられ、関心領域内の点の値と等しくなければなりませんm7913dが私に与えたもの。

+1

サンプル入力/ Sと出力行列を –

+0

マスクを提供ポリゴンは、マスクされたマトリックスに割り当てます。あなたが適切な質問をした場合、私は答えを提供してくれるでしょう。一つのことは、どの矩形の端に沿ってどのピクセルが含まれ、除外されるのかを決める必要があります。それは私があなたのためにできることではありません。 –

答えて

0

あなたがマスクにポリゴンに変換するpoly2maskを使用し、次のようにlogical indexingを使用してマトリックスに所望の要素を変更することができる:

% Create a sample matrix 
matrix = rand(50, 50); 

% Define your region as a polygon 
x = [3 10 27 20 3]; 
y = [10 40 31 1 10]; 

% Convert the polygon to a mask 
mask = poly2mask(x,y,size(matrix, 1),size(matrix, 2)); 

% Change the elements in matrix which are inside the polygon 
matrix(mask) = 123; 

% Display the result 
figure 
imshow(matrix, 'InitialMagnification', 'fit') 
hold on 
plot(x, y, 'r') 

enter image description here

関連する問題