1、图像特征概述区域形状特征基于灰度值的特征基于图像纹理的特征目录图 像 特 征 概 述图像特征提取 为了使计算机能够“理解”图像,我们需要从图像中提取有用的数据或信息,因此需要确定一个或多个特征量。这些我们确定的特征量被称为特征,这一过程就是特征提取。特征是某一类对象区别于其他类对象的相应(本质)特点或特性,或这些特点和特性的集合。对于图像而言,每一幅图像都具有能够区别于其他类图像的自身特征,有些是可以直观地感受到的自然特征,如亮度、边缘、纹理和色彩等,有些则是需要通过变换或处理才能得到的,如矩阵、直方图以及主成分等。图像特征 描述图像或图像区域所对应的景物的表面性质颜色特征 描述了图像或图像区
2、域所对应景物的表面性质纹理特征 一类是轮廓特征,主要针对物体的外边界 另一类是区域特征,关系到整个形状区域形状特征图像特征的分类空间关系特征连接/邻接关系、交叠/重叠关系和包含/包容关系等。图像识别实际上是一个分类的过程,为了识别出某图像所属的类别,需要将它与其他不同类别的图像区分开来。这就要求选取的特征不仅要能够很好地描述图像,更重要的是还要能够很好地区分不同类别的图像。特征提取的一般原则(1)特征应当容易提取(2)选取的特征应对噪声和不相关转换不敏感(3)总是应试图寻找最具区分能力的特征区 域 形 状 特 征区域形状特征 在场景中选择物体的特征是图像测量或者识别的重要基础。在特征提取中,区
3、域的形状特征是非常常用的特征,包括区域面积、中心点坐标、区域的宽度和高度等特征量区域的面积和中心点到目前为止,最简单的区域特征是区域的面积。实际工作中,经常会使用面积或中心点进行特征的选择和定位。在HALCON中实现这一过程可以area_center算子:程序如下:*获取图像read_image(Image,fabrik)*关闭窗口dev_close_window()*打开窗口dev_open_window(0,0,512,512,black,WindowID)*设置输出字体,14号字,Courier字体,粗体set_display_font(WindowID,14,mono,true,fal
4、se)*设置输出颜色dev_set_colored(6)*进行区域生长操作regiongrowing(Image,Regions,1,1,3,200)*显示区域dev_display(Regions)*计算所有不相连区域的面积和中心点坐标area_center(Regions,Area,Row,Column)*获取一个字符串的空间大小get_string_extents(WindowID,12345,Ascent,Descent,TxtWidth,TxtHeight)*将面积计算结果以字符串形式显示在窗口中disp_message(WindowID,Area,image,Row-TxtHeig
5、ht/2,Column-TxtWidth/2,white,false)获取区域的面积和中线点特征实例(a)原图(b)各个区域面积显示图程序执行结果如图所示:程序执行结果如图所示:封闭区域(孔洞)的面积除了可以用area_center算子计算区域的面积以外,在Halcon中还可以使用area_holes算子计算图像中封闭区域(孔洞)的面积。一个区域中可能不只包含一个孔洞区域,因此该算子将返回所有孔洞区域的面积之和。area_holes算子为:程序如下:*关闭窗口dev_close_window()*读取图像read_image(Image,rings_and_nuts)*打开适应图像大小的窗口d
6、ev_open_window_fit_image(Image,0,0,-1,-1,WindowHandle)*设置输出颜色dev_set_color(red)*设置输出字体,14号字,Courier字体,粗体set_display_font(WindowHandle,14,mono,true,false)*显示图像dev_display(Image)*进行阈值操作threshold(Image,Region,128,255)*计算区域中孔的面积area_holes(Region,Area)*将面积计算结果以字符串形式显示在窗口中disp_message(WindowHandle,Size of
7、 enclosed area(holes):+Area+pixel,window,12,12,black,true)(a)原图(b)孔洞面积计算结果图程序执行结果如图所示:程序执行结果如图所示:计算封闭区域面积实例根据特征值选择区域关于提取图像的特征,比较常用的一个算子最sclect_shape算子,它能高效地根据特征提取出符合条件的区域。该算子的原型如下:Select_shape(Regions:SelectedRegions:Features,Operation,Min,Max:)区域的常用特征Features代表含义area输入区域的面积row输入区域中心点的行坐标column输入区域中
8、心点的列坐标width输入区域的宽度height输入区域的高度circularity输入区域的圆度compactness输入区域的紧密度convexity输入区域的凸包性rectangularity输入区域的矩形度outer_radius输入区域的最小外接圆的半径inner_radius输入区域的最大内接圆的半径Inner_width输入区域的与坐标轴平行的最大内接矩形的宽度Inner_height输入区域的与坐标轴平行的最大内接矩形的宽度Connect_num输入区域中非连通区域的数量holes_num输入区域包含的孔洞数量max_diameter输入区域的最大直径程序如下:*读取图像rea
9、d_image(Image,monkey)threshold(Image,Region,128,255)*将非连通区域分割成一组区域的集合connection(Region,ConnectedRegions)*利用面积以及椭圆长轴与短轴的比值特征,将眼睛部分区域提取出来select_shape(ConnectedRegions,SelectedRegions,area,anisometry,and,500,1,2000,1.7)*显示结果区域dev_display(SelectedRegions)(a)原图(b)Select_shape选择结果图程序执行结果如图所示程序执行结果如图所示:利用S
10、elect_shape选择区域实例根据特征值创建区域根据区域的形状特征,可以从区域集合中选择特定的区域。除此之外,Halcon中还提供了一些算子,可以根据一些区域的特征创建新的形状。这些算子都以极其简洁的代码实现了几何计算的功能。(1)计算区域内接圆可用inner_circle算子。程序如下:*读取图像read_image(Image,fabrik)*关闭窗口dev_close_window()dev_open_window(0,0,512,512,black,WindowID)*设置输出颜色为白色dev_set_color(white)*设置图像模式为填充模式dev_set_draw(fil
11、l)*使用regiongrowing算子寻找颜色相近的邻域regiongrowing(Image,Regions,1,1,3,500)*找出每个区域的最大内接圆以及内接圆的中心坐标和半径inner_circle(Regions,Row,Column,Radius)*设置输出颜色为红色dev_set_color(red)*显示每个区域的内接圆disp_circle(WindowID,Row,Column,Radius)(a)原图(b)区域的内接圆结果图程序执行结果如图所示程序执行结果如图所示:使用inner circle算子计算图像区域内接圆根据特征值创建区域(2)计算区域外接矩形返回平行坐标最
12、小外包矩形Smallest_rectangle1算子。smallest_rectangle1(Regions:Row1,Column1,Row2,Column2)返回最小外包矩形smallest_rectangle2(Regions,Row,Column,Phi,Length1,Length2)程序如下:*关闭窗口dev_close_window()*读取图像read_image(Shubiao,D:/shubiao.png)*获取图像尺寸get_image_size(Shubiao,Width,Height)*打开适应图像大小的窗口dev_open_window(0,0,Width,Heig
13、ht,black,WindowHandle)*灰度化rgb1_to_gray(Shubiao,GrayImage)*使用阈值处理提取较暗的部分threshold(GrayImage,Regions,0,253)*求平行坐标的最小外接矩形smallest_rectangle1(Regions,Row1,Column1,Row2,Column2)*填充模式为轮廓dev_set_draw(margin)*根据矩形参数绘制矩形的轮廓gen_rectangle1(Rectangle,Row1,Column1,Row2,Column2)*求区域的最小外接矩形smallest_rectangle2(Regi
14、ons,Row,Column,Phi,Length1,Length2)*根据矩形参数绘制矩形的轮廓gen_rectangle2(Rectangle1,Row,Column,Phi,Length1,Length2)求图像中的外接矩形实例(a)原图(b)阈值处理提取部分程序执行结果如图所示:程序执行结果如图所示:根据特征值创建区域(c)平行坐标的最小外接矩形 (d)区域的最小外接矩形基于灰度值的特征灰度直方图 在前面章节中,我们已经学习过直方图的概念和计算方法,当时直方图更多的是作为一种辅助图像分析的工具。在本节灰度直方图作为图像特征识别的一种有力手段。在Halcon中子用于计算指定区域的灰度特征
15、值可用gray_features算子:区域的灰度特征值典型的灰度值的特征灰度区域面积(area)中心点的行坐标和列坐标(row,colum)椭圆的长轴(ra)椭圆的短轴(rb)、等效椭圆的角度(phi)灰度的最小值(min)灰度的最大值(max)灰度的均值(mean)灰度值的偏差(deviation)近似平面的偏差(plane_deviation)程序如下:*读取图片read_image(Image,monkey)*对图像进行阈值处理,主要是将图像转化为区域threshold(Image,Region,1,255)*提取区域中最小灰度值gray_features(Region,Image,mi
16、n,MinDisp)*提取区域中最大灰度值gray_features(Region,Image,max,MaxDisp)(a)原图(b)gray_features算子提取结果图程序执行结果如图所示:gray_features算子实例程序如下:*读取图像 read_image(Image,mreut)*关闭窗口 dev_close_window()*获得图像尺寸 get_image_size(Image,Width,Height)*打开适应图像大小的窗口 dev_open_window(0,0,Width,Height,black,WindowID)*显示图像 dev_display(Image
17、)*设置填充模式为轮廓 dev_set_draw(margin)*创建两个矩形区域 gen_rectangle1(Rectangle1,350,100,450,200)gen_rectangle1(Rectangle2,100,200,200,300)*提取区域1中灰度值的平均值与偏差intensity(Rectangle1,Image,Mean1,Deviation1)*提取区域2中灰度值的平均值与偏差intensity(Rectangle2,Image,Mean2,Deviation2)运用intensity算子计算区域的灰度值平均值和偏差(a)原图(b)矩形区域1 程序执行结果如图所示:
18、程序执行结果如图所示:(c)矩形区域2(d)灰度值的平均值与偏差结果运用intensity算子计算区域的灰度值平均值和偏差min_max_ gray算子的原理是基于灰度直方图,取波峰和谷底之间的区域,区域两端各向内收缩一定的百分比,然后在这段范围内计算出最小灰度值和最大灰度值。该算子的原型如下:区域的最大、最小灰度值程序如下:*读取图像 read_image(Image,mreut)*关闭窗口 dev_close_window()*获得图像尺寸 get_image_size(Image,Width,Height)*打开适应图像大小的窗口 dev_open_window(0,0,Width,He
19、ight,black,WindowID)*显示图像 dev_display(Image)*设置填充模式为轮廓 dev_set_draw(margin)*创建两个矩形区域 gen_rectangle1(Rectangle1,350,100,450,200)gen_rectangle1(Rectangle2,100,200,200,300)*提取区域1中最大与最小灰度值min_max_gray(Rectangle1,Image,5,Min1,Max1,Range1)*提取区域2中最大与最小灰度值min_max_gray(Rectangle2,Image,5,Min2,Max2,Range2)min
20、_max_gray算子提取区域中最大灰度以及最小灰度值(a)原图(b)矩形区域1 程序执行结果如图所示:程序执行结果如图所示:(c)矩形区域2(d)min_max_gray处理结果min_max_gray算子提取区域中最大灰度以及最小灰度值基于图像纹理的特征图像纹理特征 纹理特征是在包多个像素点的区域进行统计和分析,反映的是物体表面的一些特性。它可以用来反映物体表面灰度像素的排列状况。图像的纹理特征一般包括图像的能量、相关性、局部均匀性、对比度等。该特征也与区域的形状有关,也是一种区域特征,具有旋转不变性,但是容易受到光照变化的影响。灰度共生矩阵是分析纹理特征的一种有效方法,该方法研究了图像纹
21、理中灰度级的空间依赖关系。具体来说,在图像上取任意两点,坐标分别为、,将设为原像素,将 设为原像素偏移一点分量后的像素,这一对像素点的灰度值为。灰度共生阵就是表现这一对灰度值的取值范围和频率的矩阵,该矩阵的行或者列的维度为原图的灰度等级数。下图为灰度共生矩阵原理示意图:(a)(b)灰度共生矩阵),(yx),(nm),(yx),(nm),(ji),(ji然而,灰度共生矩阵表达的是一种概率,因此图(b)中的矩阵还需要将统计数目归一化成概率,这样得到的才是灰度共生矩阵。该矩阵有如下特性:灰度共生矩阵(1)能量(2)相关性(3)局部均匀性(4)反差Halcon中使gen_cooc_matrix算子来创
22、建图像中的共生矩阵。灰度共生矩阵的方向通常取0、45、90、135。该算子根据输入区域的灰度像素来确定在某个方向彼此相邻的频率,将该频旱存储在共生矩阵中的位置。该算子的原型如下:创建灰度共生矩阵),(ji),(ji经gen_cooc_matrix得到灰度共生矩阵之后,接下来可以使用cooc_feature_matrix 算子根据灰度共生钜阵(Coo_Matrix)计算能量(Energy)、相关性(Correlation)、局部均匀性(Homogeneity)和对比度(Contrast)。该算子一般与gen_cooc_matrix算子搭配使用,根据gen_cooc_matrix算子生成的输入矩阵
23、计算纹理图像的灰度值特征。该算子的原型如下:cooc_feature_matrix(CoocMatrix:Energy,Correlation,Homogeneity,Contrast)灰度共生矩阵cooc_feature_matrix算子用一步操作代替了上文中生成矩阵和输出矩阵这两步操作。这里参数Direction多了一种选择mean,这种方式表示在方向为mean的情况下,灰度值取的是在相邻4个方向上的灰度均值。该算子的原型如下:计算共生矩阵并导出其灰度值特征 特征提取是计算机视觉和图像处理中的一个概念。它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。至今为止特征没有万能和精确的定义。本章小结6.1 什么是图像特征?图像特征可以分为哪几类?6.2 在Halcon中计算出图像1中字母A的区域面积和中心点坐标。6.3 在Halcon中运用intensity算子计算出图像1中字母A的灰度值平均值和偏差。习题图像1