配列の一部をほかの配列の要素と置き替える
51 views (last 30 days)
Show older comments
ある画像Aの上に他の画像Bを貼り付けたいと考えています。
ここで、Aの配列の一部をBの配列に置き換えることで作成したい画像A’ができると思うのですが、どのようにやればいいのか教えてください。
どちらもRGBでやりたいです。
0 Comments
Accepted Answer
Atsushi Ueno
on 22 Jun 2021
Edited: Atsushi Ueno
on 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'を画像として表示
More Answers (1)
Hernia Baby
on 22 Jun 2021
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 Comments
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!