找到右下角的圆心,并且使用十字叉进行标注
我们一般会将图像分为三通道图像,选择对比最强烈的作为图像处理的图片。
算子简单来说就是调用函数库的方法。
*图像三通道处理
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)