29.1、形态学----综合实例
目的:根据形态学相关操作,算出图中边界粘连一起小石头的个数以及每个小石头的面积。
Halcon代码:
read_image (Dd, 'C:/dd.JPG')
*设置ROI
draw_region (Region, 3600)
reduce_domain (Dd, Region, ImageReduced)
*转化灰度图
rgb1_to_gray (ImageReduced, GrayImage)
*阈值分割
threshold (GrayImage, Regions, 3, 76)
*连通性分析
connection (Regions, ConnectedRegions)
*填补空洞
fill_up (ConnectedRegions, RegionFillUp)
*腐蚀使细小链接的region分开
erosion_circle (RegionFillUp, RegionErosion, 35)
*再进行连通性分析
connection (RegionErosion, ConnectedRegions1)
*用同样的结构元素进行膨胀,使其拓扑结构不发生改变
dilation_circle (ConnectedRegions1, RegionDilation, 35)
*筛选并计算面积
select_shape (RegionDilation, SelectedRegions, 'area', 'and', 19278.9, 65000)
*显示字体
sort_region (SelectedRegions, FinalBalls, 'first_point', 'true', 'column')
area_center (FinalBalls, Area, Row, Column)
dev_display (Dd)
dev_display (FinalBalls)
Num:=|Area|
disp_message (3600,'石头个数:'+Num, 'image', 450,1000, 'white', 'false')
for i := 1 to Num by 1
disp_message (3600, Area[i-1], 'image', Row[i-1]-50,max([Column[i-1]-60,0]), 'white', 'false')
endfor
结果: