单元测试中的图像比较算法

4
我写了一个简单的渲染引擎,想要进行一些单元测试,这些测试应该自动渲染图像并将其与存储的图像进行比较,以检查是否存在差异。这应该给出某种度量标准,以便判断图像是否偏差过大,或者是否可以归因于动画中的不同时间。如果还能够显示差异的位置,那就太好了,但这不是必需的。我们还可以假设这两个图像大小完全相同。
那么,这种情况下有哪些经典论文/技术可供参考呢?
(使用 Go 语言编写,可能尚未有相关实现,我想自己实现以了解其工作原理。该渲染器为 github.com/luxengine)
谢谢!

你尝试过逐像素地轻松获取差异吗? - Alessandro Jacopson
是的,它并不真正有效,因为微小的时间变化可能会将图像的某些部分向左或向右移动,然后所有这些像素都被认为是超级不同的。 - user2475269
1个回答

0

一个想法是将您的问题视为图像配准中的一个案例。

下面的图表(摘自http://it.mathworks.com/help/images/point-mapping.html)给出了解决图像配准问题的方法流程图。

enter image description here

使用上述图示术语,基本思路是:

  1. 在固定图像中找到一些有趣的点
  2. 在移动图像中找到相同的对应点;
  3. 使用点对应估计两个图像之间的变换。其中最简单的变换是由二维向量表示的平移;该向量的大小是两个图像之间差异的度量,对于您的情况,它可以与您在评论中提到的偏移相关联。更丰富的变换是由3x3矩阵描述的单应性,其与单位矩阵的距离再次是两个图像之间差异的度量。
  4. 您可以将变换应用回去,例如在平移的情况下,您可以将平移应用于移动图像,然后可以逐像素(这里我有点简化)将扭曲的图像与参考图像进行比较。

这里还有一些更多的想法:图像比较 - 快速算法


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接