2017-03-28 11 views
0

私はアプリケーションで作業しています。私は2つの画像を比較して、どれが類似しているかを確認しています。私はこれを行うことができました。例はhereです。Matlab - 画像上の興味のある領域をプロットする

画像からは、与えられた両方の画像で同じに近い画素のための空白が表示されます。私が次にやりたいことは、白いスペースの座標を取得し、original imageにプロットして、コインについての最も強い特徴を強調します。しかし、私はMatlabにはまったく新しいので、これを行う方法は不明です。

firstImage = sprintf('M:/Project/MatLab/Coin Image Processing/Image Processing/test-1.jpg'); 
secondImage = sprintf('M:/Project/MatLab/Coin Image Processing/Image Processing/test-99.jpg'); 

a = rgb2gray(imread(firstImage)); 
b = rgb2gray(imread(secondImage)); 

axes(handles.axes4); 
imshow(a==b); 
title('Scanning For Strongest Features', 'fontweight', 'bold') 

disp(a==b)を使用してから、私は両方の絵のポイントが同じであるかを確認することができます。だから私の推測では、すべてのゼロの座標を取得し、それをハイライトする方法で元の画像にプロットして、黄色の蛍光ペンを使用するのと同じようにする必要があるということです。

+0

'テキスト=はsprintf( 'A')は'だけの冗長な方法であります'text = 'a''を実行します –

+1

ああ、ちょうど私がユーザ入力を使用する必要があった前のセクションの行をコピーしました。それを変更するのを忘れました – iBenParry

+0

それでは心配する必要はありません。以前の質問を見て、彼らがあなたを助けたらそれを受け入れることを検討してください。 –

答えて

2

私はあなたの質問を得た場合、私はあなたがのためにa==bすべての座標を収集するためにfindを使うべきだと思う:

[X, Y] = find(a == b); % Find coordinates for which the two images are equal 
imshow(a), axis image; % Show first image 
hold on 
plot(Y, X, 'y.'); % Overlay those coordinates 
hold off 
1

透明なオーバーレイを使用して、関心領域をプロットすることができます。

figure 
imshow(originalImage); % plot the original image 
hold on 
% generate a red overlay 
overlay(:, :, 1) = ones(size(a)); % red channel 
overlay(:, :, 2) = zeros(size(a)); % green channel 
overlay(:, :, 3) = zeros(size(a)); % blue channel 
h = imshow(overlay); % plot the overlay 
set(h, 'AlphaData', (a == b) * 0.5); % set the transparency to 50% if a == b and 0% otherwise 
関連する問題