Halcon之图像分割算子binary_threshold的简单应用
以一个图像分割例子来简单介绍算子binary_threshold的应用:
将下图中的九个黑点从图像中分割出并按顺序提取九个点的面积和中心坐标
图像处理过程:
//读取图像
read_image (Image, 'C:/Users/SUNSONG/Desktop/Image_1.bmp')
//二值化阈值分割
binary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold)
//计算连通区域数量
connection (Region, ConnectedRegions)
//根据特征选择区域(这里根据面积进行选择)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 6031.75, 32110.1)
//填充区域
fill_up (SelectedRegions, RegionFillUp)
//腐蚀区域边界
erosion_circle (RegionFillUp, RegionErosion, 1.5)
//对区域进行排序
sort_region (RegionErosion, SortedRegions, 'character', 'true', 'row')
//计算每个区域的面积 中心坐标
area_center (SortedRegions, Area, Row, Column)
图像处理结果:
相关算子的使用介绍:
(1)binary_threshold
binary_threshold(Image : Region : Method, LightDark : UsedThreshold)
Image :要分割的图像
Region :分割后的区域
Method:分割方法,提供了两种方法:'max_separability'和'smooth_histo'。这两种方法只能用于具有双峰直方图的图像
LightDark :提取暗背景还是亮背景
UsedThreshold:使用阈值
(2)select_shape
打开特征直方图,进行特征选择,然后调整直方图的范围确定最小化和最大化的值,点击插入代码生成算子select_shape
(3)sort_region
sort_region(Regions : SortedRegions : SortMode, Order, RowOrCol : )
Regions :要进行排序的区域
SortedRegions :排序后的区域
SortMode:排序的种类
Order:递增还是递减排序
RowOrCol :先按行还是列排序
(4)erosion_circle
利用圆形元素对区域进行腐蚀