opencv - 评估图像配准过程的置信度

标签 opencv image-processing image-registration

背景:

假设从两个不同的角度对同一场景进行了两次拍摄。对它们应用配准算法将产生表示它们之间关系的单应矩阵。通过使用此单应矩阵扭曲其中之一,将(理论上)产生两个相同的图像(如果忽略非共享区域)。

既然不存在完美,两个图像可能不会完全相同,我们可能会发现它们之间存在一些差异,并且在减去它们时可以明显地显示出这种差异。

示例:

Scene 1 Scene 2

Scene2 Warped to Scene 1

AbsDiff(Scene1,Scene2 Warped to Scene 1)

此外,光照条件可能会导致减法时的巨大差异。

问题:

我正在寻找可以评估注册过程准确性的指标。这个指标应该是:

  1. 归一化:0->1 与图像类型(自然场景、文本、人物...)无关的测量。例如,如果在完全不同的一对照片上进行的两个完全不同的注册过程具有相同的置信度,假设为 0.5,这意味着发生了相同的好(或坏)注册。这应该适用,即使一对是非常详细的照片,另一对是白色背景,黑色写着“你好”。

  2. 区分错误配准精度和不同光照条件:虽然有很多方法可以消除这种差异并使两个图像看起来大致相同,但我正在寻找能够做到这一点的测量方法不计算它们而不是修复它们(性能问题)。

首先想到的是对两个图像的绝对差异求和。但是,这将产生一个代表错误的数字。当您想将它与另一个配准过程进行比较时,这个数字没有意义,因为配准更好但细节更多的其他图像可能会产生更大的错误而不是更小的错误。

抱歉发了这么长的帖子。我很高兴提供任何进一步的信息并合作寻找解决方案。

附言使用 OpenCV 是可以接受且更可取的。

最佳答案

您始终可以在两个图像中使用不变(光照/缩放/旋转)特征。例如 SIFT 特征。

当您使用典型比率(最近和下一个最近之间)匹配这些时,您将得到大量匹配项。您可以使用您的方法或对这些匹配项使用 RANSAC 来计算单应性。 在任何情况下,对于任何单应候选者,您都可以计算与模型一致的特征匹配(全部)的数量。 该数字除以总匹配数得出的模型质量指标为 0-1。

如果您使用 RANSAC 使用匹配来计算单应性,则质量指标已经内置。

关于opencv - 评估图像配准过程的置信度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34674068/

相关文章:

c++ - 如何使用 vlfeat 和 opencv 在 C++ 中确定图像的 PHOW 特征?

python-2.7 - 在 MXnet 中使用 im2rec 创建带有 png 图像的数据集

c++ - 使用opencv逐个单元读取表格(图像)的数据

python - 当内核设置为 None 时,opencv 腐 eclipse 或膨胀如何工作

opencv - 分割有什么用?

c++ - OpenCV 项目无法编译

Java 高级成像 GradientMagnitudeDescriptor

Python 在 "SystemExit: 1"上引发异常 "sys.exit ( 1 )"

python - 计算圆和直线的变换

python - 使用 python 调整 gdal 大小并保存为 png