在MATLAB中添加两个图像的差异

时间:2012-10-30 10:29:24

标签: image matlab image-processing

我正致力于图像处理。我想添加两个图像的像素差异。

假设我有两个图像A和B.我选择两个图像的第一个像素并存储差值。我想将此差值添加到下一个像素差异。我尝试使用此代码,但它无法正常工作。我该怎么办?

A = imread('sub2.jpg');
B = imread('sub1.jpg');
tic
[rows cols] = size(A);
diff1 = 0;
for x = 1:rows
   for y = 1:cols
       diff = A(x,y)-B(x,y);
       diff1 = diff1+diff;
   end
end
disp(diff1);
toc

2 个答案:

答案 0 :(得分:2)

您可以按如下方式在一行中执行此操作:

sum(sum(imsubtract(A-B)))

imsubtract减去两张图片,并将差异保存在与A相同的矩阵中。然后,sum获取结果的总和。

如果您需要绝对差异,可以使用imabsdiff代替imsubtract

请注意,差异的值在0和255之间。如果您想要负实例,则应直接将矩阵减去A-B

答案 1 :(得分:0)

看起来不错,但你最好还是选择:

diff1 = sum(sum(A-B));

B大于A

diff1 = sum(sum(A-B(1:size(A,1),1:size(A,2))));

这只给出了一个值(就像你的代码一样),我不确定这是不是你想要的......