Halcom 发表于 2017-2-18 22:07:43

光流法应用于门禁系统——检测行人

具体代码如下:
* 初始化窗口
dev_update_off ()
read_image (Image1, 'bicycle/bicycle_01')
* 缩放图像--缩小一倍
ZoomFactor := 0.5
zoom_image_factor (Image1, Image1, ZoomFactor, ZoomFactor, 'constant')
dev_close_window ()
dev_open_window_fit_image (Image1, 0, 0, -1, -1, WindowHandle)
* 显示区域的轮廓
dev_set_draw ('margin')
*
* 产生监控区域,门禁外所在区域
gen_contour_polygon_xld (ROI, * ZoomFactor, * ZoomFactor)
gen_region_contour_xld (ROI, RegionROI, 'filled')
reduce_domain (Image1, RegionROI, Image1ROI)
* 主循环
for I := 2 to 9 by 1
    read_image (Image2, 'bicycle/bicycle_0' + I)
    * 缩放图像--缩小一倍
    zoom_image_factor (Image2, Image2, ZoomFactor, ZoomFactor, 'constant')
    reduce_domain (Image2, RegionROI, Image2ROI)
    * 光流矢量场模型
    optical_flow_mg (Image1ROI, Image2ROI, VectorField, 'fdrig', 0.8, 1, 10, 5, ['default_parameters','warp_zoom_factor'], ['fast',0.8])
    vector_field_length (VectorField, LengthImage, 'squared_length')
    *
    * 在监控的区域分割目标
    min_max_gray (RegionROI, LengthImage, 0.1, Min, Max, Range)
    dev_display (Image2)
    if (Max > 2)
      threshold (LengthImage, RegionMovement, 2, Max)
      connection (RegionMovement, ConnectedRegions)
      * 选择最大的目标区域
      select_shape_std (ConnectedRegions, RegionMovement, 'max_area', 70)
      area_center (RegionMovement, Area, RCenterNew, CCenterNew)
      if (Area > 0)
            * 转化为凸多边形
            shape_trans (RegionMovement, ConvexHullregion, 'convex')
            intersection (RegionROI, ConvexHullregion, RegionMovementInROI)
            reduce_domain (VectorField, ConvexHullregion, VectorReduced)
            vector_field_to_real (VectorReduced, Row, Column)
            *
            * 估计目标运动的方向和速度
            intensity (RegionMovementInROI, Row, MeanRow, Deviation)
            intensity (RegionMovementInROI, Column, MeanColumn, Deviation1)
            *
            * 显示结果
            dev_set_line_width (1)
            dev_set_color ('yellow')
            dev_display (VectorReduced)
            * Display region of interest
            dev_set_line_width (3)
            dev_set_color ('magenta')
            dev_display (RegionROI)
            * 显示运动的目标
            dev_set_color ('green')
            dev_display (RegionMovementInROI)
            gen_arrow_contour_xld (Arrow, RCenterNew, CCenterNew, RCenterNew + MeanRow, CCenterNew + MeanColumn, 10, 10)
            dev_display (Arrow)
      endif
    endif
    *
    copy_obj (Image2ROI, Image1ROI, 1, 1)
endfor参考:【1】基于光流法的运动目标检测



页: [1]
查看完整版本: 光流法应用于门禁系统——检测行人