find4QuadCornerSubpix 与cornerSubPix

the*_*woz 6 opencv subpixel

我无法找到有关 find4QuadCornerSubpix() 函数的任何类型的信息。我试图了解 find4QuadCornerSubpix() 和 cornerSubPix() 之间的区别。

有人可以帮助我吗?

谢谢

Oli*_*del 6

太长了;使用cornerSubPix,find4QuadCornerSubpix未完成

  • cornerSubPix 使用求解器来查找掩模区域 (winSize) 内的鞍点(一阶导数为零,二阶导数改变符号)。请注意,findChessboardCorners 会使用 2x2 的小窗口执行一次cornerSubPix 调用,因此您已经获得了亚像素精度的坐标。
  • find4QuadCornerSubpix 尝试近似分隔棋盘格字段(“四边形”)的线并返回这些线的交叉点。find4Quad 函数也仅使用每个提供的输入点(例如来自 findChessboardCorners)周围的屏蔽区域(“region_size”)。

我使用这些ABS 人工生成的图像(添加低噪声,无失真,大多数四边形边缘长度约为100pxl 边缘长度)测试了两个角点细化。以像素为单位测量的差异:

  1. 有效值 0.0537 最大 0.1963;cv::findChessboardCorners(无额外参考):
  2. 有效值 0.0368 最大 0.0969;(1) + 11x11 角子像素;与 ocv 教程中的参数相同
  3. 有效值 0.2230 最大 1.2619;(1) + 11x11 find4QuadCornerSubpix(imgs 二进制化,自适应阈值)

我测试了 3x3、11x11、50x50、100x100、150x150 并输入二值化图像。自适应阈值;都具有相同的结果。

我选择了一些现实世界的示例,其中固有校准的重投影 rms 约为 0.08,类似于 (2)。对于 (3),他们有 0.25 像素的 reproj。均方根。

所以目前(opencv 版本 4.5.1)对我来说 find4QuadCornerSubpix 看起来未完成且无法使用。0.5 的均方根值是我在没有任何子像素细化的情况下所期望的最大误差。如果有的话,该功能也会失败输入坐标比region_size/2更接近图像边界,

来源: https: //github.com/opencv/opencv/blob/fc1a15626226609babd128e043cf7c4e32f567ca/modules/imgproc/src/cornersubpix.cpp https://github.com/opencv/opencv/blob/fc1a15626226609babd128e043cf7c4e32f 567ca/模块/calib3d/src/quadsubpix .cpp https://github.com/opencv/opencv/blob/b450dd7a87bc69997a8417d94bdfb87427a9fe62/modules/calib3d/src/calibinit.cpp https://github.com/opencv/opencv/blob/b19f8603843ac63274379c9e36331db6d49 17001/样本/cpp/tutorial_code/calib3d /camera_calibration/camera_calibration.cpp