除了可以用area_center 算子计算区域的面积以外,在Halcon中还可以使用area_holes算子计算图像中封闭区域(孔洞)的面积。该面积指的是区域中孔洞部分包含的像素数。一个区域中可能不只包含一个孔洞区域,因此该算子将返回所有孔洞区域的面积之和。
图(a)为输入的彩色图像,图(b)为经阀值分割并输出了孔洞面积的图像,其中深色
部分为提取的孔洞区域,浅色部分为包含孔洞的区域,也是area_holes算子的输入。
上述过程的代码如下:
*清空显示窗口
dev_close_window ()
*读取包含孔洞的图片
read_image (Image, 'data/holes2')
*打开新的显示窗口
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
*将彩色图像转化为灰度图像,这是为了后面的图像二值化
rgbl_to_gray (Image, GrayImage)
*进行阈值处理,提取出图中较亮的有封闭区域(除孔洞以外)的背景区域
threshold (GrayImage, Region, 50,255)
*将背景区域作为area_holes算子的输入,计算所有孔洞的面积
area_holes (Region, Area)
*将面积计算结果以字符串形式显示在窗口中
disp_message (WindowHandle, 'Size of holes: ' + Area + ' pixel','window', 10, 10, 'black', 'true')
该代码实现了将输入区域中的孔洞部分提取出来,并计算孔洞的面积之和。