gpt4 book ai didi

python - 使用OpenCV的视觉Odometry

转载 作者:行者123 更新时间:2023-12-02 16:12:48 24 4
gpt4 key购买 nike

我正在尝试在OpenCV Python中实现单眼(单相机)视觉测距法。 Wikipedia在此处提供了常用的方法步骤http://en.wikipedia.org/wiki/Visual_odometry
我使用Lucas Kanade追踪器计算了光流。代码在这里给出http://docs.opencv.org/trunk/doc/py_tutorials/py_video/py_lucas_kanade/py_lucas_kanade.html
Wiki上的第4步说:“检查流场 vector 是否存在潜在的跟踪误差,并消除异常值”。如何在OpenCV(python)中执行此操作?我应该使用什么算法/函数?那第5步和第6步呢?我在某处读到(请参阅第三条评论http://opencv-users.1802565.n2.nabble.com/optical-flow-with-kalman-filter-td6578617.html),如果使用Lucas Kanade,卡尔曼滤波器将不会对性能产生任何改善。

最佳答案

至于删除带有错误的 vector ,您应该根据calcOpticalFlowPyrLK返回的状态过滤关键点。以下代码可以帮助您:

def featureTracking(image_ref, image_cur, px_ref):
kp2, st, err = cv2.calcOpticalFlowPyrLK(image_ref, image_cur, px_ref, None, **lk_params) # shape: [k,2] [k,1] [k,1]

st = st.reshape(st.shape[0])
kp1 = px_ref[st == 1]
kp2 = kp2[st == 1]

return kp1, kp2

至于第5步和第6步,找到必要的矩阵并使用它估计姿势(openCV函数 findEssentialMatrecoverPose。您可以浏览以下示例:
  • https://github.com/uoip/monoVO-python
  • https://github.com/luigifreda/pyslam

  • 并阅读以下两篇文章:
  • https://avisingh599.github.io/vision/visual-odometry-full/
  • https://avisingh599.github.io/vision/monocular-vo/
  • 关于python - 使用OpenCV的视觉Odometry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27340814/

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