halocn例程学习--边缘提取--autobahn快速检测车道标记

halcon的源码分析

 

主要是halocn的边缘检测,检测车道标记。

流程如下:

        1:创建一个由行列线条组成的区域,然后将区域裁剪成我们要检测的区域,设置线宽为3,颜色为绿色。

2:加载图片,将区域和图片相交,得到线条上有灰度变化的行列线条M1。

3:边缘检测M1,然后提取灰度在20-255的小线条。

4:将小线条用30*30的矩形扩充,膨胀,得到大的区域M2。

5:在原图上提取和M2重合的区域M3。

6:然后在M3上提取灰度在190-255的区域M4。将M4区域的空洞填满。M4就是检测到的车道(白线)。

7:然后显示原图和M4区域。

8:在每一帧图片里处理,就成视频了。

 

* autobahn.hdev: Fast detection of lane markers   快速检测车道标记

*

*更新图像窗口

dev_update_window ('off')

*关闭窗口

dev_close_window ()

*打开窗口

dev_open_window (0, 0, 768, 575, 'black', WindowID)

MinSize := 30

get_system ('init_new_image', Information)

set_system ('init_new_image', 'false')

*从线条或像素创建区域    大的行列线条

gen_grid_region (Grid, MinSize, MinSize, 'lines', 512, 512)

*将区域剪切为矩形    小的行列线条

clip_region (Grid, StreetGrid, 130, 10, 450, 502)

*定义线宽

dev_set_line_width (3)

*定义颜色

dev_set_color ('green')

*加载图片

read_image (ActualImage, 'autobahn/scene_00')

*显示图片

dev_display (ActualImage)

stop ()

*显示小的行列线条

dev_display (StreetGrid)

stop ()

for i := 0 to 28 by 1

    *加载图片

    read_image (ActualImage, 'autobahn/scene_' + (i$'02'))

    *将图片和线宽为3的小的行列线条相交,得到Mask  也是行列线条

    reduce_domain (ActualImage, StreetGrid, Mask)

    *边缘检测 Mask,得到Gradient

    sobel_amp (Mask, Gradient, 'sum_abs', 3)

    *提取Gradient中灰度在20-255的线条,得到Points

    threshold (Gradient, Points, 20, 255)

    *将区域Points扩充,按照矩形(30*30)扩充得到区域 RegionDilation

    dilation_rectangle1 (Points, RegionDilation, MinSize, MinSize)

    *将原来加载的图片按照扩充后的区域RegionDilation扣出来相重合的区域,得到StripGray

    reduce_domain (ActualImage, RegionDilation, StripGray)

    *在扣出来的区域StripGray中得到灰度在199-255之间的区域 Strip 

    threshold (StripGray, Strip, 190, 255)

    *将区域Strip中的空洞填满,得到更好的区域,这就是检测出来的马路上的白线。

    fill_up (Strip, RegionFillUp)

    *显示原图

    dev_display (ActualImage)

    *显示检测到的白线区域

    dev_display (RegionFillUp)

endfor

dev_set_line_width (1)

dev_update_window ('on')

set_system ('init_new_image', Information)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值