3

matlab で同じ寸法の 2 つの画像を重ね合わせたい。関数を使用しようとしましimfuseたが、得られた画像は望んでいたものと同じではありませんでした。

最初の画像は、元の画像に Canny エッジ検出器を適用した後に得られた画像のネガです。この黒い縁のあるネガ画像を元の画像に押し付けたいと思います。

誰かが2つの画像を重ねるための他の機能または方法を提案できますか?? ありがとうございます。

4

3 に答える 3

6

'AlphaData'2 番目の画像のプロパティを使用できます。

>> imshow( origImg ); hold on;
>> h = imagesc( edgeImg ); % show the edge image
>> set( h, 'AlphaData', .5 ); % .5 transparency
>> colormap gray
于 2013-09-08T11:01:28.613 に答える
2

何かを見つけたので、ここで共有する必要があると思いました。

ShaiSteveが述べたように、画像を使用するAlphaDataと多くの場合非常に良い結果が得られます。ただし、画像を元の解像度で保存する必要がある場合(および、、などを使用しない場合)、次の方法が役立ちます。getframeprintsaveas

( 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)

それが誰かを助けることを願っています!

于 2014-01-12T02:55:47.687 に答える