Image 在MATLAB中添加两幅图像的差分
我在做图像处理。我想添加两幅图像的像素差 假设我有两幅图像A和B,我选取两幅图像的第一个像素并存储差值。我想将此差值添加到下一个像素差值。我尝试使用此代码,但它不起作用。我怎么做Image 在MATLAB中添加两幅图像的差分,image,matlab,image-processing,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
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
您可以在一行中完成,如下所示:
sum(sum(imsubtract(A-B)))
减去两幅图像并将差值保存在与a
大小相同的矩阵中。然后,sum
取结果的和
如果需要绝对差异,可以使用而不是
请注意,差异值分别为0和255。如果您想要负面实例,那么您应该直接减去矩阵,因为
A-B
看起来还可以,但是您最好使用:
diff1 = sum(sum(A-B));
或者如果B
大于A
:
diff1 = sum(sum(A-B(1:size(A,1),1:size(A,2))));
这只给出了一个值(就像您的代码一样),我不确定这是否真的是您想要的
A
和B
大小是否相同?还要注意的是,在内置函数(diff
)之后明智地命名变量不是指imsubtract(a,B)
而不是imsubtract(a-B)
?