前景画像の白い部分に​のみ背景画像を重ね合​わせたいです

13 ビュー (過去 30 日間)
渓太 小野
渓太 小野 2022 年 12 月 20 日
コメント済み: 渓太 2022 年 12 月 22 日
お世話になります。
前景画像の白色領域に背景画像のRGB値を当てはめることで、2枚の画像を合成したいと考えています。
添付画像のような出力結果を得るにはどうすればよいでしょうか?

採用された回答

Hernia Baby
Hernia Baby 2022 年 12 月 21 日
こちら 参考にしました。
I1 = imread('img1.jpeg');
I2 = imread('img2.jpeg');
白の抜出ですが輝度値245より上のものを白としてとらえました
BW = I1 > 245;
I1 = I1 .* uint8(~BW); % 白以外を表示
I2 = I2 .* uint8(BW); % 白の部分を表示
imshow(I1+I2)
  1 件のコメント
渓太
渓太 2022 年 12 月 22 日
風景画像を使った場合でも正常に処理されました!
回答して頂きありがとうございます!

サインインしてコメントする。

その他の回答 (1 件)

Kojiro Saito
Kojiro Saito 2022 年 12 月 21 日
もっとスマートな方法があるかもしれませんが、下記の方法で実現できます。
% 前景画像の読み込み
img1= imread('image1.jpeg');
% グレースケール化
img1Gray = rgb2gray(img1);
% 白黒2値化
img1Bw = imbinarize(img1Gray);
% 背景画像の読み込み
img2 = imread('image2.jpeg');
% 画像の重ね描き
overlayImg = imoverlay(img2, ~img1Bw, [63 71 204]/255);
imshow(overlayImg)
  2 件のコメント
Hernia Baby
Hernia Baby 2022 年 12 月 21 日
imoverlayは円の色を青に指定して塗りつぶしている感じですかね?
自分もこの方法考えていたのですが、円が模様を持っていた場合は対応できたりしますかね?
渓太
渓太 2022 年 12 月 22 日
説明不足で申し訳ありません。円が単色なのはあくまで一例で、実際には普通の画像が入る想定でした。
勉強になりました。回答して頂きありがとうございます!

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!