概要:
- 分水岭算法做图像分割
- 二维码识别
稍后将其他几篇笔记全都补充上概要方便查询。
分水岭算法做图像分割
使用距离变换结合分水岭算法实现图像分割,可以用来分割仅通过阈值分割还是有边缘连接在一起的情况。
步骤:
-
通过
threshold
及相关操作找出需要分割的图像区域; -
通过
distance_transform
得出距离图片,这里的距离图片算的距离是针对上面已经圈出来的区域计算的; -
将灰度值范围通过
scale_image_max
扩充后灰度反转; -
通过
watersheds_threshold
做区域分割,这里的分割是针对整张图片做分割的; -
与目标图像区域做交集,得出分割后的目标图像。
-
distance_transform(Region, DistanceImage, Metric, Foreground, Width, Height)
计算区域内每一个点到区域边界的距离得出一张距离图片,距离边界越远的灰度值越大,中心灰度值最大,边界为0,如图:
-
watersheds_threshold(Image, Basins, Threshold)
分水岭算法做区域分割
分水岭算法:灰度值代表海拔高度,高灰度代表山脉,低灰度代表盆地,每一个局部极小值及影响区域代表集水盆,集水盆边界形成分水岭。
图中分成的一个个小块就是在做分水岭分割之后得到的,一个个的小圆就是在与原区域做交集之后得到的。
根据之前学到的,对于这样的图片区域分割,有时候根据情况也能使用膨胀腐蚀之类的方法分割出来。
# 二维码识别
做一个小功能,halcon和C#混和编程,实时做二维码识别。最简单的做法是在halcon中做了之后导出成cs文件,将文件中的有效部分提取出来放在代码中。过程略。
halcon中实现的要点:
1. 摄像头实时抓拍
2. 使用 `create_data_code_2d_model` 生成二维条形码模型,这里需要注意的是必须提前知道我们需要解码的二维码的编码模式;
3. 使用 `find_data_code_2d` 来找二维码并解析。
~~~~~~~~~~~~~~~~~~~~~~~ 分割线 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
halcon基础知识学些到这边告一段落了。
接下去需要解决的问题:怎样把学到的东西运用到图像处理中去解决缺陷检测的问题。