【问题标题】:How does sum of squared difference algorithm work?平方差和算法如何工作?
【发布时间】:2022-03-31 20:26:32
【问题描述】:

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

【问题讨论】:

  • 您是在问算法是如何工作的吗?或者你在问如何实现它?您的标题暗示前者,但您的问题主体暗示后者。如果您想了解实现细节,您还需要说明您正在使用的平台/操作系统和环境。
  • 我其实很想实现它。我有两个图像 a 和 b,其中 b 是 a 的翻译图像,现在我必须应用 SSD。我该怎么办?

标签: image algorithm image-processing


【解决方案1】:

这很简单,事实上,这个名字几乎可以告诉你所有你需要知道的事情——你只需计算每个像素的平方差值的总和。

计算两个图像的 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 会获得更好的结果。

【讨论】:

  • 谢谢!但是,如果我有两种不同尺寸的图像?假设第二个图像是第一个的子图像,那么我如何应用 SSD 找到匹配块还有其他简单的块匹配算法吗?
  • 您只需在子图像和主图像中具有相同尺寸的块之间应用 SSD。如果您希望使用最小 SSD 值找到匹配项,您可以在主图像中移动此块并重复计算 SSD。
【解决方案2】:

如果您想在图像 a 中找到块 b 的位置,您可以通过构建两个图像的 Gaussian pyramid 并开始查看找到的最小的向上来节省大量计算能力。

最小的图像可以为您提供快速计算但估计结果 - 此估计结果稍后可用于金字塔的下一层,以缩小您的搜索区域并获得更好的精度结果。 你继续这样,直到你到达金字塔的第 0 级,也就是你的原始图像。

【讨论】:

    猜你喜欢
    • 2011-04-22
    • 2023-03-10
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    相关资源
    最近更新 更多