当前位置: 首页 > 网络应用技术

OPENCV学习笔记(11)方法基于凸轮班算法

时间:2023-03-05 18:20:20 网络应用技术

  CamShift是一种算法,该算法基于使用刻痕算法的视频序列的结果,并使用上一个帧的结果(搜索窗口的中心位置和窗口大小)作为求换窗口的初始值的算法在这种方式上,我们可以跟踪视频中的移动对象。

  首先,我们假设平面空间具有这样一个随机分布点,如下所示:我们将特定点作为一个圆,适当的半径r作为圆:

  然后,所有落入圆的点都连接到圆心连接以形成向量:

  这样,不难看到矢量的数量形成了更密集的分布区域,因此我们将最密集的方向作为心脏转移的方向。

  逐渐地,我们的圆圈最终将留在该空间中最密集的区域。

  我们不会详细得出数学公式。

  并在图像处理中应用此算法。通常,图像是矩阵。像素均匀分布在图像上,并且没有密度。如果我们单击x的概率密度,该方法的使用如下:x作为圆的中心和r作为半径。点XI落入球定义了两个模式规则。

  (1)X像素点的颜色与XI像素的颜色点相似,我们定义的概率密度越高。(2)越接近XI的位置,定义的概率密度越高。

  因此,总概率密度的定义是两个规则和概率密度乘以产品的结果:

  其中:正确类型的第二个因素表示空间位置的信息。越接近远处,值越大,第三表示颜色信息,颜色越相似,值越大。如图的左上角所示,根据(4)计算得出的概率密度显示在图的右上

  因此,我们可以通过计算图像图像的直方图根据上述算法跟踪目标。

  Void Calchist(&ROI,1,0,MaskRoi,Hist,1&Hist和Phranges)

  &ROI:输入图像

  1:在第一个参数中存储了多少张图像

  0:需要统计的频道索引

  MASKROI:输入图像的掩码,可选操作掩码,此处的非零掩码元素用于标记统计直接图的数组元素数据

  历史:输出的目标

  1:需要计算的直方图的尺寸

  &Hist:每个维度的直方图数组

  &phranges:每个维度的范围。

  void calcbackproject(&hue,1,0,hist,backproj和phranges)

  色相:输入图像

  1:输入图像数量

  0:需要统计的频道索引

  历史:输入的直方图

  backproj:目标反向投影数组必须是一个单个通道

  phranges:每个维数的边界

  void camshift(backproj,trackwindow,tercriteria(cv_termcrit_eps | cv_termcrit_iter,10,1))))))))))))))))))))))))))))))))

  Backproj:输入图像图像直方图的反向投影图

  TrackWindow:初始位置矩形跟踪目标盒

  Tercriteria(cv_termcrit_eps | cv_termcrit_iter,10,1):算法结束条件

  1.获取跟踪目标的HSV图像并将H零件分开;

  2.根据阈值构建口罩;

  3.计算直方图,然后返回;

  4.右 - 图形反向投影calcbackProject();

  5.凸轮班算法轨道

  6.在原始视频中绘制矩形锁定跟踪目标。

  首先,我们选择确定跟踪的轨道:

  按空格键并开始识别跟踪。

  原始:https://juejin.cn/post/7095936555520360484