在图像处理当中对图像进行预处理,获得感兴趣的区域,可以提高图像处理的速度; 当我们想要提取Region时,图像简单处理后,往往存在几个类似的Region,此时,需要根据Region的一些特殊特征,来选择指定的Region。 在halcon 中 求Region指定特征值:region_features(Regions : : Features : Value) 然后就可以根据获取的特征值选择区域:select_shape(Regions: SelectedRegions : Features, Operation, Min, Max : ) 图像区域特征众多,对每个特征的理解,是使用前面两个函数的前提。下面表格罗列出的区域特征说明 Region特征一览: 特征 | | | | | | | | | | | | | Column index of the center | | | | | 区域的宽度,参考inner_rectangle1,得到的参数 | | | | 区域的高度,参考inner_rectangle1,得到的参数 | | | Row index of upper left corner | 左上角行坐标,参考inner_rectangle1,得到的参数 | | | Column index of upper left corner | 左上角列坐标,参考inner_rectangle1,得到的参数 | | | Row index of lower right corner | 右下角行坐标,参考inner_rectangle1,得到的参数 | | | Column index of lower right corner | 右下角列坐标,参考inner_rectangle1,得到的参数 | | | | | | | | | | | | | | | | 凸度,最外全部像素点围成的面积与原始面积的比值,可百度查阅凸度概念,可通过convexity得到 | | | | | | | Main radius of the equivalent ellipse | 等效椭圆长轴半径长度,通过elliptic_axis得到 | | | Secondary radius of the equivalent ellipse | 等效椭圆短轴半径长度,通过elliptic_axis得到 | | | Orientation of the equivalent ellipse | | | | | | | | | 椭圆蓬松度π*Ra*Rb/A,A为面积可用area_center获得 | | | | 椭圆结构系数,Anisometry*Bulkiness-1 | | | Radius of smallest surrounding circle | 最小外接圆半径,可用smallest_circle获取圆中心与半径,绘制圆查看效果 | | | Radius of largest inner circle | 最大内接圆半径,可用inner_circle,获取参数,绘制圆查看效果 | | | Width of the largest axis-parallel rectangle that fits into the region | 最大轴平行内接矩形宽度,可用inner_rectangle1获取参数,绘制矩形查看效果 | | | Height of the largest axis-parallel rectangle that fits into the region | 最大轴平行内接矩形高度,可用inner_rectangle1获取参数,绘制矩形查看效果 | | | Mean distance from the region border to the center | | | | Deviation of the distance from the region border from the center | | | | | 圆度,与circularity计算方法不同,roundness获得 | | | | | | | Number of connection components | | | | | 区域内洞数,connect_and_holes获得 | | | Area of the holes of the object | | | | Maximum diameter of the region | | | | Orientation of the region | 区域方向,orientation_region获得 | | | | 欧拉数,即连通数和洞数的差,euler_number获得 | | | Orientation of the smallest surrounding rectangle | 最小外接矩形的方向,smallest_rectangle2获得 | | | Half the length of the smallest surrounding rectangle | 最小外接矩形高一半,smallest_rectangle2获得 |
| | Half the width of the smallest surrounding rectangle | 最小外接矩形宽一半,smallest_rectangle2获得 | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | | | Geometric moments of the region | | |
表格中出现很多类型的几何矩。 矩是描述图像特征的算子,如今矩技术已广泛应用于图像检索和识别 、图像匹配 、图像重建、数字压缩 、数字水印及运动图像序列分析等领域。 常见的矩描述子可以分为以下几种:几何矩、正交矩、复数矩和旋转矩 。 其中几何矩提出的时间最早且形式简单,对它的研究最为充分。 几何矩对简单图像有一定的描述能力,他虽然在区分度上不如其他三种矩,但与其他几种算子比较起来,他极其的简单,一般只需用一个数字就可表达。 所以,一般我们是用来做大粒度的区分,用来过滤显然不相关的文档 图像的几何矩这里先不进行讲解,仅介绍常用的区域特征;
可以halcon中使用下面代码测试查看表格中37个区域特征的效果(fabrik为其自带图片) - dev_close_window()
- read_image(Image,'fabrik')
- dev_open_window(0, 0, 512, 512, 'black', hWnd)
- threshold (Image, Regions, 160, 255)
- connection(Regions,con)
- *0.区域属性都可打开特征检测工具查看
- select_shape(con,sel,'area', 'and', 7000, 100000)
- *fill_up(sel,sel)
- *1.面积计算
- *area_center(sel,area,row,col)
- dev_set_draw('margin')
- dev_display(Image)
- dev_display(sel)
- dev_set_color('blue')
- *2.圆度计算
- *circularity(sel,Circularity)
- *3.紧密度计算
- *compactness(sel,Compactness)
- *4.轮廓线总长计算
- *contlength(sel,ContLength)
- *5.矩形度计算
- *rectangularity(sel,Rectangularity)
- *6.等效椭圆方向/长轴/短轴/半径长度计算
- *elliptic_axis(sel, Ra, Rb, Phi)
- *area_center(sel,area,row,col)
- *gen_ellipse(ellip,row,col,Phi,Ra,Rb)
- *7.椭圆离心率/蓬松度/结构系数计算
- *eccentricity(sel,anisometry,bulkiness,struc)
- *8.最小外接圆半径
- *smallest_circle(sel,row,column,radius)
- *gen_circle(circle,row,column,radius)
- *9.最大内接圆半径
- *inner_circle(sel,row,column,radius)
- *gen_circle(circle,row,column,radius)
- *10.最大轴平行内接矩形宽度/高度col1-col,row1-row
- inner_rectangle1(sel,row,col,row1,col1)
- gen_rectangle1(rec,row,col,row1,col1)
- *11.区域边界到中心的平均距离/中心距离偏差/圆度/多边形边数
- *roundness(sel,Distance, Sigma, Roundness, Sides)
- *12.区域的连通数/洞数
- *connect_and_holes(sel,NumConnected, NumHoles)
- *13.区域内所有洞的面积之和
- *area_holes(sel,Area)
- *14.区域最大半径
- *diameter_region(sel,row1,col1,row2,col2,dia)
- *disp_line(hWnd, row1, col1, row2, col2)
- *15.区域角度
- *orientation_region(sel,phi)
- *row:=300+100*sin(phi)
- *column:=300+100*cos(phi)
- *disp_arrow(hWnd, 300, 300, row, column,1)
- *16.欧拉数,即连通数和洞数之差
- *euler_number(sel,num)
- *17.最小外接矩形的方向/一半高/一半宽
- *smallest_rectangle2(sel,row,col,phi,hei,wid)
- *gen_rectangle2(rec,row,col,phi,hei,wid)
- *gen_rectangle1(sel,row,col,row+hei,col+wid)
复制代码对这些区域特征含义及效果了解后,就可以很方便的进行区域选择操作,如选择下图竖线
上位机通过halcon中图像区域特征选择指定区域
- dev_close_window()
- read_image(Image,'1.jpg')
- dev_open_window(0, 0, 512, 512, 'black', hWnd)
- rgb1_to_gray(Image,rgb)
- dev_display(rgb)
- threshold (rgb, Regions, 160, 255)
- connection(Regions,con)
- select_shape(con,sel,'rect2_len1','and',25,80)
- select_shape(sel,sel,'column','and',340,380)
- fill_up(sel,fil)
- count_obj(fil,Number)
- smallest_rectangle2(fil,Row, Column, Phi, Length1, Length2)
- gen_rectangle2(rec,Row, Column, Phi, Length1, Length2)
- dev_display(rgb)
- dev_display(rec)
复制代码图片保存为1.jpg,与工程文件同级目录,得出效果图
上位机通过halcon中图像区域特征选择指定区域
select_shape函数的例程可在halcon按F1,打开编程手册,搜索获得
|