matlab で同じ寸法の 2 つの画像を重ね合わせたい。関数を使用しようとしましimfuse
たが、得られた画像は望んでいたものと同じではありませんでした。
最初の画像は、元の画像に Canny エッジ検出器を適用した後に得られた画像のネガです。この黒い縁のあるネガ画像を元の画像に押し付けたいと思います。
誰かが2つの画像を重ねるための他の機能または方法を提案できますか?? ありがとうございます。
matlab で同じ寸法の 2 つの画像を重ね合わせたい。関数を使用しようとしましimfuse
たが、得られた画像は望んでいたものと同じではありませんでした。
最初の画像は、元の画像に Canny エッジ検出器を適用した後に得られた画像のネガです。この黒い縁のあるネガ画像を元の画像に押し付けたいと思います。
誰かが2つの画像を重ねるための他の機能または方法を提案できますか?? ありがとうございます。
'AlphaData'
2 番目の画像のプロパティを使用できます。
>> imshow( origImg ); hold on;
>> h = imagesc( edgeImg ); % show the edge image
>> set( h, 'AlphaData', .5 ); % .5 transparency
>> colormap gray
何かを見つけたので、ここで共有する必要があると思いました。
ShaiとSteveが述べたように、画像を使用するAlphaData
と多くの場合非常に良い結果が得られます。ただし、画像を元の解像度で保存する必要がある場合(および、、などを使用しない場合)、次の方法が役立ちます。getframe
print
saveas
( Steve の記事の 2 番目の例を使用します)
% Reading images
E = imread('http://www.mathworks.com/cmsimages/63755_wm_91790v00_nn09_tips_fig3_w.jpg');
I = imread('http://www.mathworks.com/cmsimages/63756_wm_91790v00_nn09_tips_fig4_w.jpg');
% normalizing images
E = double(E(:,:,1))./double(max(E(:)));
I = double(I(:,:,1))./double(max(I(:)));
AlphaData
(不透明度)を使用したオーバーレイは次のとおりです。
figure, imshow(E), hold on
red = cat(3, ones(size(E)), zeros(size(E)), zeros(size(E)));
h = imshow(red);
set(h, 'AlphaData', I);
上記とまったく同じ外観を1つのマトリックスで取得するには( を使用して実現できませんでしたimfuse
)、次の単純なコードを使用できます。
Comb = E;
Comb(:,:,1) = (1-I).*E + I; % red
Comb(:,:,2) = (1-I).*E; % green
Comb(:,:,3) = (1-I).*E; % blue
figure, imshow(Comb)
それが誰かを助けることを願っています!