平方差算法的总和如何工作?

时间:2014-09-24 07:39:53

标签: image algorithm image-processing

我有两个图像a和b,其中b是图像块a。我想找到b使用块匹配。我该怎么做呢?

2 个答案:

答案 0 :(得分:15)

这很简单,实际上这个名字告诉你几乎所有你需要知道的东西 - 你只需计算每个像素的平方差值之和。

为两张图像计算SSD:

ssd = 0
for i = 0 to height - 1
    for j = 0 to width - 1
        diff = A[i][j] - B[i][j]
        ssd += diff * diff

一般的想法是,对于匹配图像,SSD将很小。如果你试图匹配两个图像,其中一个图像被翻译了一些,那么你通常会做一个强力逼近的方法,你在x,y位移的范围内计算SSD,然后确定最小的SSD值,然后应该对应最佳对齐偏移。

请注意,SSD通常仅用于其简单性和相对较低的计算成本 - 通常使用Normalized Cross Correlation可获得更好的结果。

答案 1 :(得分:1)

如果要在图像a内找到块b的位置,则可以通过构建两个图像的Gaussian pyramid并开始寻找最小的上升点来节省大量计算能力。

最小的图像将为您提供快速计算,但提供估计结果-该估计结果可稍后在金字塔的下一层使用,以缩小搜索范围并获得更好的精度结果。 您继续这样操作,直到达到金字塔的0级,即原始图像。