两幅图像的绝对差值之和

use*_*256 3 matlab image-processing

我想找到一张图片与我拥有的一些样本(黑色和白色)有多相似.我使用绝对差值代码的总和,但因为我是MATLAB的新手,所以我没有找到如何使用它.这个算法是如何工作的?它是否衡量了照片的相似程度?


I= imread('img1.jpg');

image2= imread('img2.jpg');


% J = uint8(filter2(fspecial('gaussian'), I));

K = imabsdiff(I,image2);

figure, imshow(K,[])
Run Code Online (Sandbox Code Playgroud)

Sha*_*314 5

好吧,我想你自己几乎已经回答了你的问题.它是绝对差值的总和.所以说你有img1,img2哪个是相同的大小和类型.

要找到差异,请进行减法

img1-img2
Run Code Online (Sandbox Code Playgroud)

要查找绝对差值,请使用绝对值功能 abs

abs(img1-img2)
Run Code Online (Sandbox Code Playgroud)

要查找总和,请使用该sum功能.请注意,您需要为图像的每个"尺寸"执行此操作.如果您不确定,请键入size(img1)并查看是否显示2个或3个数字,这与sum(...)您需要使用的数量相对应.

对于彩色图像(3维):

sum(sum(sum(abs(img1-img2)))) 
Run Code Online (Sandbox Code Playgroud)

^^是绝对差异的总和.无论哪个具有最小的总和都可以被认为是最接近的图像.

如果您有不同尺寸的图像,则需要使用normxcorr2功能.此函数将返回相同大小的矩阵,其中模板(小)图像在每个不同点处适合大图像的程度.找到该矩阵的最大值,即图像的拟合程度.

例如:

correlation = normxcorr2(smallImg, bigImg);
compareMe = max(correlation(:))
Run Code Online (Sandbox Code Playgroud)

  • 我建议`sum(abs(img1(:) - img2(:)))`作为一种更简单的方法,但仍然是很好的答案. (3认同)