如何在MATLAB中找到两张图片之间的任何不同对象



在阅读了两张图像(a,b)后,我想在"b"图像中找到第一张图像"a"中不存在的任何对象,并且对象可以是任何形状。这无关紧要,这两张图像是在同一个地方用相同的相机状态拍摄的图片。但可能会有一些差异,我想知道这些不同物体的数量。

这是迄今为止尝试过的

i = imread('camera1.jpg');
j = imread('camera4.jpg');
 a = im2double(i)
b = im2double(j)
f1= ones(3,3)/9;
i1=imfilter(i,a);
j1=imfilter(j,b);

ed1 = edge(i1);
ed2 = edge(j1);
madBlock = mean2(abs(double(ed1) - double(ed2)))

我认为,最简单的方法是对齐这两个图像(例如在Hugin中)并计算差值diff = |b-a|。下一步是阈值化:将diff中低于阈值的所有像素设置为零。然后进行中值滤波以省略椒盐噪声,并应用连通分量搜索(行进平方法)。你会发现图像之间的差异。

最新更新