将失真/变形图像与基本图像匹配的最快和最准确的方法?

Posted

技术标签:

【中文标题】将失真/变形图像与基本图像匹配的最快和最准确的方法?【英文标题】:Fastest and most accurate way to match distorted/transformed image to base image? 【发布时间】:2012-01-22 19:24:25 【问题描述】:

我正在尝试通过扫描仪(或可能是手机摄像头)获取不同质量和失真的图像,并将其与基本图像(通过 Photoshop 生成的图像)​​重新对齐,然后再打印和扫描) 尽可能接近。

图像的每个角落都有四个粗角点,我一直在使用原始方法找到四个点,然后对扫描的图像使用透视变换。但是,我的算法完全是蛮力的,而且极易破解。

我已经尝试使用 cvGoodFeaturesToTrack(),但我无法找到一种准确的方法来确保校准的四个点在所有情况下都是准确的。我曾想过使用模板匹配,但它似乎无法在各种扭曲下可靠地工作。我看到了很多执行特定任务的方法,比如寻找轮廓、关键点、线条等,但没有迹象表明它们实际上做什么

有没有更好的方法,我只是没有看到?

谢谢!

【问题讨论】:

您是否正在处理由相机镜头引起的可能失真? 它必须假设有能力处理任何类型的失真。我想几乎完美的扫描会导致最小的变化,但我必须考虑低质量的扫描仪、桶形失真、不正确的方向等。如果你说的是我认为你在说的话,那么就像拇指印一样镜头本身并不是我的想法。 你试过哈里斯角检测器吗?不看图片很难给出准确的建议。 “我的算法完全是蛮力的并且非常容易破解”:你到底是什么意思?是检测那些失败的角落还是透视变换不合适?经典的方法是二值化和斑点分析:找到比阈值暗的像素,并在它们接触时将它们分组。将具有点形状和面积的组保持在预期范围内。计算它的重心。 你最后找到方法了吗?我认为您需要施加约束(以某种方式),即两侧必须以直线垂直线结束。这可以用单应矩阵来表示吗? 【参考方案1】:

经典方法是二值化和斑点分析:找到比阈值暗的像素,并在它们接触时将它们分组(连通分量分析)。保持具有点形状(良好圆形度)和预期范围内的区域的组。使用重心。这对于您的参考点应该足够准确。

由于图像中的附近特征,您可能希望减少对角点的错误检测。更好区分的一种选择是使用环而不是圆盘,并寻找有孔的斑点。

【讨论】:

【参考方案2】:

如果您的失真可以描述为单应性,那么您可以使用“ESM”算法(高效二阶最小化,在 CVD 库中可用)。 http://www.edwardrosten.com/cvd/cvd/html/group__gEsm.html

如果您的失真包括一些镜头失真,您可以使用 DIC(数字图像相关)。

【讨论】:

以上是关于将失真/变形图像与基本图像匹配的最快和最准确的方法?的主要内容,如果未能解决你的问题,请参考以下文章

深度估计的准确性 - 立体视觉

目标检测算法盘点

Keras 图像分类 - 验证数据集的预测准确性与 val_acc 不匹配

图像中的插值

医学图像识别与挖掘研究方法初探

从 iPhone 的照片库中调整方形裁剪图像的正确方法而不会失真