0

我正在研究图像处理。我想添加两个图像的像素差异。

假设我有两个图像 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
4

2 回答 2

2

您可以在一行中执行以下操作:

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

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

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

请注意,差异的值在 0 和 255 之间。如果你想要负实例,那么你应该直接减去矩阵作为A-B

于 2012-10-30T10:31:24.137 回答
0

虽然看起来不错,但你最好:

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

或者如果B大于A

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

这仅给出一个值(就像您的代码一样),我不确定这是否真的是您想要的..

于 2012-10-30T10:33:16.623 回答