【问题标题】:Exact measurement of translation and rotation of marker objects using OpenCV/EmguCV使用 OpenCV/EmguCV 精确测量标记对象的平移和旋转
【发布时间】:2013-05-08 15:29:28
【问题描述】:

我想测量两个图像之间物体的位移。位移可以是图像平面中的任何内容。如果可能的话,结果应该以亚像素精度给出位移。

有一些假设,应该会更容易,但到目前为止对我没有帮助:

  • camara 物镜几乎没有失真(远心)并且垂直于物平面定向
  • 对象平面永远不会改变
  • 平面标记对象(可能是已知图像,例如扑克牌)始终位于对象平面中,因此不会缩放或扭曲 -> 只会发生旋转和平移变化。

我的第一个方法是从 EmguCV 中获取特征识别示例,在第一张图像中找到第一个对象,获取该图片的相关部分,现在将其用作模板并在第二张图像中搜索它。这确实有效,但有点不令人满意。单应矩阵中存在缩放和翘曲(可能是因为某些点,分配错误)并且放置精度非常差。

我曾在商业图像处理软件 Halcon 的演示中尝试过这种方法,它在亚像素精度方面表现出色。在那里,您可以对要搜索对象的图像进行某种模板的最小二乘拟合。结果是仿射变换矩阵并且非常精确。

EmguCV/OpenCV 有什么可比的吗?

提前谢谢你!

编辑:

在 EmguCV 函数中找到解决方案

CameraCalibration.EstimateRigidTransform(PointF[] src, PointF[] dest, bool fullAffine);

将fullAffine 设置为false。我之前的问题是,我使用的是

Features2DToolbox.GetHomographyMatrixFromMatchedFeatures();

来自匹配示例。

【问题讨论】:

    标签: opencv computer-vision precision emgucv measurement


    【解决方案1】:

    在 EmguCV 函数中找到解决方案

    CameraCalibration.EstimateRigidTransform(PointF[] src, PointF[] dest, bool fullAffine);
    

    将fullAffine 设置为false。我之前的问题是,我正在使用

    Features2DToolbox.GetHomographyMatrixFromMatchedFeatures();
    

    来自匹配示例。

    剩下的唯一问题是EstimateRigidTransform 仍然产生的小缩放,但我能够从结果中计算出来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-19
      • 2013-04-29
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 2011-10-14
      • 2012-11-29
      相关资源
      最近更新 更多