0

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

1920x1080 图像。 错误的 ID 顺序和姿势估计

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

960x540 图像。 正确估计

如何使它适用于更大的图像?我尝试根据绝对像素单位(与图像大小无关)更改检测参数。这是我当前参数的列表。我意识到增加阈值的窗口大小有助于识别正方形,但不适用于 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 有什么提示吗?

谢谢你!

4

1 回答 1

1

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

opencv 论坛中的完整答案和补丁。

于 2017-08-10T11:31:02.033 回答