切り取った小さな画像を大きな画像の任意の場所に貼り付ける
Afficher commentaires plus anciens
matlabで、小さい画像を大きな画像の任意の場所に貼り付けることはできるでしょうか?
今、人が2人写っているとある画像をグレースケールにし、顔をモザイク化して、そのモザイクのみを切り取り、元のカラーの画像の顔の部分に貼り付ける、ということをやろうとしています。
モザイクの切り取りまではうまく行きましたが、元のカラー画像への貼り付けができません。
しかし、ネットで検索をしても「2つのイメージを合成する方法」だったり、「PowerPointに画像を貼り付ける方法」のようなものしかヒットしません。
私がやろうとしていることはmatlabで可能でしょうか?
以下は途中までのコードになっております。
%% 画像の読み込み、グレースケール化
I=imread('kadai400.png');
%グレースケールにする
Igray=rgb2gray(I);
figure,imshow(Igray);
%% 顔をモザイク化する
% 40-80,190-230をモザイク化
m=10;
for i=40:10:80
for j=190:10:230
Igray(i:i+m,j:j+m)=mean2(Igray(i:i+m,j:j+m));
end
end
% 80-110,130-160をモザイク化
for i=80:10:110
for j=130:10:160
Igray(i:i+m,j:j+m)=mean2(Igray(i:i+m,j:j+m));
end
end
figure,imshow(Igray);
%モザイク化した画像を変数に保存
for i=40:10:80
for j=190:10:230
%男性のモザイク
Itrm1=imcrop(Igray,[190 40 50 50]);
end
end
for i=80:10:110
for j=130:10:160
%女性のモザイク
Itrm2=imcrop(Igray,[130 80 40 40]);
end
end
%% figureに3つの画像を表示させる
subplot(1,3,1)
imshow(I)
title('Original Image')
subplot(1,3,2)
imshow(Itrm1)
title('trm Image1')
subplot(1,3,3)
imshow(Itrm2)
title('trm Image2')
%% 作ったモザイクを、カラー画像の顔に貼り付ける
2 commentaires
Atsushi Ueno
le 30 Mai 2021
何故カラー画像のままモザイク処理をしないのでしょうか?アルゴリズムの勉強の為でしょうか?
【Matlab】画像のラスタスキャン(モザイク処理)【for文】 : 初心者によるArduinoとProcessingを使ったロボット製作 (blog.jp) >ただ、「Matlab モザイク処理」とか「Matlab ラスタスキャン」とかで調べちゃうと、Matlabの場合blockprocっていう「イメージの個別ブロック処理」ってのがあって、それで2次元画像の場合は済んじゃうんですよね。しかも処理が速い。これじゃ3次元に対応できない。。し、アルゴリズムの勉強ができない・・・ってなったんです。
mean2は使うんかい!とツッコみたくなりますが
Atsushi Ueno
le 30 Mai 2021
Modifié(e) : Atsushi Ueno
le 30 Mai 2021
imcropは繰り返す必要はありません。またx座標とy座標の指定が逆になっています。x:40-80, y:190-230とx:80-110, y:130-160を切り取るのであれば以下のようになります。
%モザイク化した画像を変数に保存
%男性のモザイク
Itrm1=imcrop(Igray,[40 190 40 40]); % x:40-80, y:190-230
%女性のモザイク
Itrm2=imcrop(Igray,[80 130 30 30]); % x:80-110, y:130-160
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur イメージ dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!