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

조회 수: 47 (최근 30일)
akasa
akasa 2021년 6월 22일
댓글: akasa 2021년 6월 23일
ある画像Aの上に他の画像Bを貼り付けたいと考えています。
ここで、Aの配列の一部をBの配列に置き換えることで作成したい画像A’ができると思うのですが、どのようにやればいいのか教えてください。
どちらもRGBでやりたいです。

채택된 답변

Atsushi Ueno
Atsushi Ueno 2021년 6월 22일
편집: Atsushi Ueno 2021년 6월 22일
と同一内容の回答になりますが、厳密にいえば画像の貼り付けではなく配列の置き換えに関する質問なので異なると言えば異なります。画像データの置き換えも配列データの置き換えも実質同じだという事を説明する意味でも回答致します。
ここで扱うカラー画像のデータは、サイズが(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
akasa
akasa 2021년 6월 22일
ご回答ありがとうございます。
自分の画像でも実行することができました!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Hernia Baby
Hernia Baby 2021년 6월 22일
先回の質問にあった 画像の上に画像を貼り付ける の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
Hernia Baby
Hernia Baby 2021년 6월 22일
解決できたみたいで幸いです。 回答者側も勉強になるので、わからないことあれば、これからも質問よろしくお願いします。
akasa
akasa 2021년 6월 23일
そうなのですね。
また質問する機会があればよろしくお願いします。

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!