質問: 配列の一部をほかの配列の要素と置き替える ある画像aの上に他の画像bを貼り付けたいと考えています。 ここで、aの配列の一部をbの配列に置き換えることで作成したい画像a’ができると思うのですが、どのようにやればいいのか教えてください。 どちらもrgbでやりたいです。
回答: @akasa様の前の質問:画像の上に画像を貼り付ける - matlab answers - matlab central (mathworks.com) と同一内容の回答になりますが、厳密にいえば画像の貼り付けではなく配列の置き換えに関する質問なので異なると言えば異なります。画像データの置き換えも配列データの置き換えも実質同じだという事を説明する意味でも回答致します。 ここで扱うカラー画像のデータは、サイズが(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'を画像として表示