微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

实时关键点检测算法

如何解决实时关键点检测算法

我需要在监控摄像头下测量传送带的速度。腰带穿了几年基本没什么质感了,腰带上面什么都没有,甚至很难看出腰带在动。

我正在尝试将此问题作为对象跟踪问题来解决

  1. 找到腰带上的一些关键点/对象。
  2. 使用 OpenCV 的中值流跟踪器跟踪这些关键点/对象。
  3. 逆透视变换并获得 3D 空间中的速度。

如果第 1 步中的关键点/对象是手动给出的,第 2 步和第 3 步工作得很好,但我在自动查找关键点时遇到了性能问题:关键点检测花费 60 毫秒以上,即使我将图像裁剪成非常小的图像。我尝试了在 OpenCV 中实现的 SURF 和 ORB,都不够快。

还有其他更快的选择吗?

解决方法

也许您可以尝试使用 FAST 算法进行角点检测。它比您尝试过的选项更快。它是在 opencv 中实现的。以下是直接从 opencv 文档 (https://docs.opencv.org/master/df/d0c/tutorial_py_fast.html) 中提取的示例代码:

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt

img = cv.imread('simple.jpg',0)

# Initiate FAST object with default values
fast = cv.FastFeatureDetector_create()

# find and draw the keypoints
kp = fast.detect(img,None)
img2 = cv.drawKeypoints(img,kp,None,color=(255,0))

# Print all default params
print( "Threshold: {}".format(fast.getThreshold()) )
print( "nonmaxSuppression:{}".format(fast.getNonmaxSuppression()) )
print( "neighborhood: {}".format(fast.getType()) )
print( "Total Keypoints with nonmaxSuppression: {}".format(len(kp)) )
cv.imwrite('fast_true.png',img2)

# Disable nonmaxSuppression
fast.setNonmaxSuppression(0)

kp = fast.detect(img,None)

print( "Total Keypoints without nonmaxSuppression: {}".format(len(kp)) )
img3 = cv.drawKeypoints(img,0))
cv.imwrite('fast_false.png',img3)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。