halcon,德国一款处理图像软件的平台,应用于各大工业行业,目前接触的主要是用于通过采集的图像信息检测产品瑕疵,完成精密测量,将hdev文件以C#、C++、VB形式放在软件IDE中,生成动态链接库,可制作精密测量仪器的软件部分
halcon只有两种变量,图形变量和控制变量。在处理图像前,需要了解两个专业名词,像素和灰度值;在我的理解中,像素的大小代表区域的面积,灰度值表示区域的颜色,一共是0-255种,越接近白色,灰度值越接近255,越接近黑色,灰度值越接近0;大部分的算子参数都是这两个;彩色图片都是三通道,需要将其转化为单通道图像后处理(rgb3_to_gray,decompose)
halcon 算子的参数顺序一般为:处理前的图像,处理后的图像,参数1,参数2……
halcon处理图像的基本步骤如下
读取图像(read_image)、阈值分割(threshold)、连通域(connection)、提取区域(select_shape),这些都是简单的算子,对于比较复杂的图像处理,需要在其中加入开运算,闭运算,腐蚀,膨胀等算子
假设求取上图黑点数量,需要将其分割成两部分,一部分是处理后单独的点图像,一个是多于2个黑点连起来的图像
*三色图转为灰度图
read_image (Image001Jpg, 'C:/Users/XXXXX/Pictures/001.jpg.bmp')
rgb1_to_gray (Image001Jpg, GrayImage)
*获取图片长宽
get_image_size (GrayImage, Width, Height)
*平滑化处理图片
mean_image(GrayImage, ImageMean, Width/120, Height/120)
sub_image (GrayImage, ImageMean, ImageSub, 30, 0)
threshold (ImageSub, Regions, 0, 0)
*填补图形中的小杂点
fill_up_shape (Regions, RegionFillUp, 'area', 1, 50)
*腐蚀
erosion_circle (RegionFillUp, RegionErosion, 5)
*划分域
connection (RegionErosion, ConnectedRegions)
*去除杂点
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 150, 99999)
*腐蚀
erosion_circle (SelectedRegions, RegionErosion1, 0.5)
*将难以划分开的部分和易于划分的部分分开处理,分别对其腐蚀划分开后进行计数
select_shape (RegionErosion1, SelectedRegions1, 'area', 'and', 800, 99999)
*对难以划分开的部分进行腐蚀
erosion_circle (SelectedRegions1, RegionErosion2, 5.5)
connection (RegionErosion2, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions2, 'area', 'and', 16, 99999)
count_obj (SelectedRegions2, Number)
select_shape (RegionErosion1, SelectedRegions3, 'area', 'and', 200, 800)
select_shape (SelectedRegions3, SelectedRegions4, 'outer_radius', 'and', 20, 9999)
select_shape (SelectedRegions4, SelectedRegions5, 'inner_radius', 'and', 0, 6.9)
count_obj (SelectedRegions5, Number1)
tuple_sum (Number+Number1, Sum)
图像变量如下所示