任务描述:
下图为HALCON自带的“brake_disk_part_01.png”的图片,试着给它加上不同种类的噪声,然后找出其中面积最大的圆,并将圆的面积标注在其圆心位置。
案例剖析:
1. 该图片为一灰度图,对其进行二值化,二值化后如图2-11所示。
2. 由图2-11可知,除了六个圆形之外,还有一些微小的噪声点,采用了开运算和特征选择的方法去除噪声。
3. 调用HALCON自带的函数,求得圆的面积和圆心点坐标,然后,用本章所学习的选择算子和循环算子找出面积最大的圆。
4. 在面积最大圆的圆心坐标位置写上该圆的面积。
实现代码:
read_image (Image,’ brake_disk_part_01.png') //打开图像
threshold (Image, Regions, 206, 255) //对图像进行二值化
connection (Regions, ConnectedRegions) //对像素点进行聚类,形成区域
opening_circle (ConnectedRegions, RegionOpening,3.5) //开运算,去除噪声点
select_shape (RegionOpening, SelectedRegions, 'area', 'and', 1344.09, 500000)//应用特征选择算子去点噪声点
area_center (SelectedRegions, Area, Row, Column) //计算各个圆的面积和中心点坐标
//找出面积最大的圆
m:=Area[0]
n:=0
for i:= 1 to |Area|-1 by 1if(Area[i] > m)m:=Area[i]n:=iendif
endfor
// 在圆心的位置标注该圆的面积
set_tposition(3600,Row[n],Column[n])
write_string (3600, Area[n])