图像处理笔记(二十一):halcon在图像处理中的运用

概要:

  1. 分水岭算法做图像分割
  2. 二维码识别

稍后将其他几篇笔记全都补充上概要方便查询。

分水岭算法做图像分割

使用距离变换结合分水岭算法实现图像分割,可以用来分割仅通过阈值分割还是有边缘连接在一起的情况。
步骤:

  1. 通过threshold 及相关操作找出需要分割的图像区域;

  2. 通过distance_transform 得出距离图片,这里的距离图片算的距离是针对上面已经圈出来的区域计算的;

  3. 将灰度值范围通过scale_image_max 扩充后灰度反转;

  4. 通过watersheds_threshold 做区域分割,这里的分割是针对整张图片做分割的;

  5. 与目标图像区域做交集,得出分割后的目标图像。

  6. distance_transform(Region, DistanceImage, Metric, Foreground, Width, Height)
    计算区域内每一个点到区域边界的距离得出一张距离图片,距离边界越远的灰度值越大,中心灰度值最大,边界为0,如图:

  7. watersheds_threshold(Image, Basins, Threshold)
    分水岭算法做区域分割
    分水岭算法:灰度值代表海拔高度,高灰度代表山脉,低灰度代表盆地,每一个局部极小值及影响区域代表集水盆,集水盆边界形成分水岭。

图中分成的一个个小块就是在做分水岭分割之后得到的,一个个的小圆就是在与原区域做交集之后得到的。

根据之前学到的,对于这样的图片区域分割,有时候根据情况也能使用膨胀腐蚀之类的方法分割出来。

# 二维码识别
做一个小功能,halcon和C#混和编程,实时做二维码识别。最简单的做法是在halcon中做了之后导出成cs文件,将文件中的有效部分提取出来放在代码中。过程略。
halcon中实现的要点:
1. 摄像头实时抓拍
2. 使用 `create_data_code_2d_model` 生成二维条形码模型,这里需要注意的是必须提前知道我们需要解码的二维码的编码模式;
3. 使用 `find_data_code_2d` 来找二维码并解析。

~~~~~~~~~~~~~~~~~~~~~~~  分割线 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
halcon基础知识学些到这边告一段落了。
接下去需要解决的问题:怎样把学到的东西运用到图像处理中去解决缺陷检测的问题。
posted @ 2019-07-17 18:14  yutou2016  阅读(1849)  评论(0编辑  收藏  举报