关于halcon:Halcon例程光流法分割运动中的汽车opticalflowhdev

25次阅读

共计 1209 个字符,预计需要花费 4 分钟才能阅读完成。


前言

静止物体的罕用办法就是帧差法和光流法,之前以介绍了视频的两帧差法去跟踪视频中的静止物体,明天借助 Halcon 的例程来介绍一下光流法的原理和应用办法。

1、原理介绍

光流法是利用图像序列中像素在工夫域上的变动以及相邻帧之间的相关性来找到上一帧跟以后帧之间存在的对应关系,从而计算出相邻帧之间物体的静止信息的一种办法。
一般而言,光流是因为场景中前景指标自身的挪动、相机的静止,或者两者的独特静止所产生的。钻研光流场目标就是为了从图片序列中近似失去不能间接失去的运动场。光流场,是运动场在二维图像立体上(人的眼睛或者摄像头)的投影。艰深的讲,通过一个图片序列,把每张图像中每个像素的静止速度和静止方向找进去就是光流场。
对于光流法的介绍、钻研局部参考以下博文:
光流法介绍

2、例程正文

* 序展现了如何应用 optical_flow_mg 算子计算图像序列中的光流以及如何宰割光流。dev_update_off ()
dev_close_window ()
read_image (Image1, 'xing/xing000')
dev_open_window_fit_image (Image1, 0, 0, -1, -1, WindowHandle)
* 设置光流矢量的显示方式
dev_set_paint (['vector_field',6,1,2])
dev_set_draw ('margin')
for I := 1 to 587 by 1    
    read_image (Image2, 'xing/xing' + I$'03')
    * 计算两幅图像中的光流
    optical_flow_mg (Image1, Image2, VectorField, 'fdrig', 0.8, 1, 8, 5, 'default_parameters', 'accurate')
    * 二值化宰割光流区域
    threshold (VectorField, Region, 1, 10000)
    dev_display (Image2)
    dev_set_color ('yellow')
    dev_set_line_width (1)
    dev_display (VectorField)
    dev_set_color ('green')
    dev_set_line_width (3)
    dev_display (Region)
    * 替换以后图为上一帧图
    copy_obj (Image2, Image1, 1, 1)
endfor

3、外围算子解析


主要参数:
光流法算法 Algorithm:

  • ‘fdrig’,应用 Brox、Bruhn、Papenberg 和 Weickert 提出的办法。这种办法是流动驱动的、持重的、各向同性的,并应用梯度恒常项。
  • ‘ddraw’,应用了 Nagel 和 Enkelmann 提出的办法的持重变体。这种办法是数据驱动的、持重的、各向异性的,并应用扭曲(与原始办法相同)。
  • ‘clg’,应用了 Bruhn、Weickert、Feddern、Kohlberger 和 Schnörr 提出的部分全局组合办法。

正文完
 0