文章目录
- 文章专栏
- 视频链接
- Hello World
- 训练图片
- 训练目的
- 开始训练
- 图像预处理
- 导入图像
- 三通道处理
- 调用算子
- 通道选取
- 滤波
- 什么是好的滤波
- 增加对比度
- 区域选取
- 阈值处理
- 算子参数选择
- 运行结果(红色为选择区域)
- 区域分割
- 运行结果
- 特征筛选
- 参数代码
- 第二次,面积筛选
- 画选中十字线
- 运行结果
文章专栏
Halcon开发
视频链接
机器视觉之C#联合Halcon 第一个Halcon小程序
Hello World
训练图片
训练目的
找到右下角的圆心,并且使用十字叉进行标注
开始训练
图像预处理
导入图像
三通道处理
我们一般会将图像分为三通道图像,选择对比最强烈的作为图像处理的图片。
调用算子
算子简单来说就是调用函数库的方法。
*图像三通道处理
decompose3 (KO5NHB29v5Qbj95u, Image_r, Image_g, Image_b)
通道选取
通道选取的逻辑是选择对比度最高的通道。我们这里选择三通道。如何选取我感觉比较玄学
滤波
滤波就是用来过度杂项信息的。滤波别人都给我们写好了,我们的目标是右下角的圆形图案,所以是圆形滤波。
*进行圆形滤波
median_image (Image_b, ImageMedian, 'circle', 5, 'mirrored')
什么是好的滤波
将不需要的细节去掉,需要的细节保留的滤波就是我们需要的滤波
图2就比图1好,因为图2没有线条,而且对比度强。黑色是板子,白色是圆点。
增加对比度
*增强对比度,为什么是1.8?都是试出来的,都是玄学
scale_image (ImageMedian, ImageScaled, 1.8, 0)
区域选取
阈值处理
*阈值分割
binary_threshold (ImageScaled, Region, 'max_separability', 'dark', UsedThreshold)
算子参数选择
运行结果(红色为选择区域)
记得每一步都要保存,我就是没保存然后突然闪退了
区域分割
由于红色的区域还是太多了,这里还要继续分割
*区域分割
connection (Region, ConnectedRegions)
运行结果
选择封闭连通平面,有点想世界地图的四色猜想一样,将红色部分进行分割
特征筛选
我们已经很解决目标了,只要将彩色部分进行筛选即可
参数代码
*特征筛选
select_shape (ConnectedRegions, SelectedRegions, 'circularity', 'and', 0.95841, 1)
不清楚需要点击左上角Clean是特性还是Bug
第二次,面积筛选
过程不再描述
*面积筛选
select_shape (SelectedRegions, SelectedRegions1, 'area', 'and', 159.52, 172.83)
画选中十字线
剩下代码没有难点,不再解析
*-----画选取十字线-----
*中心坐标
area_center (SelectedRegions1, Area, Row, Column)
*新窗口打开
dev_open_window_fit_image (ImageScaled, 0, 0, -1, -1, WindowHandle)
*重新添加原始图片
dev_display (CirclImg)
*添加十字坐标
disp_cross (WindowHandle, Row, Column, 20, 0)
运行结果
*---------------图像预处理---------
*导入图片
read_image (CirclImg, 'D:/train/Halcon训练图片/K(@O5{N($H$B29V5`QBJ95U.png')
*图像三通道处理
decompose3 (CirclImg, Image_r, Image_g, Image_b)
*进行圆形滤波
median_image (Image_b, ImageMedian, 'circle', 5, 'mirrored')
*图像锐化
scale_image (ImageMedian, ImageScaled, 1.8, 0)
*-------图像选取--------
*阈值处理
binary_threshold (ImageScaled, Region, 'smooth_histo', 'light', UsedThreshold)
*区域分割
connection (Region, ConnectedRegions)
*---特征筛选----
*圆度筛选
select_shape (ConnectedRegions, SelectedRegions, 'circularity', 'and', 0.95841, 1)
*面积筛选
select_shape (SelectedRegions, SelectedRegions1, 'area', 'and', 159.52, 172.83)
*-----画选取十字线-----
*中心坐标
area_center (SelectedRegions1, Area, Row, Column)
*新窗口打开
dev_open_window_fit_image (ImageScaled, 0, 0, -1, -1, WindowHandle)
*重新添加原始图片
dev_display (CirclImg)
*添加十字坐标
disp_cross (WindowHandle, Row, Column, 20, 0)