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

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

Respuesta aceptada

Atsushi Ueno
Atsushi Ueno el 22 de Jun. de 2021
Editada: Atsushi Ueno el 22 de Jun. de 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 comentario
akasa
akasa el 22 de Jun. de 2021
ご回答ありがとうございます。
自分の画像でも実行することができました!

Iniciar sesión para comentar.

Más respuestas (1)

Hernia Baby
Hernia Baby el 22 de Jun. de 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 comentarios
Hernia Baby
Hernia Baby el 22 de Jun. de 2021
解決できたみたいで幸いです。 回答者側も勉強になるので、わからないことあれば、これからも質問よろしくお願いします。
akasa
akasa el 23 de Jun. de 2021
そうなのですね。
また質問する機会があればよろしくお願いします。

Iniciar sesión para comentar.

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!