图像的特征提取

来源:互联网 发布:可爱表情贴图软件 编辑:程序博客网 时间:2024/04/18 16:24

学习图像处理,必须首先得理解图像的特征提取,我在这里把图像的特征暂且分为如下五类:面特征、线特征、局部区域特征、点特征和不变点特征。其中,面特征对应图像多分辨率金字塔和图像的矩特征,线特征对应图像的边缘检测,局部区域特征对应图像的斑点特征检测,点特征对应图像的角点检测,不变点特征对应图像的尺度不变特征的提取。下面我一一简单说明一下这些特征。

一、图像金字塔

在数字图像处理领域,多分辨率金字塔化是图像多尺度表示的主要形式。图像金字塔化一般包括两个步骤:图像经过一个低通滤波器进行平滑;然后对这个平滑图像进行抽样,抽样比例一般在水平和垂直方向都是为1/2,从而得到一系列尺寸缩小、分辨率降低的图像。将得到的依次缩小的图像按顺序排列,看上去就像是金字塔,这就是“图像金字塔”的由来。

图像的高斯金字塔:设原图像为G0,以G0作为高斯金字塔的第0层(底层),对原始输入图像进行高斯低通滤波和隔行隔列的降采样,得到高斯金字塔的第1层;再对第1层图像低通滤波和降采样,得到高斯金字塔的第2层;重复以上过程,就可以构成高斯金字塔。可见高斯金字塔的当前层图像是对其前一层图像先进行高斯低通滤波,然后进行隔行隔列的降采样而生成的。当前层图像的大小依次为前一层图像大小的1/4。

图像的拉普拉斯金字塔:它的每一层图像是高斯金字塔本层图像与其高一级的图像(由本层图像下采样得到)经内插放大后图像的差,此过程相当于带通滤波,因此,拉普拉斯金字塔又称为带通金字塔。

MATLAB图像处理工具箱提供了impyramid()函数,用于构造图像的金字塔,其调用格式如下:B=impyramid(A,direction),该函数的功能为:对A进行高斯金字塔变换,direction为'reduce'和'expand',分别对应分解和扩张。

二、图像的矩特征

图像的矩特征是用于可以代表图像的图像描述量,不变矩(Invariant Moments,IMg)是一种高度浓缩的图像特征,具有平移、灰度、尺度、旋转不变性,因此矩和矩函数可被用于图像的模式识别、图像分类、目标识别和场景分析中。

HU矩 几何矩是由Hu(Visual pattern recognition by moment invariants)在1962年提出的,图像f(x,y)的(p+q)阶几何矩定义为 Mpq =∫∫(x^p)*(y^q)f(x,y)dxdy(p,q = 0,1,……∞)矩在统计学中被用来反映随机变量的分布情况,推广到力学中,它被用作刻画空间物体的质量分布。同样的道理,如果我们将图像的灰度值看作是一个二维或三维的密度分布函数,那么矩方法即可用于图像分析领域并用作图像特征的提取。最常用的,物体的零阶矩表示了图像的“质量”:Moo= ∫∫f(x,y )dxdy 一阶矩(M01,M10)用于确定图像质心( Xc,Yc):Xc = M10/M00;Yc = M01/M00;若将坐标原点移至 Xc和 Yc处,就得到了对于图像位移不变的中心矩。如Upq =∫∫[(x-Xc)^p]*[(y-Yc)^q]f(x,y)dxdy。Hu在文中提出了7个几何矩的不变量,这些不变量满足于图像平移、伸缩和旋转不变。如果定义Zpq=Upq/(U20 + U02)^(p+q+2),Hu 的7种矩为:H1=Z20+Z02;H1=(Z20+Z02)^2+4Z11^2;......

三、图像的边缘检测

图像的边缘是指其周围像素灰度急剧变化的那些像素的集合,它是图像最基本的特征。边缘存在于目标、背景和区域中,所以,它是图像分割最重要的依据。边缘检测的基本思想是先检测图像中的边缘点,再按照某种策略将边缘点连接成轮廓,从而构成分割区域。

1、运用一阶微分算子检测图像边缘

一阶微分边缘检测算子也称为梯度边缘算子,它是利用图像在边缘处的阶跃性,即图像梯度在边缘取得极大值的特性进行边缘检测。梯度是一个矢量,它具有方向和模。梯度的模值大小提供了边缘的强度信息,梯度的方向提供了边缘的趋势信息,因为梯度的方向始终是垂直于边缘的方向。在实际使用中,通常利用有限差分进行梯度近似。x方向的导数近似等于I(x+1,y)-I(x,y),y方向的导数近似等于I(x,y+1)-I(x,y),对于3*3模板中心像元的梯度,其梯度可通过下式计算得到:x方向:Mx=(a2+ca3+a4)-(a0+ca7+a6),y方向:My=(a6+ca5+a4)-(a0+ca1+a2),其中a0至a8是由模板左上角a0顺时针旋转至模板中心a8,参数c为加权系数,表示离中心像元较近。当c等于1时,就可以得到Prewitt边缘检测卷积核,当c=2时,就可以得到Sobel边缘检测卷积核。

MATLAB中也提供了相关的图像边缘检测的函数,其调用格式如下:BW = edge(I,'sobel',thresh,direction),BW = edge(I,'prewitt',thresh,direction),

BW = edge(I,'roberts',thresh),其中,I是输入的灰度图像,thresh是阈值,direction是方向。

2、傅里叶变换与图像梯度的关系

实际上,对图像进行二维傅里叶变换得到的频谱图,就是图像梯度的分布图,当然频谱图上的各点与图像上的各点并不存在一一对应的关系,在傅里叶频谱图上看到的明暗不一的亮点,实际上是图像上某一点与领域点差异的强弱,即梯度的大小,也即该点的频率大小(也可以这样理解,图像中的低频部分指低梯度的点,高频部分指高梯度的点),一般来讲,梯度大则该点的亮度强,否则该点亮度弱。通过观察图像的频谱图,我们首先可以看出图像的能量分布,如果频谱图中的暗的点数多,那么实际图像是比较柔和的(因为各点与领域差异不大,梯度相对较小),反之,如果频谱图中亮的点数较多,那么实际图像一定是尖锐的,边界分明且边界两边像素差异较大。

3、运用二阶微分算子检测图像边缘

二阶微分边缘检测算子是利用图像在边缘处的阶跃性导致图像二阶微分在边缘处出现零值这一特性进行边缘检测的,因此,该方法也被称为过零算子和拉普拉斯算子。如下:

x方向二阶微分算子=I(i,j+1)-2I(i,j)+I(i,j-1),y方向二阶微分算子=I(i+1,j)-2I(i,j)+I(i-1,j)

虽然使用二阶微分算子检测边缘的方法简单,但是它是缺点是对噪声十分敏感,同时,也不能提供边缘的方向信息。为了实现对噪声的抑制,Marr等提出了高斯拉普拉斯(LoG)的方法。即采用高斯函数作为低通滤波器对图像滤波后,再对该图像进行二阶微分运算。也可以转换为先对高斯函数进行二阶微分,然后再将结果对图像进行卷积运算。为减少高斯函数二阶微分的计算量,可以直接用高斯差分算子(Difference of Gaussian,DoG)代替它。

在MATLAB中,也提供了相关函数,其调用格式为:BW = edge(I,'log',thresh)。其中,I是输入的灰度图像,thresh是阈值。

4、基于Canny算子检测图像边缘

Canny边缘检测算子是边缘检测算子中最常用的一种,虽然Canny算子也是一阶微分算子,但它对一阶微分算子进行了扩展:主要是在原一阶微分算子的基础上,增加了非最大值抑制和双阈值两项改进。利用非最大值抑制不仅可以抑制多响应边缘,而且还可以提高边缘的定位精度;利用双阈值可以有效地减少边缘的漏检率。Canny算子进行边缘提取主要分为4步:

1)去噪声,通常使用高斯函数对图像进行平滑滤波。

2)计算梯度值与方向角。

3)非最大值抑制

4)滞后阈值化。

在MATLAB中,也提供了相关函数,其调用格式为:BW = edge(I,'canny',thresh)。其中,I是输入的灰度图像,thresh是阈值。

四、斑点特征检测

斑点通常是指与周围有着颜色和灰度差别的区域,斑点检测(Blob Detection)是数字图像处理研究的重要内容,由于斑点代表的是一个区域,相比于单纯的角点,它的稳定性要好,抗噪声能力要强。可作为局部特征中的一个重要特例,斑点在图像配准和立体视觉中充当着重要的角色。

1、利用高斯拉普拉斯(Laplace of Guassian,LoG)算子检测图像斑点是一种十分常用的方法。

注意:图像与某一个二维函数进行卷积运算,实际就是求取图像与这一函数的相似性。

2、DoH斑点

图像像素点的二阶微分Hessian矩阵的行列式DoH(Determinant of Hessian)的值同样也反映了图像局部的结构信息。它对图像中细长结构的斑点具有良好的抑制作用。

第一步:使用不同的δ生成模板,并对图像进行卷积运算;

第二步:在图像的位置空间和尺度空间搜索DoH响应的峰值。

五、角点检测

在图像中,可从两个不同的方向去定义角点:角点是两个边缘的交点;角点是领域内具有两个方向的特征点。角点所在的领域通常也是图像中稳定的、信息丰富的区域。

1、Harris角点

图像Harris角点的检测算法实现步骤归纳为:计算图像I(x,y)在x和y两个方向的梯度Ix、Iy

计算图像两个方向梯度的乘积Ix*Ix,Ix*Iy,Iy*Iy

使用高斯函数对这三个乘积进行高斯加权,生成矩阵M的元素A,B,C,其中M=[A   B

                                                                                                                                                                                                         B   C]                   

计算每个像元的Harris响应值R,并对小于某一阈值的R置零: R = { R: detM- a(tranceM)*(tranceM)< t}

在3*3或5*5的领域内进行非极大值抑制,局部极大值点即为图像中的角点。

在MATLAB中,可以调用C = cornermetric(I,‘Harris’)来检测图像的Harris角点特征,其中,I为输入的灰度图像矩阵;c为角点量度矩阵,用来探测图像中的角点信息,并与I同尺寸,C的值越大表示图像I中的像素越有可能是一个角点。

六、尺度不变特征提取

1、SIFT特征提取

尺度不变特征变换(Scale Invariant Feature Transform,SIFT)是一种图像特征提取与描述算法。SIFT算法由David.G.Lowe于1999年提出并在2004年进行了完善总结。SIFT算法可以处理两幅图像之间发生平移、旋转、尺度变化、光照变化情况下的特征匹配问题,并能在一定程度上对视角变化、仿射变化也具备较为稳定的特征匹配能力。

基本原理与具体实现步骤:

整个过程主要分为四个步骤。

(1)尺度空间峰值选择(Scale space peak selection), 这一步的目的是在尺度空间中选择选择潜在的满足尺度不变性和旋转不变性的关键点(或者称为兴趣点)。

(2)关键点定位(key point localization): 这一步的目的就是精确定位出特征关键点的位置, 涉及到剔除伪关键点。

(3)方向分配(orientation assignment): 这一步的目的就是基于关键点的局部梯度方向,给每个相应的关键点分配方向(Assign orientation to key points)。

(4)关键点描述(Key Point descriptor): 此步骤的目的就是对于每个关键点, 用一个高维度(high dimensional vector,128 维的向量)的向量去描述每个关键点。

                                                                     
0 0
原创粉丝点击