图像处理与Python实现(岳亚伟)笔记五——图像特征提取
图像特征是指可以对图像的特点或内容进行表征的一系列属性的集合,主要包括图像自然特征(如亮度,色彩,纹理等)和图像人为特征(如图像频谱,图像直方图等)。图像特征提取可以视为广义上的图像变换,即将图像从原始属性空间转化到特征属性空间。图像特征提取过程是指对图像包含的信息进行处理和分析,并将其中不易受随机因素干扰的信息作为图像的特征提取出来,进而实现将图像的原始特征表示为一组具有明显的物理意义或统计意义的特征。良好的图像特征通常应具有以下3个特点。
1,代表性或可区分性
图像特征应能够对该类别的对象进行高效表达。不同类别的对象之间的特征差异越大越好,以满足相应任务的需求。如在区分乒乓球和足球时,纹理特征就是一个不错的特征,再比如,进行图像分割时,图像中的边缘突变就是一个很好的特征,因为其可以明确表示图像的内容发生了改变。
2,稳定性
同一类别图像的特征应该具有类似的特征值,以保证类别内图像的相似度大于类别间图像的相似度。如在区分成熟的苹果和不成熟的苹果时,颜色是一个比较好的特征,尺寸大小这个特征在区分苹果成熟与否时,不是一个稳定的特征。
3,独立性
图像特征应该彼此独立,尽量减少彼此的关联性,因为图像特征之间的关联性较强会影响图像内容的较好表达。如苹果的直径和苹果的重量就属于关联性较强的两个特征,因为他们都可以反映苹果的大小,因此同时使用大小和重量这两个特征就会显得冗余。
图像特征提取可以分为底层特征提取和高层语义特征提取。高层语义特征提取通常关注语义层次的特征,如识别任务中的人类识别、图像分类等。底层特征提取通常关注图像的颜色、纹理、形状等一般特征。底层特征提取很少关注图像的语义信息,通过底层特征提取获得的信息一般比较普遍。高层语义特征提取则通常需要关联语义,如人脸识别中很多语义特征与人脸的部件相关,这能够反应图像中是否存在某类对象。高层语义特征提取以底层特征提取为基础,辅以模式识别等方法,建立语义关联,进而形成语义特征。深度学习的出现为特征提取提供了新的思路,实现了底层特征提取和高层语义关联间的很好衔接,极大程度地提升了图像语义分析的效果。
图像特征提取根据其相对尺度可分为全局特征提取和局部特征提取两类。全局特征提取关注图像的整体表征。常见的全局特征包括颜色特征、纹理特征、形状特征、空间位置关系特征等。局部特征提取关注图像的某个局部区域的特殊性质。一幅图像中往往包含若干兴趣区域,从这些区域中可以提取数量不等的若干个局部特征。和全局特征提取过程相比,局部特征提取过程首先须确定要描述的兴趣区域,然后再对兴趣区域进行特征描述。
一,图像颜色特征提取
颜色特征是比较简单但是应用较广泛的一种视觉特征。颜色特征往往和图像中包含的对象或场景相关。 与其他图像特征相比,颜色特征对图像的尺寸、方向、视角变化的依赖性较小,即相对于图像的尺寸、方向、视角变化具有较好的健壮性。颜色特征是一种全局特征,能够描述图像或图像区域对应的景物的表面性质。目前使用的颜色特征主要包括颜色直方图、颜色矩、颜色集、颜色聚合向量以及颜色相关图。
1.1 颜色直方图
颜色直方图用于描述图像中像素颜色的数值分布情况,可以反映图像颜色的统计分布和图像的基本色调。颜色直方图仅可表征图像中某一颜色值出现的频数,无法描述图像像素分布的空间位置信息。任意一幅图像都能唯一给出一幅与它对应的颜色直方图,但不同的图像可能有相同的颜色直方图,因此直方图与图像存在一对多的关系。如将图像划分为若干个子区域,所有子区域的颜色直方图之和等于全图的颜色直方图。一般情况下,由于图像上的背景和前景物体的颜色分布明显不同,颜色直方图上会出现双峰,但背景和前景物体颜色较为接近的图像的颜色直方图不具有这一特性。颜色直方图主要包括一般颜色直方图,全局累加直方图,主色调直方图
1,一般颜色直方图
假设$s(x_i)$为图像F中某一特定颜色$x_i$(其中i=1,2,...,n,表示颜色量化级数,$x_i$表示量化级数i对应的颜色值)的像素个数,图像F中像素总数为$N=\sum_{j}s(x_j)$,则$x_i$像素出现的频率为:。整个图像F的一般颜色直方图可以表示为$H(F)=[h(x_1), h(x_2),...,h(x_n)]$。其中n表示某类颜色取值的个数,一般颜色直方图所在的颜色空间可以是RGB颜色空间,也可以是HSV颜色空间、LUV颜色空间或LAB颜色空间。
图1,彩色图像的一般颜色直方图
使用skimage中exposure模块的histogram()函数可以求得图像的一般颜色直方图。一般颜色直方图对图像的旋转、小幅平移、小幅缩放等变换不敏感,对图像质量的变化(增加噪声)也不敏感,所以一般颜色直方图法适用于对难以进行语义分割的图像和无需考虑物体空间位置的图像进行描述。
另外,计算机的固有量化机制导致一般颜色直方图法会忽略颜色见的相似性。因此,在一般颜色直方图法被提出后,很多学者从这一点入手对该方法进行改进,获得了如全局累加直方图法和局部累加直方图法等算法。
2,全局累加直方图
当图像中的颜色值不能取遍所有可能的颜色值时,一般颜色直方图中就会出现一些零值。这些零值的出现会影响相似性的度量,进而会使计算出的相似度不能准确反映图像之间的颜色分布差异。为了弥合一般颜色直方图法的上述缺陷,在一般直方图方法的基础之上,通过对直方图元素进行累加,消除零值影响,形成全局累加直方图。
假设图像F中某一特征的一般颜色直方图为$H(F)=[h(x_1), h(x_2),...,h(x_n)]$,令:$\lambda (x_i)=\sum_{j\leqslant i}h(x_j)$ 表示颜色小于或等于$x_i$的所有元素的一般颜色直方图的累加和,则图像F的该类特征累加直方图可以表示为:$\lambda (F)=[\lambda (x_1), \lambda (x_2),...,\lambda (x_n)]$。
颜色相邻的频数在全局累加直方图中的位置也相邻。通过累加直方图可以消除零值的问题。同全局直方图相比,虽然全局累加直方图所需的存储量和计算量都有一定程度的增加,但是全局累加直方图法解决了一般颜色直方图法中的灵芝问题,也弥补了全局直方图量化过细导致的度量效果下降的缺陷。
3,主色调直方图
在一幅图像中,不同颜色值出现的概率不尽相同,且通常情况下少数几种颜色就能涵盖整幅图像的主色调。基于该思想,主色调直方图法会计算出图像中每种颜色出现的频率,选择出现频率最高的几种颜色并将其作为主色调。使用主色调直方图并不会降低颜色直方图匹配的效果,反而会抑制图像非主要成分的噪声,降低噪声对图像匹配的影响。
通过总结上述内容可知颜色直方图的优点和缺点如下:优点:计算简单那,对图像的平移和旋转不敏感,能简单描述图像中颜色的全局分布情况。缺点:无法捕捉(会丢失)颜色组成之间的空间位置关系。
1.2 颜色矩
矩是非常重要的统计量,用于表征数据分布的特点。在统计中,一阶矩表示数据分布的均值,二阶矩表示数据分布的方差,三阶矩表示数据分布的偏移度。图像的颜色矩用于对图像内的颜色分布进行表征,是比较重要的一种全局图像特征表示。数字图像中颜色分布的统计信息主要集中在低阶矩中。图像的颜色矩特征提取时主要瞄准图像颜色矩中的一阶矩、二阶矩和三阶矩,对于图像而言,这三种统计特征已经足以表达数字图像的颜色分布。相对于颜色直方图特征提取,颜色矩特征提取的优点是无需对颜色特征进行提前量化。
对于数字图像P,其一阶颜色矩定义为:$u_i=\frac{1}{N} \sum_{j=1}^{N}P_{ij}$。其中$P_{ij}$表示数字图像P的第i个颜色通道的第j个像素的像素值,N表示图像中像素的个数。
二阶颜色矩定义为:$\sigma _{i}=\left [ \frac{1}{N}\sum_{j=1}^{N}(P_{ij}-u_i)^2 \right ]^\frac{1}{2}$
三阶颜色矩定义为:$S_{i}=\left [ \frac{1}{N}\sum_{j=1}^{N}(P_{ij}-u_i)^3 \right ]^\frac{1}{3}$
其中一阶矩可以表征改颜色通道的平均响应强度,二阶矩可以表示改颜色通道的响应方差,三阶矩可以表征该颜色通道数据分布的偏移度。针对彩色图像,图像的颜色矩一共有9个分量,每个颜色通道均有3个低阶矩。颜色矩仅使用少数几个矩容易导致过多错误检出,因为其通常和其他的特征配合使用。
for k in range(image.shape[2]) # 遍历图像RGB三个通道mu = np.mean(image[:, :, k]) # 一阶矩,均值
delta = np.std(image[:, :, k]) #二阶矩,方差
skew = np.mean(stats.skew(image[:, :, k])) #三阶矩
颜色矩的特点:图形的颜色矩有9个分量(3个颜色通道,每个通道上3个低阶矩);与其他颜色特征相比非常简洁;分辨力较弱;颜色矩一般和其他特征结合使用,可以起到缩小范围的作用。
1.3 颜色集(看不懂)
颜色集又可以称为颜色索引集,其是对图像颜色直方图的一种近似。颜色集方法的步骤是:第一,将图像从RGB颜色空间转换到HSV颜色空间等均衡的颜色空间,并将颜色空间量化为若干个边长均等的小立方体;第二,使用基于色彩的自动分割技术将图像划分为若干个子区域;第三,使用颜色量化空间中的某个颜色分类索引每个子区域,以将图像表示为一个二进制的颜色索引集。
最简单的颜色集可以通过在颜色直方图的基础上设置阈值形成。如给定某一颜色值m,给定其阈值$\tau _{m}$,由颜色直方图生成颜色集c可表示为:
其中$h[m]$表示直方图中颜色值为m对应的位置处的分量。由此可见,颜色集可以表示为一个二进制向量。由于颜色集本质上是对颜色直方图的近似表示,先求颜色直方图,再求颜色集会略显冗余,因此通常按照如下所示的形式化方法求颜色集。
1,像素矢量表示:对于RGB空间中的任意图像,它的每个像素均可表示为一个矢量$\overrightarrow{v_c}=(r,g,b)$,其中r,g,b分别代表红、绿、蓝颜色分量
2,颜色空间转换:通过变换运算T将图像变换到一个与人视觉一致的空间$\overrightarrow{w_c}$,即$\overrightarrow{w_c} = T(\overrightarrow{v_c})$
3,颜色集索引:采用量化器(QM)对$\overrightarrow{w_c}$重新量化,使得视觉明显不同的颜色对应不同的颜色集,并将颜色集映射成索引m。
4,颜色集表示:设BM是M维德二值空间,在该空间中每个轴对应唯一的索引m。一个颜色集就是BM二值空间中的一个二维矢量,它表示对颜色{m}的选择,即颜色m出现时,c[m]=1,否则c[m]=0
如果某颜色集对应一个单位长度的二值矢量,则表明重新量化后的图像中只有一个颜色出现;如果该颜色集有多个非零值,则表明重新量化后的图像中有多个颜色出现。
1.4 颜色聚合向量(不想看)
1.5 颜色相关图(不想看)
二, 图像纹理特征提取
纹理是一种反映图像中同质现象的视觉特征,它体现了物体表面的具有重复性或者周期性变化的表面结构组织排列属性。纹理具有三大特点:重复性、周期性、同质性。
- 重复性:图像可以看作是某种局部元素在全局区域的不断重复出现
- 周期性:图像中的元素并非随机出现,而是按照一定的周期性重复出现
- 同质性:重复出现的元素在结构和尺寸上大致相同
由上可见,纹理是某种局部序列性不断重复、非随机排列、在结构和尺寸上大致相同的统一体。纹理图像示例如图2所示,图中第一行表示人工纹理,第二行是自然纹理
图2,纹理图像示例
不同于灰度、颜色等图像特征,纹理特征通过像素及其周边空间域像素的灰度分布进行描述,也就是局部纹理信息。局部纹理的反复排布呈现出的重复性,就是所谓的全局纹理信息。纹理信息在表现全局特征性质的同时,也体现了图像或图像所在区域对应景物的表面特性。纹理特征只是对物体表面特征进行描述,并不能反映物体的本质属性,即图像高层语义信息。
纹理特征提取过程是通过一定的图像处理技术抽取出纹理特征,从而获得纹理的定量或定性描述的过程。纹理特征提取的基本过程如下:
- 纹理基元建模:从像素出发,找出纹理基元(即纹理图像中辨识能力比较强的特征),并根据纹理基元的排列信息建立起纹理基元模型。
- 整体纹理模型构建:利用纹理基元模型对纹理图像进行特征提取,以支持对图像的进一步分割、分类以及辨识,形成图像整体纹理模型。
常见的纹理特征提取方法大致可以分为如下4类:
1,统计分析法
统计分析法又称为基于统计纹理特征的检测方法,该类方法假设纹理图像在空间灰度分布上存在某种重复性,通过对纹理图像的灰度图像分布进行计算,从而得到纹理特征,主要包括灰度直方图法、灰度共生矩阵法、灰度形成长度法、灰度差分统计、交叉对角矩阵、自相关函数法等。该类方法在木纹、沙地草地之类的图像分析上很有效。其主要优势是:方法简单、易于实现,典型的代表方法是灰度共生矩阵法,被公认为是比较有效的纹理分析方法。
2,结构分析法
结构分析法认为纹理基元之间存在某正结构规则关系,该类方法首先对图像中的纹理基元进行分离,然后基于纹理妓院的特征和空间排列规则对纹理进行表征,主要包括偏心度、面积、方向等特征,其主要目标是通过图像结构特征和排列规则的描述得到纹理特征的描述,此类算法主要适用于已知纹理基元的情况,对砖墙、纤维等纹理基元和排列规则都比较明显的图像分析比较有效。
3,模型分析法
模型分析法基于像素及其邻域像素之间的关系建立模型,根据不同模型提取不同特征量,进行参数估计。典型的模型分析法包括自回归法,马尔可夫条件随机场法以及分形法等。
4,频谱分析法
频谱分析法又称为信号处理法和滤波方法。该方法将纹理图像从空间域变换到频域,然后通过计算峰值出的面积、峰值与远点的距离平方,峰值处的相位,两个峰值间的相角差等,获得在空间域不易获得的纹理特征,如周期,功率谱信息等。典型的频谱分析法有二维傅里叶(变换)滤波方法,Gabor(变换)滤波和小波方法等。
2.1 统计纹理分析方法
统计纹理分析方法是较常用的纹理特征描述分析方法,也是纹理图像研究中被研究最多、出现最早的一类方法。统计纹理分析法通过统计图像的空间频率、边界频率以及空间灰度依赖关系等对纹理进行描述。
一般而言,细致的纹理具有高的空间频率。例如,布匹的纹理是非常细致的纹理,其纹理基元较小,出现频率较高。而粗糙的纹理结构则具有较低的空间频率,如大理石纹理一般比较粗糙,具有较大的纹理基元,出现频率较低。因此,纹理图像的空间频率可以作为纹理描述的一种方式。边界频率是另外一种基于统计的额纹理图像描述方法,边界频率越高,表明纹理越精细。空间灰度依赖关系方法通过描述纹理结构之间的空间依赖关系描述纹理。
目前常用的统计纹理方法有自相关函数、边界频率、灰度共生矩阵等。统计纹理分析方法并不刻意精确描述纹理的结构。从统计学的角度看,纹理图象是一些复杂的模式,通常通过获得的统计特征集描述这些模式。
灰度共生矩阵法也称为联合概率矩阵法。该方法基于图像中灰度结构重复出现的概率对图像纹理特征进行描述。该方法的本质是使用条件概率表征纹理特征,通过对空间上具有某种位置关系的一对像素成对出现的概率进行统计,得到灰度共生矩阵,然后从灰度共生矩阵中提取有意义的统计特征对纹理进行描述。
设纹理图像的大小为$M \times N$,图像灰度级为L,记$L_x={0,1,...,M-1}, L_y={0,1,...,N-1}, G={0,1,...,L-1}$,则可把该图像f看作$L_x \times L_y$到灰度值集合G的一个映射,即$L_x \times L_y$中的每个像素点对应一个属于该图像f的灰度值:$f(L_x \times L_y)--->G$。设纹理图像的像素灰度值矩阵中任意两个不同像素的灰度值分别为i和j,则该图像的灰度共生矩阵定义为:沿$\Theta $方向,像素间隔距离为d的所有像素中,灰度分别为i和j的像素对共同出现的次数记为$P(i,j,d,\Theta)$。一般$\Theta $取$0^{\circ }, 45^{\circ }, 90^{\circ }, 135^{\circ }$ 4个方向分别定义如下:
- $0^{\circ }$方向:$P(i, j, d, 0^{\circ})=\#[(k, l), (m, n)] \in [(L_x \times L_y) \times (L_x \times L_y)]$, $k-m=0, \left | l-n \right |=d$
- $45^{\circ }$方向:$P(i, j, d, 45^{\circ})=\#[(k, l), (m, n)] \in [(L_x \times L_y) \times (L_x \times L_y)]$, $k-m=d, l-n=-d 或 k-m=-d, l-n=d$
- $90^{\circ }$方向:$P(i, j, d, 90^{\circ})=\#[(k, l), (m, n)] \in [(L_x \times L_y) \times (L_x \times L_y)]$, $\left | k-m \right |=d, l-n=0$
- $135^{\circ }$方向:$P(i, j, d, 135^{\circ})=\#[(k, l), (m, n)] \in [(L_x \times L_y) \times (L_x \times L_y)]$, $k-m=d, l-n=d 或 k-m=-d, l-n=-d$
其中$[(k, l), (m, n)] \in [(L_x \times L_y) \times (L_x \times L_y)]$的含义:一是表示k和m的取值范围是$L_x$,l和n的取值范围是$L_y$;二是表示(k, l)和(m,n)的取值范围是待分析图像的全部像素点坐标;三是表示$f(k,l)=i$且$f(m,n)=j$
$\#(i,j)$表示的是灰度共生矩阵中的一个元素。位于灰度共生矩阵(i,j)处的元素$\#(i,j)$的值是待分析图像中沿方向$\Theta $像素间隔距离为d的所有像素对中,其起点像素灰度值为i,重点像素的灰度值为j的像素对的个数。
在d值和$\Theta $值给定的情况下,有时将灰度共生矩阵$P(i, j, d, \Theta )$进行简写,如$d=1$和$\Theta = 0^{\circ }$时,可以简写为$P(1, 0^{\circ })$。
例如:已知有图像如下所示,分别计算当d=1时的灰度共生矩阵$P(1, 0^{\circ})$、$P(1, 45^{\circ})$、$P(1, 90^{\circ})$、$P(1, 135^{\circ})$
解:根据灰度共生矩阵的定义,通过统计d=1和$\Theta $等于$0^{\circ }, 45^{\circ }, 90^{\circ }, 135^{\circ }$ 4个方向时,图像中的起点像素灰度值为i,终点像素灰度值为j的相邻像素点对的个数,得到$P(1, 0^{\circ})$、$P(1, 45^{\circ})$、$P(1, 90^{\circ})$、$P(1, 135^{\circ})$结果如下:
灰度共生矩阵提供了关于纹理的统计信息,但并不能直接作为纹理特征。实际应用中需要基于灰度共生矩阵进一步计算出纹理图像的特征参数,也称为二次统计量。
利用灰度共生矩阵描述图像纹理的统计量主要有14种,包括角二阶矩(能量)、对比度、熵、相关性、均匀性、逆差矩、和平均、和方差、和熵、差方差(变异差异)、差熵、局部平稳性、相关信息测度1、相关信息测度2.实际应用中发现,在灰度共生矩阵的14个纹理特征参数中仅有能量、对比度、相关性和逆差矩这4个特征参数是不相关的,且其既便于计算,又能给出较高的分类精度。设$P(i,j,d,\Theta)$为图像中像素距离为d、方向为$\Theta $的灰度共生矩阵的(i, j)位置上的元素值,下面给出几种典型的灰度共生矩阵纹理特征参数。
1,角二阶矩(能量)
2,对比度
3,熵
4,相关性
6,逆差矩
图3,基于灰度共生矩阵的纹理描述方法(更新了下anaconda包,咋连camera的图像都换了T_T)
2.2 Laws纹理能量测量法
Laws纹理能量测量法是一种典型的一阶纹理分析方法,在纹理分析领域中有一定影响。Laws纹理能量测量的基本思想是设置两个窗口:一个是微窗口,可为$3 \times 3, 5 \times 5$或$7 \times 7$,常取$5 \times 5$测量以像元为中心的小区域的灰度的不规则形,以形成属性,称为微窗口滤波;另一个是宏窗口,为$15 \times 15$或$32 \times 32$,用来在更大的区域上求属性的一阶统计量(常为均值和标准偏差),称为能量变换。整个纹理分析过程为:
f(x,y)--->微窗口滤波--->F(x, y)--->能量转换--->E(x,y)--->分类
Laws纹理能量测量法首先定义了一维滤波模板,然后通过卷积形成系列一维、二维滤波模板,用于检测和度量纹理的结构信息。选定的3组一维滤波模板是:
L3 = [1 2 1] 灰度(Level) | R5 = [1 -4 6 -4 1]涟漪(Ripple) |
E3 = [-1 0 1]边缘(Edge) | L7 = [1 6 15 20 15 6 1] |
S3 = [-1 2 -1]点(spot) | E7 = [-1 -4 -5 0 5 4 1] |
L5 = [1 4 6 4 1] | S7 = [-1 -2 1 4 1 -2 1] |
E5 = [-1 -2 0 2 1]\ | W7 = [-1 0 3 0 -3 0 1] |
S5 = [-1 0 2 0 -1] | R7 = [1 -2 -1 4 -1 -2 1] |
W5 = [-1 2 0 -2 1]波(Wave) | O7 = [-1 6 -15 20 -15 6 1]振荡(Oscillation) |
$1 \times 3$的矢量集是构成更大矢量的基础,每个$1 \times 5$的矢量可以由两个$1 \times 3$矢量的卷积产生。$1 \times 7$的矢量可以由$1\times 3矢量与1\times5$矢量的卷积产生。垂直矢量和水平矢量可生成二维滤波模板。由滤波模板与图像卷积可以检测不同的纹理能量信息。所以,Laws纹理能量检测法一般选用12~15个$5 \times 5$的模板。以$1\times 5$矢量为基础,卷积同样维数的矢量,可获得25个$5 \times 5$模板。其中4个最强性能的模板是E5L5模板,R5R5模板,E5S5模板,L5S5模板。
E5L5模板 | R5R5模板 | E5S5模板 | L5S5模板 |
利用上述模板可以分别滤出水平边缘、高频点、V形状和垂直边缘。采用Laws纹理能量测量法将8种纹理图像拼在一起,对该图像做纹理能量测量,将每个像元指定为8个可能类中的一个,正确率达87%。这种纹理分析方法简单、有效,但所提供的模板觉少,尚未更多地给出其变化性质,应用收到一定限制。
2.3 Gabor变换
大量心理和生理学研究发现,在人类的低级视觉中,输入信号被一系列具有不同频率和方位的线性空间滤波器分解成一组频率和方位通道,Gabor变换可以很好的描述这一信号分解过程。Gabor变换具有两个很重要的性质:一是其良好的空间域与频域局部化性质;二是无论从空间域的起伏特性上,方位选择上,空间域与频域选择上,还是从正交相位的关系上,二维Gabor基函数具有与大多数哺乳动物的视觉表皮简单细胞的二维感知域模型相似的性质。
我们可以借鉴人类处理信号的特性,用包含多个Gabor滤波器的滤波器组对图像进行不同中心频率和方位的滤波处理,从而提取包含不同频率成分和不同方位的特征,作为目标的非参数化特征,研究其不同分辨率目标的特征与图像分辨率的关系。考虑到计算效率的问题,不可能在Gabor滤波器组中包含所有中心频率的滤波器,实际应用中通常根据经验选取某几个中心频率和方位。
Gabor变换属于加窗傅里叶变换。Gabor函数可以在频域不同尺度、不同方向上提取相关的特征。另外,Gabor函数与人眼的生物作用相仿,所以经常用作纹理识别上,并取得了较好的效果。二维Gabor函数可以表示为:
其中$\sigma _x, \sigma _y$分别代表水平和垂直方位的空间尺度因子,$w_f$和$\Theta _f$分别表示中心频率及方位。分解该滤波器可以得到两个实滤波器:余弦Gabor滤波器和正弦Gabor滤波器。
余弦Gabor滤波器表示为:
正弦Gabor滤波器表示为:
二维余弦Gabor滤波器是较常用的图像特征提取滤波器,通过对余弦Gabor滤波器进行傅里叶变换,可得
由于图像在计算机中是以离散点的形式存放的,因此为了用Gabor滤波器对其进行滤波处理,首先要将连续的Gabor滤波器采样获得离散的Gabor滤波器。运用Gabor滤波器对图像进行滤波,实际上就是用离散化的Gabor模板矩阵和图像数据卷积的过程。当两卷积矩阵很大时,运算量将会急剧增大,如果把空间域中的卷积问题转化到频域中通过相乘来实现,将大大降低运算量。设矩阵$f_1, f_2$的傅里叶变换分别为$F_1, F_2$,则有:$F_1=fft(f_1), F2=fft(f_2)$
由卷积定理得:$conv(f_1, f_2) = ifft(F_1 \times F_2)$,其中conv表示卷积,fft表示傅里叶变换,ifft表示逆傅里叶变换,$F_1 \times F_2$表示对应元素相乘,Gabor滤波器滤波过程如图4所示
图4, Gabor滤波器滤波过程(个人理解:延拓对应CNN中的padding)
在用含有多个Gabor滤波器的滤波器组进行图像特征提取时,具有最低中心频率需要根据目标图像的最大尺寸I确定,但是实际应用中这一尺寸不一定能够被获得,此时可以粗略的用$\sqrt{w_2 + h^2}$代替I,相应的$w_{f_{min}}=\frac{1}{\sqrt{w_2+h_2}}$.
基于Gabor的纹理特征提取如图5:
图5, 基于Gabor滤波器的纹理特征提取
2.4 局部二值模式
局部二值模式(Local Binary Pattern, LBP)的基本思想是将中心像素点的灰度值作为阈值,将其邻域内的像素点灰度值与阈值进行比较,从而得到二进制编码用以表述局部纹理特征。LBP表示方法不易受图像整体灰度线性变化的影响,当图像的灰度值发生先行均匀变化时,其LBP特征编码是不变的。LBP特征计算简单,表征能力强,在纹理特征描述上具有较好的效果。
基本LBP算子:$3 \times 3$的矩形块,有1个中心像素和8个邻域像素分别对应9个灰度值特征值:以中心像素的灰度值为阈值,将其邻域的8个灰度值与阈值比较,大于中心灰度值的像素用1表示,反之用0表示。然后根据顺时针方向读出8个二进制值。经阈值化后的二值矩阵可看程一个二值纹理模式,用来刻画邻域内像素点的灰度相对中心点的变化情况。因为人类视觉系统对纹理的感知与平均灰度(亮度)无关,而局部二值模式方法注重像素灰度的变化,所以它符合人类视觉对图像纹理的感知特点,LBP计算过程如图6所示
图6, LBP计算过程
基于LBP计算图像的纹理特征如图7所示。
图7, 基于LBP计算图像的纹理特征
三,图像形状特征提取
形状和区域特征是图像中的另外一类重要特征。不同于颜色、纹理等底层特征,对形状特征的描述必须以对图像中的物体或区域对象的分割为前提。形状特征的表示方法可以分为两类:一是基于轮廓特征,典型方法是傅里叶描述方法;二是基于区域特征,典型方法是形状无关矩方法。轮廓特征中只用到物体的边界,而区域特征则需要考虑到整个形状区域。
3.1 简单形状特征
3.1.1 矩形度
矩形度反应物体对其外接矩形的充满程度,用物体的面积与其最小外接矩形的面积之比描述,即:$R = \frac{A_0}{A_{MER}}$,$A_0$是该物体的面积,而$A_{MER}$是其外接矩形的面积。当物体为矩形时,R取得最大值1.0;圆形物体的R取值为$\pi/4$;细长的、弯曲的物体的R的取值变小。
与矩形度相关的辅助特征为长宽比,$r = \frac{W_{MER}}{L_{MER}}$,其中$W_{MER}$表示物体外接矩形的宽度,$L_{MER}$表示外接矩形的长度。利用长宽比可以将西昌的物体与原型或放行的物体区分开。
3.1.2 球状性
球状性(Sphericity)既可以描述二维目标,也可以描述三维目标,其定义为$S=\frac{r_i}{r_c}$,描述二维目标时,$r_i$表示目标区域内切圆的半径,$r_c$表示目标区域外接圆的半径,两个圆的圆心都在区域的重心上,如图8所示
图8,球状性示意图
可知S的取值范围为$0<S\leqslant 1$。当目标区域为圆形时,目标的球状性值S达到最大值1,当目标区域为其他形状时,S<1。显然,S不受区域平移、旋转和尺度变化的影响。
3.1.3 圆形性
目标圆形性(Doularity)是指用目标区域R的所有边界点定义的特征量,其定义式为$C=\frac{\mu _R}{\sigma _R}$。设$(x_i, y_i)$为图像边界点坐标,(x,y)为图像的重心坐标,其中$\mu_R$是从区域重心到边界点$(x_i,y_i)$的平均距离,定义$\mu_R = \frac{1}{K} \sum_{i=0}^{K-1}|(x_i, y_i) - (\overline{x}, \overline{y})|$。而$\sigma_R$是从区域重心到边界点的距离均方差,定义$\sigma_R = \frac{1}{K} \sum_{i=0}^{K-1}[|(x_i, y_i) - (\overline{x}, \overline{y})| - \mu_R]^2$。
针对灰度图像,区域重心可以定义为:
3.2 傅里叶描述符
傅里叶描述符是用于单封闭曲线形状特征描述的常用工具。傅里叶描述符将待描述目标曲线看作一维数值序列,使用傅里叶变换对该序列进行转换,得到描述该曲线的一系列傅里叶系数。傅里叶描述符具有计算简单、描述清晰等优点。相较于其他复杂的描述方法,傅里叶描述符更加直观,易于理解。
傅里叶描述方法一般分为两步:首先,定义对轮廓线的表示,把坐标的序列点看作复数,即$s(k)=x(k)+jy(k)$,x轴作为实轴,y轴作为虚轴,边界的性质不变。这种表示方法的优点是将一个二维边缘描述问题简化成一个一维序列描述问题。其次,对一维序列$s(k)$进行傅里叶变换,并求得其傅里叶系数:$a(u) = \sum_{k=0}^{N-1}s(k)e^{-j2 \pi uk/N}$。
傅里叶描述符序列${a(u)}$反映了原曲线的形状特征。由于傅里叶变换具有能量集中性,少量的傅里叶描述符就可以重构出原曲线。
四,图像边缘特征提取
图像边缘具有方向和幅度两个主要成分。沿边缘方向移动,像素的灰度值变化速率较为平缓。而沿垂直于边缘的方向移动,像素的灰度值变化速率较为剧烈。这种剧烈的变化或者呈阶跃状(step edge),或者呈屋顶状(roof edge),分别称为阶跃状边缘和屋顶状边缘。根据边缘的性质,一般用一阶和二阶导数对其进行描述与检测,如图9所示
图9,图像边缘的类型
综上,图像中的边缘可以通过对它们求导数确定,而导数可利用微分算子计算。对于数字图像来说,通常利用差分近似微分。
图像边缘检测的基本步骤如下。
1,滤波
边缘检测主要基于导数计算,但易受噪声影响,滤波操作的主要目的是降低噪声的干扰,但滤波再降低噪声的同时也会损失边缘强度。
2,增强
增强算法将局部邻域中灰度值有显著变化的点突出显示,一般可通过计算梯度幅值完成。
3,检测
有些图像中梯度幅值较大的并不是边缘点,需要对其进行进一步的筛选。最简单的检测方法是设定梯度幅值阈值。
4,定位
定位即精确确定边缘的位置。传统边缘检测的流程如图10所示
图10,传统边缘检测的流程
4.1 梯度边缘检测
设$f(x,y)$为连续图像函数,$G_x$和$G_y$分别为x方向和y方向的梯度,再点(x,y)处的梯度可以表示为一个矢量,并有其梯度定义:
令
该梯度矢量在点(x,y)处的梯度幅值定义为: $|G(x,y)| = \sqrt{G_{x}^{2}+G_{y}^{2}}$。实际中常用两个分量的绝对值之和近似梯度幅值,即:$|G_4(x, y)|=|G_x|+|G_y|$,或用其最大值近似梯度幅值:$|G_8(x,y)|\approx max{|G_x|+|G_y|}$。
梯度的方向(由梯度矢量的幅角表示)是函数f(x,y)增加最快的方向,定义为$\phi (x,y) = arctan(G_y/G_x)$。
从梯度原理出发,已经发展了许多边缘检测算子:
4.2 一阶边缘检测算子
4.2.1 罗伯特算子
罗伯特边缘检测算子用对角线上相邻像素之差代替梯度寻找边缘。罗伯特算子是一个交叉算子,其在点(i, j)的梯度幅值表示为:$|G(i,j)|=|f(i,j)-f(i+1, j+1)|+|f(i+1,j)-f(i,j+1)|$。
令:$G_x=f(i,j)-f(i+1, j+1)$, $G_y=f(i+1, j)-f(i, j+1)$则梯度幅值可表示为:$|G(i, j)|=|G_x|+|G_y|$。
而$G_x和G_y$可以分别用以下局部差分算子进行计算。
可得:$R_xf(i,j)=f(i,j)-f(i+1, j+1)=G_x$,$R_yf(i, j)=f(i+1, j)-f(i, j+1)=G_y$
罗伯特边缘检测的步骤为:
(1)用两个模板分别对图像进行运算得到$R_xf$和$R_yf$,并计算$|G(i, j)|=|G_x|+|G_y|$;
(2)判别该相加结果是否大于或等于某个阈值,如果满足条件,则将其作为结果图像中对应模板(i, j)位置的像素值;如果不满足条件,则给结果图像中对应模板(i, j)位置的像素赋0值。
图11,罗伯特算子边缘处理
4.2.2 索贝尔算子
索贝尔算子是$3 \times 3$的,该梯度矢量在点(i, j)处的梯度幅值定义为:$|G(i, j)| = \sqrt(G_{x}^{2}+G_{y}^{2})$,简化的卷积模板表示为:$G_4(i, j)=G_x+G_y$,其中,$G_x$和$G_y$是3*3像素窗口(模板)的中心点像素在x方向和y方向上的梯度,即利用索贝尔边缘检测算子得到的是边缘检测结果图像中与3*3模板的中心点(i,j)对应的位置处的像素值。$G_x$和$G_y$的定义如下:
其中,x方向和y方向梯度模板形式为:
索贝尔边缘检测的步骤为:
(1)用两个模板分别对图像进行计算,得出$|G(i,j)|=G_x+G_y$;
(2)判别该相加结果是否大于或等于某个阈值,如果满足条件,则将其作为结果图像中对应模板(i, j)位置的像素值;如果不满足条件,则给结果图像中对应模板(i, j)位置的像素赋0值。
图12,基于索贝尔算子的边缘检测
注意,在实现过程中,索贝尔算子又可以分为垂直方向索贝尔算子Sobel_V以及水平方向索贝尔算子Sobel_H,分别可以对垂直方向和水平方向的边缘进行检测,形成类似图12所示的浮雕效果。
索贝尔边缘检测算子在较好地获得边缘效果的同时,并对噪声具有一定的平滑作用,减小了对噪声的敏感性。但索贝尔边缘检测算子检测的边缘比较粗,会检测出一些为便于额,边缘检测精确度比较低。
4.3 二阶边缘检测算子
在利用一阶导数的边缘检测算子(器)进行边缘检测时,有时会出现因检测到的边缘点过多而导致边缘线过粗的情况。通过去除一阶导数中的非局部最大值,就可以检测出更细的边缘,而一阶导数的局部最大值对应二阶导数的零交叉点。所以,通过找图像的二阶导数的零交叉点就能找到精确的边缘点。
4.3.1 拉普拉斯算子
对于阶跃状边缘,其二阶导数在边缘点出现过零交叉,即边缘点两旁的二阶导数取异号,据此可以通过二阶导数检测边缘点。Laplace边缘检测算子正是对二维函数进行二阶导数运算的标量算子,定义为:
其二阶差分可以近似表示为:
同理,
进一步合并,可得:
对应的拉普拉斯运算模板如下:
基于Laplace算子的边缘检测如图13所示。
图13, 基于Laplace算子的边缘检测
边缘检测算子模板的基本特征是中心位置的系数为正,其余位置的系数为负,且模板的系数之和为零。它的使用方法是用途中的两个点阵之一作为卷积核,与原图像进行卷积运算即可。Laplace检测模板的特点是各向同性,对孤立点及线段的检测效果好,Lapace算子的缺点是会出现边缘方向信息丢失,对噪声敏感,整体检测效果不如梯度算子,且须注意到与索贝尔算子相比,对图像进行处理时,Laplace算子能使噪声成分得到加强,对噪声更敏感。
4.3.2 LoG边缘检测算子
实际应用中,由于噪声的影响,对噪声敏感的边缘检测点检测算法(如拉普拉斯算子法)可能会把噪声当边缘点检测出来,而真正的边缘点会被噪声淹没而未检测出。为此,Marr和Hildreth提出了马尔算子,因为是基于Gauss算子和Laplace算子的,所以也称高斯-拉普拉斯(Laplacian of Gaussian, LoG)边缘检测算子,简称LoG算子。该方法时现采用Gauss算子对原图像进行平滑降低噪声,鼓励的噪声点和较小的结构组织将被滤除。由于平滑会导致边缘的延展,因此在边缘检测时仅考虑那些具有局部最大值的点为边缘点。可以用Laplace算子将边缘点转换成零交叉点,然后通过零交叉点的检测实现边缘检测。所谓零交叉点就是,如果一个像素处的值小于某一阈值$\Theta_0$,同时像素8-联通的各个像素都大于$\Theta_0$($\Theta_0$是一个正数),那么这个像素就是零交叉点。这样还能克服Laplace算子对噪声敏感的缺点,减少了噪声的影响。LoG算子二阶导数零交叉的性质对边缘进行定位,在图像边缘检测方面得到了较好的应用。
简言之,LoG算子就是一个高斯算子后面叠加上一个LapLace算子,这样起到了首先抑制噪声的目的,后面通过Laplace进行边缘的检测与提取。典型的二维高斯函数的形式为:
其中,$\sigma$称为尺度因子,用于控制去噪效果;实验结果表明,当$\sigma = 1$时,去噪效果较好。LoG边缘检测算法可分为两个主要过程。
(1)利用二维高斯函数对图像进行低通滤波,即用二维高斯函数与原图像$f(x, y)$进行卷积:$g(x, y)=G(x, y, \sigma) * f(x,y)$。可得到平滑后的图像$g_0(x,y)$。二维高斯函数及其导数图像如图13,14所示
图13, 二维高斯函数图像
图14,二维高斯函数导数图像
(2)使用Laplace算子$ ^2$对$g_0(x,y)$进行二阶导数运算,就可提取卷积运算后的零交叉点作为图像的边缘
其中
称为LoG算子。边缘检测算法对原图像进行边缘检测的结果图像$g(x,y)$可表示为:$g(x,y) = ^2G(x,y,\sigma)*f(x,y)$。LoG算子函数图像如图15所示
图15, LoG算子函数图像
LoG算子把Gauss的平滑滤波器和Laplacian锐化滤波器结合了起来,即把用二维高斯函数与原图像$f(x,y)$进行卷积和用Laplace算子$ ^2$对卷积结果进行二阶导数运算结合起来;先平滑掉噪声,再进行边缘检测(因为二阶导数处于0处对应的像素就是图像的边缘),所以边缘检测的效果会更好。实际应用中,LoG算子一般取如下$5 \times 5$的模板
基于LoG边缘检测的效果如图16所示
图16,基于LoG的边缘检测效果
LoG算子用到的卷积模板一般比较大(典型的半径为8~32个像素),不过这些模板可以分别为一维卷积来快速计算。常用的LoG算子是$5 \times 5$模板。与其他边缘检测算子一样,LoG算子也是先对边缘做出假设,然后再这个假设下寻找边缘像素。但LoG算子对边缘的假设条件最少,它的应用范围更广。另外,其他边缘检测算子检测得到的边缘是不连续、不规则的,还需要连接这些边缘,而LoG算子的结果没有这个缺点。对于LoG算子边缘检测的结果,可以通过高斯函数标准偏差$\sigma$进行调整。即$\sigma$值越大,噪声滤波效果越好,但同时也丢失了重要的边缘信息,影响了边缘检测的性能;$\sigma$值越小,又有可能平滑不完全而留有太多的噪声。因此,再不知道物体尺度和位置的情况下,很难准确确定滤波器的$\sigma$值。一般来说,使用大$\sigma$值得滤波器产生鲁棒边缘,使用小$\sigma$值得滤波器产生精确定位的边缘,两者结合,能够检测出图像的最佳边缘。数学上已证明,马尔算子是按零交叉检测阶跃状边缘的最佳算子。但在实际图像中要注意到,高斯滤波的零交叉点不一定全部是边缘点,还需要进一步对其真伪进行检验。
五,图像点特征提取
如果图像中的一个非常小的区域的灰度幅值与其邻域值相比有明显的差异,则称这个非常小的区域为图像点(一般意义上的孤立像素点),如图17
图17,图像点特征示意
目前对图像点特征提取的技术有很多种,其中研究最多、应用最广的是角点检测算法。关于图像角点的定义有多种不同的看法。从直观可视的角度出发,两条直线相交的顶点可看作是角点;物体的几个平面的相交处也可以看作是角点。从图像特征的角度出发,图像中周围灰度变化较剧烈的点可看作是角点;图像边界上曲率足够高的点也可看作是角点。常见的角点类型示例如图18所示
图18,常见角点类型示例
角点的检测方法有很多种,其检测原理也多种多样,但这些方法概况起来答题可以分为3类:一是基于模板的额角点检测算法;二是基于边缘的角点检测算法;三是基于图像灰度变化的角点检测算法。其中,基于图像灰度变化的角点检测算法应用最广泛。下面主要介绍SUSAN角点检测算法。
SUSAN算法选用圆形模板。将位于圆形窗口模板中心等待检测的像素点称为核心点。核心点的邻域被划分为两个区域:亮度值相似于核心点亮度的区域即核值相似区(Univalue Segment Assimilating Nucleus, USAN)和亮度值不相似于核心点亮度的区域。SUSAN算法通过核值相似区的大小判别图像角点,并实现图像中角点特征的检测及提取。SUSAN算子常见检测模板如图19所示
图19,SUSAN算子常见检测模板
在SUSAN方法中,当模板在目标图像上移动时,图像中位于圆形模板(窗口)中心等待被检测的像素称为核心点。在假设图像非纹理的情况下,核心点的邻域(图像中位于圆形模板下的除核心点像素意外的其他像素组成的区域)被划分为两个区域:一个是灰度值等于(或相似于)核心点灰度值的区域,称为核值相似区,即USAN;另一个是灰度值不相似于核心点灰度值的区域,即与核心点像素灰度值相差比较明显的像素组成的区域。设阈值$t$为一几何灰度门限,当某一像素点的灰度值与模板核心像素点灰度的差值小于几何门限$t$时,就认为该点与核心点具有相同(或相近)的灰度值,由满足该条件的额所有像素点组成的区域称为USAN区域。由USAN区域的定义可知,USAN区域包含了图像的局部结构信息,其大小反映了图像局部特征的强度。当模板在图像上移动时,USAN区域大体可以分为3类:当模板完全处于图像的背景(如图19中的白色区域)或目标中(如图19中的阴影区域)时,USAN区域最大,区域大小等于模板大小,如图20位置A
图20,SUSAN算子不同区域图示
当模板中心处于角点上时,USAN区域最小,如图20中的位置B;当模板中心处于边界上时,USAN区域大小为模板大小的一半,如图20中的位置C;当模板由图像中逐渐移向图像边缘时,USAN区域逐渐变小,如图中的位置E。
SUSAN算子进行角点检测的过程如下。
(1)用模板在图像上进行扫描移动,利用给定的阈值$t$,通过对图像中模板内任意像素点与核心像素点灰度差值的比较判别该像素点是否属于USAN区域。当灰度差值小于或等于阈值$t$时,认为该像素点属于USAN区域;当灰度差值大于阈值$t$时,认为该像素点不属于USAN区域。其数学表达式为:
其中,$\vec{r_{0}}$为图像中模板核心点像素的位置,$\vec{r}$表示图像中的模板除中心以外的其他任意一点的位置;$I(\vec{r})$和$I(\vec{r_0})$分别表示袋顶像素点$\vec{r}$和$\vec{r_0}$中心像素点的灰度值;$t$表示灰度差阈值,阈值取值的大小决定了角点选取的精度。为计算可靠,可以用下式替换
这样,模板内所有像素点对应的USAN区域大小就可以表示为:
(2)当得到目标的所有像素点的USAN区域大小后,就可以通过各点的能量响应函数判断该点是否为角点,各像素点的能量响应函数$R(\vec{r_0})$定义为:
其中,$n(\vec{r_0})$表示点的USAN区域大小;T是余弦设定的几何门限阈值,用于决定哪写像素点可以被视为角点。当目标图像中的某一像素点的USAN区域小于几何门限时,该像素点就被判定为角点,否则就不是角点。
(3)使用非最大抑制(No Max Supperssion, NMS)方法找特征点,即它通过将一边缘点作为$3 \times 3$模板的中心,与它的8淋雨范围内的点进行比较,保留灰度值最大者,这样就可以找出特征点了。
(4)剔除虚假角点。
基于SUSAN算子的角点检测相应图像如图21所示
图21, 基于SUSAN算子的角点检测响应图像
以上是 图像处理与Python实现(岳亚伟)笔记五——图像特征提取 的全部内容, 来源链接: utcz.com/z/387456.html