OpenCV目标跟踪(一)-寻找角点

这两天在看OpenCV中的跟踪与运动这一块,跟踪和运动是一个很大的课题,里面的涉及的内容有很多,按着自己的学习进度上,简要的做个总结。
在我们处理一段视频而非某张静止的图片时,我们往往会去关注画面中的一个或者几个物体。对运动的物体的关注,我们处理的方式往往不是将整个物体都作为关注对象,而是选取几个独特的特征点去跟踪,这样我们就引出了角点的概念。
(1)角点
角点在运动与跟踪的研究中,就是说可以拿来作为跟踪的特征点都被称为角点。通俗直观的解释就是,一类含有足够信息且能从当前帧和下一帧中都能提取出来的点。
(2)角点的具体描述
a.一阶导数的局部最大所对应的像素点;
b.两条及两条以上边缘的交点;
c.图像中梯度值和梯度方向的变化速率都很高的点;
d.角点处的一阶导数最大,二阶导数为0,指示物体边缘变化不连续的方向。
(3)Harris角点检测算法简述
Harris角点检测算子是依据自相关函数给出的,得出了矩阵M,矩阵M中的特征值是自相关函数的一阶曲率,如果一阶曲率都很高的话,那么就可以认为这个是特征点。
下面给出图来直观的解释下:
这里写图片描述
图(a)是窗口在图像的平滑区域滑动,窗口在各个方向上没有变化,图(b)窗口在边缘方向上没有变化,图(c)窗口在各个方向上有变化,此时即为角点。

Harris角点的检测,相对于一幅图像来看,主要和自相关函数的曲率特性有关。自相关函数描述了局部图像灰度的变化程度,主要可以表示为:
这里写图片描述
上式中,E是窗口平移产生的图像灰度变化,也即是自相关函数,w是窗口,I是图像灰度。对上式进行展开即有:
这里写图片描述
其中
这里写图片描述
而对于小的偏移:

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
OpenCV是一个开源计算机视觉库,可以处理图像和视频数据。在OpenCV中实现目标跟踪可以使用光流法和卡尔曼滤波器等算法,但最常用的算法是基于背景减法的方法。 背景减法的基本思想是先对视频帧中的背景进行建模,然后将当前帧和背景模型进行比较,从而得出前景物体的位置信息。下面是一个简单的基于背景减法的目标跟踪示例: ```python import cv2 # 读取视频 cap = cv2.VideoCapture('test.mp4') # 定义背景减法器 backSub = cv2.createBackgroundSubtractorMOG2() while True: # 读取视频帧 ret, frame = cap.read() # 背景减法 fgMask = backSub.apply(frame) # 消除噪声 kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5)) fgMask = cv2.morphologyEx(fgMask, cv2.MORPH_OPEN, kernel) # 寻找轮廓 contours, hierarchy = cv2.findContours(fgMask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 绘制矩形框 for c in contours: x, y, w, h = cv2.boundingRect(c) if w > 50 and h > 50: cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) # 显示结果 cv2.imshow('frame', frame) cv2.imshow('mask', fgMask) # 按下q键退出 if cv2.waitKey(1) == ord('q'): break # 释放资源 cap.release() cv2.destroyAllWindows() ``` 上述代码中,使用`cv2.createBackgroundSubtractorMOG2()`函数创建了一个背景减法器,然后在每个视频帧中调用该背景减法器的`apply()`方法,得到前景掩码。接着,通过腐蚀和膨胀等形态学操作消除噪声,并使用`cv2.findContours()`函数寻找前景物体的轮廓。最后,通过`cv2.rectangle()`函数绘制矩形框来标注前景物体的位置。 这只是一个简单的示例,实际应用中可能需要采用更复杂的方法来提高目标跟踪的准确性和鲁棒性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值