Create a mask for different values
6 次查看(过去 30 天)
显示 更早的评论
I want to subtract two images and show the results in another figure. For instance, if the subtraction matrix has 0 value indicate the elements with black, if it has negative value show them with red and if it has positive value show with blue. How can I do that?
0 个评论
采纳的回答
Walter Roberson
2021-2-17
%sample data
firstImage = imread('cameraman.tif');
secondImage = imresize( rgb2gray( imread('flamingos.jpg') ), size(firstImage));
%assuming grayscale images
imgdiff = double(firstImage) - double(secondImage);
n0p = sign(imgdiff); %-1 for negative, 0 for equal, 1 for positive
%add 2 to n0p to get a 1-based index
cmap = [1 0 0; 0 0 0; 0 0 1]; %red, black, blue
diffImg = reshape(cmap(n0p+2,:), size(imgdiff,1), size(imgdiff,2), 3);
%show it off
subplot(3,1,1)
imshow(firstImage);
title('cameraman')
subplot(3,1,2)
imshow(secondImage);
title('flamingos')
subplot(3,1,3)
imshow(diffImg);
title('color difference image')
4 个评论
Walter Roberson
2021-2-24
%sample data
firstImage = imread('cameraman.tif');
secondImage = imresize( rgb2gray( imread('flamingos.jpg') ), size(firstImage));
%assuming grayscale images
imgdiff = double(firstImage) - double(secondImage);
n0p = sign(imgdiff); %-1 for negative, 0 for equal, 1 for positive
%add 2 to n0p to get a 1-based index
cmap = [1 0 0; 0 0 0; 0 0 1]; %red, black, blue
diffImg = reshape(cmap(n0p+2,:), size(imgdiff,1), size(imgdiff,2), 3);
%show it off
subplot(3,1,1)
imshow(firstImage);
title('cameraman')
subplot(3,1,2)
imshow(secondImage);
title('flamingos')
subplot(3,1,3)
imshow(diffImg);
title('color difference image')
hold on
names = {'negative', 'equal', 'positive'};
for K = 1 : 3
L(K) = plot(nan,nan,'s', 'markeredgecolor', cmap(K,:), 'markerfacecolor', cmap(K,:));
end
hold off
legend(L, names, 'location', 'eastoutside')
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!