配列の一部をほかの配列の要素と置き替える

8 Ansichten (letzte 30 Tage)
akasa
akasa am 22 Jun. 2021
Kommentiert: akasa am 23 Jun. 2021
ある画像Aの上に他の画像Bを貼り付けたいと考えています。
ここで、Aの配列の一部をBの配列に置き換えることで作成したい画像A’ができると思うのですが、どのようにやればいいのか教えてください。
どちらもRGBでやりたいです。

Akzeptierte Antwort

Atsushi Ueno
Atsushi Ueno am 22 Jun. 2021
Bearbeitet: Atsushi Ueno am 22 Jun. 2021
と同一内容の回答になりますが、厳密にいえば画像の貼り付けではなく配列の置き換えに関する質問なので異なると言えば異なります。画像データの置き換えも配列データの置き換えも実質同じだという事を説明する意味でも回答致します。
ここで扱うカラー画像のデータは、サイズが(x方向画素数,y方向画素数,RGB3要素)であるuint8型の3次元配列データです。
a = uint8(randi([0 255],[100 100 3])); % 100*100*3のuint8型配列を0-255のランダム値で埋める
imshow(a); % aを画像として表示
b = uint8(cat(3,ones(50).*255,zeros(50),zeros(50))); % 50*50*3のuint8型配列を(R:全部255,G:全部0,B:全部0)に設定
imshow(b); % bを画像として表示
a_dash = a; % aをa'としてコピー
a_dash(25:74,25:74,:) = b; % a'の座標(25~74,25~74,1~3)の値をb(1~50,1~50,1~3)の値に置き換える
imshow(a_dash); % a'を画像として表示
  1 Kommentar
akasa
akasa am 22 Jun. 2021
ご回答ありがとうございます。
自分の画像でも実行することができました!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Hernia Baby
Hernia Baby am 22 Jun. 2021
先回の質問にあった 画像の上に画像を貼り付ける のStep3の部分に相当します。
RGBもグレースケールも同じ処理なので、簡単なグレースケールで例を示します
x = linspace(255,0,12);
x = uint8(x);
I = reshape(x,[3,4]);
imshow(I,'InitialMagnification','fit');
ここから右下だけ真っ白にします
これは 変数 Ⅰ の最後の行列の数字を0から255に上書きするので表示が変わります
I(end,end) = 255;
imshow(I,'InitialMagnification','fit');
これを三次元にしたものがRGB版になります。
  3 Kommentare
Hernia Baby
Hernia Baby am 22 Jun. 2021
解決できたみたいで幸いです。 回答者側も勉強になるので、わからないことあれば、これからも質問よろしくお願いします。
akasa
akasa am 23 Jun. 2021
そうなのですね。
また質問する機会があればよろしくお願いします。

Melden Sie sich an, um zu kommentieren.

Produkte


Version

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!