gpt4 book ai didi

python - 使用 ransac 时如何获得更多内点?

转载 作者:太空宇宙 更新时间:2023-11-03 20:41:26 27 4
gpt4 key购买 nike

matches = sorted(matches, key = lambda x: x.distance)
src_pts = np.float32([ kp1[m.queryIdx].pt for m in matches ]).reshape(-1,1,2)
dst_pts = np.float32([ kp2[m.trainIdx].pt for m in matches ]).reshape(-1,1,2)
M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC,5.0)
matchesMask = mask.ravel().tolist()

我使用 matchesMask 中的值作为内点,事实证明该值受 ransac 的影响太严重,我试图仅从匹配中获取前 100 个最佳匹配,但异常值的百分比仍然太高。

最佳答案

cv2.findHomography 如果源点与目标投影之间的距离大于 ransacReprojThreshold(5.0 - 在代码中),则将点对视为内点):

norm(src_pts[i] - M * dst_pts[i]) > ransacReprojThreshold

ransacReprojThreshold - 将点对视为内点时允许的最大重投影误差。

所以,如果你想找到 100 个“最佳”匹配,即使重投影误差超过 5.0:

  1. 创建对数组:(点对和重投影误差),
  2. 按重投影误差排序,
  3. 取重投影误差最小的 100 个点。

关于python - 使用 ransac 时如何获得更多内点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56840536/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com