OpenCV:charuco(钻石)不适用于更大的图像。调整哪些参数?

标签 opencv markers aruco

以某种方式检测 charuco 钻石对我来说不适用于更大的图像。使用我的 1920x1080 原始图像,它既不能可靠地识别 id(菱形 id 元素每次都在切换位置)。在第一张图片中,您可以看到它识别出 (7, 9, 45, 2)。

1920x1080 image. wrong ids order and pose estimation

然后我尝试将图像下采样到 960x540,并将校准参数 f、c 分成一半,它可以工作! id被正确识别为(2,7,45,9),姿态估计准确。

960x540 image. correctly estimated

如何使它适用于更大的图像?我尝试根据绝对像素单位(与图像大小无关)更改检测参数。这是我当前参数的列表。我意识到增加阈值的窗口大小有助于识别正方形,但不适用于 id 或姿势估计。
nmarkers: 1024 adaptiveThreshWinSizeMin: 13 adaptiveThreshWinSizeMax: 113 adaptiveThreshWinSizeStep: 10 adaptiveThreshWinSize: 42 adaptiveThreshConstant: 7 minMarkerPerimeterRate: 0.1 maxMarkerPerimeterRate: 4.0 polygonalApproxAccuracyRate: 0.05 minCornerDistance: 10.0 minDistanceToBorder: 10 minMarkerDistance: 10.0 minMarkerDistanceRate: 0.05 doCornerRefinement: false cornerRefinementWinSize: 5 cornerRefinementMaxIterations: 30 cornerRefinementMinAccuracy: 0.1 markerBorderBits: 1 perspectiveRemovePixelPerCell: 8 perspectiveRemoveIgnoredMarginPerCell: 0.13 maxErroneousBitsInBorderRate: 0.04 minOtsuStdDev: 5.0 errorCorrectionRate: 0.6 有什么提示吗?

谢谢你!

最佳答案

最后我需要修补 opencv aruco 模块。这是某个阈值升级太快(到第 4 位)到图像大小(closestCandidateDistance 中的 refineDetectedMarkers )的问题。解决方案是制作 minRepDistancedetectCharucoDiamond仅随图像大小线性缩放。

opencv forum 中的完整答案和补丁.

关于OpenCV:charuco(钻石)不适用于更大的图像。调整哪些参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45508678/

相关文章:

opencv - 在二值图像中定位单词

Android Studio OpenCV NDK : Unspecified error, 功能未实现

安卓 map : how to determine map center after a drag has been completed

c++ - Aruco 函数 estimatePoseSingleMarkers() 错误

opencv - Aruco 教程代码无法编译

opencv - 在标记识别中调整 aruco 检测参数

C# 到 C 代码 P/INvoke 多个标准 :string declarations lead to stack corruption

c++ - 在opencv中寻找非凸(或convac)外壳

jquery - 在 Jquery-ui map 上添加多个标记

matplotlib - 如何控制 matplotlib 中的词干标记大小?