区域的算子,初学者最好是每个都试试,这不仅是个加强映像问题,而且是了解Halcon能力的过程,以及提高工程实践效率问题。本篇介绍几个在数值图像分析中,较为有用的区域算子。请学友们共享!
本篇专门针对区域的属性这个特征进行实验验证。与前几篇是一个系列,包括:
halcon之区域:get_region_chain和get_region_contour_
area_center( regin, ares,Row1, Column1)
- set_color(3600,'red')
- read_image (Image, 'f:/images/DOTS/block.jpg')
- rgb1_to_gray(Image,gray)
-
- get_image_size(gray,width,height)
-
- fast_threshold (gray,regin,0, 50 , 7)
- area_center(regin,ares,Row1, Column1)
circularity(regin, Circularity)
圆度范围:0-1
- set_color(3600,'red')
- read_image (Image, 'f:/images/DOTS/many_block.jpg')
- rgb1_to_gray(Image,gray)
-
- get_image_size(gray,width,height)
- fast_threshold (gray,regin,0, 50 , 7)
-
- connection(regin, ConnectedRegions)
- circularity(ConnectedRegions, Circularity)
圆度分别为:0.395611、0.64085、0.949253、0.529871;从视觉角度似乎一致。
紧密度:3.43204、1.25161、1.10005、2.074
紧密度和圆度类似,而且,圆的紧密度最高。
功能:连接部分和中断的数目。
connect_and_holes(regin, NumConnected, NumHoles)
- set_color(3600,'red')
- read_image (Image, 'f:/images/DOTS/block.jpg')
- rgb1_to_gray(Image,gray)
-
- get_image_size(gray,width,height)
- fast_threshold (gray,regin,0, 50 , 7)
- connect_and_holes(regin, NumConnected, NumHoles)
连接为2,孔洞为2的图如下。
功能:描述一个区域轮廓(contour)的长度。
contlength(regin, ContLength)
这里注意,大家去验证,gen_contour_region_xld和contlength(regin, ContLength)两种求外轮廓长度不一致:
- gen_contour_region_xld (regin, Contours, 'border')
- contlength(regin, ContLength)
convexity 功能:影响一个区域凸性的形状系数。
结果:0.539397、0.991524、0.994038、0.72976,可以看到,圆和方凸性差不多。
功能:一个区域两个边界点的最大距离。
diameter_region(ConnectedRegions,row1,col1,row2,col2,dim)
- set_color(3600,'red')
- read_image (Image, 'f:/images/DOTS/many_block.jpg')
- rgb1_to_gray(Image,gray)
-
- get_image_size(gray,width,height)
- fast_threshold (gray,regin,0, 50 , 7)
- connection(regin, ConnectedRegions)
- diameter_region(ConnectedRegions,row1,col1,row2,col2,dim)
最大直径:161.608、155.013、151.743、132.91
功能:来源于椭圆参数的形状系数。
eccentricity(Regions : : : Anisometry, Bulkiness, StructureFactor)
显然 Anisometry是长短轴比例;以上A是实际测量的椭圆内像素面积。Bulkiness实际面积和理论面积比例。StructureFactor结构系数,
功能:相似椭圆的参数。
功能:计算Euler数目。算子 euler_number 计算欧拉数,即连接组件数与孔数之差。
比如:下图的空洞(背景算空洞),是绿色字编号;前景的连接体是四个黑区;因此欧拉数为:
Number(黑连接4个)- 空洞(白的5个)=-1