0

こんにちは 私は絵を描こうとしています。

私は3つの行列を持っています:

行列 A: X 座標

マトリックス B: Y 座標

マトリックス C: 画像のグレースケール

例えば:

A = [1, 1;     B = [1, 2;       C = [1, 2;
     2, 2]          1, 2]            3, 4]

X(1)、Y(1) に C(1) の値を持つ点をプロットします。値 1 は (1,1) に描画されます 値 2 は (1,2) に描画されます 値 3 は (2,1) に描画されます 値 4 は (2,2) に描画されます

これをプロットするために使用できる関数はありますか、またはこれを実装する必要がありますか? これを実装する方法を提案していただければ幸いです。ありがとうございました。

4

1 に答える 1

0

全体像ですか?そして、A、B、C は 1D ですよね?その場合、対応するインデックスで行列 C の値を使用して 2D 配列を作成し、それを画像に変換して画像を表示できます。

img = zeros(max(max(B)),max(max(A)));   %initialize the new matrix
for i = 1:numel(C)                      %for each element in C
        img(B(i),A(i)) = C(i);          %fill the matrix one element at a time
end
img = mat2gray(img);                    %optional. More information in edit
imshow(img);                            %display the image

これは、インデックスの最小値が 1 であることを前提としています。代わりに 0 の場合は、すべてのインデックスに 1 を追加する必要があります。

私のmatlabは少しさびていますが、うまくいくはずです。

編集:開始する2次元配列である理由はありますか? とにかく、どちらの場合でも機能するように回答を更新しました。

edit2: mat2grayは値を 0 から 1 の間でスケーリングします。値が既にグレースケールである場合、これは不要です。値が別のスケールの範囲にあるが、必ずしも最小値と最大値が含まれていない場合は、最小値と最大値を指定できます。たとえば、範囲が 0 から 255 の場合は、mat2gray(img,[0,255]);

于 2013-07-21T06:28:59.580 に答える