2017-08-07 17:36:14 ling_xiobai 阅读数 38506

今天,刚学了一些规则图形的特征提取,发现了几个好用的函数。请见下文:
我想对下面的图片进行图像内容提取
这里写图片描述
一.载入图像,图像分割
因为是一张彩色图像,所以先进行图像分割,最简单的就是阈值化了,可以直接使用im2bw(),图像分割的其他方法先不展开,下回分析,在这里使用im2bw()函数已经够用

img = imread('图形.jpg');
figure,imshow(img);
img = im2bw(img);%(图像分割)转化为二值图
img = not(img);%把图像想表达的内容变成1
figure,imshow(img);

效果如下:
这里写图片描述
这里写图片描述
最上面那个转化成二值图,变成一个不规则的图形了,应在继续对这个区域做处理,但这不影响我们这篇文章的主题,所以先忽视。

二.使用bwboundaries函数显示图像中目标的边界
bwboundaries函数可以追踪目标的外边界,以及这些目标中孔的边界。它返回:
1.一个元胞数组(B)(补充:元胞数组不同于普通数组,普通数组存放的元素都是一样的数据结构,但元胞数组存储的可以是不同的数据类型,所以元素间不相关)
2.返回一个标号矩阵L,其中每个目标赋予一个标号(下面有示例)
3.返回总目标数N等

[B,L] = bwboundaries(img);
figure,imshow(img);
hold on;
for k = 1:length(B)
    boundary = B{k};
    plot(boundary(:,2),boundary(:,1),'g','LineWidth',2);
end

效果如下:
这里写图片描述

三.标记区域
使用bwlabel标记测试图像中的连续区域(目标),伪彩色化他们,并结合他们的数字标记依次显示他们

[L,N] = bwlabel(img);
img_rgb = label2rgb(L,'hsv',[.5 .5 .5],'shuffle');
figure,imshow(img_rgb);hold on
for k =1:length(B)
    boundary = B{k};
    plot(boundary(:,2),boundary(:,1),'w','LineWidth',2);
    text(boundary(1,2)-11,boundary(1,1)+11,num2str(k),'Color','y','Fontsize',14,'FontWeight','bold');
end

效果图如下:
这里写图片描述

到这里,特征提取基本完成,接下来
四.特征表达
使用regionprops函数对图像中的每个目标提取下面的二值特征
这个函数实在是好用,直接使用它可以统计很多信息,在workspace可以查看。

stats = regionprops(L,'all');%统计的数保留在stats内
temp = zeros(1,N);
for k = 1:N
    %计算thinness ratio(细度比例)
    temp(k) = 4 * pi * stats(k,1).Area / (stats(k,1).Perimeter)^2;
    stats(k,1).ThinnessRatio = temp(k);
    %计算aspect ratio
    temp(k) = (stats(k,1).BoundingBox(3))/(stats(k,1).BoundingBox(4));
    stats(k,1).AspectRatio = temp(k);
end

查看效果:
这里写图片描述
从这里可以查看很多数据,比如Area(面积),Centroid(重心),Eccentricity(偏心率),Perimeter(周长)等等,也可以像我一样,定义thinness ratio(细度比例)等等。

其实做到这里,差不多了,接下来就是分析数据,查看各个图行差距比较大的特征,然后定义阈值来制作分类器。
也可以更清晰地表达画出特征矢量图。以面积和细度比例为例

areas = zeros(1,N);
for k = 1:N
    areas(k) = stats(k).Area;
end
TR = zeros(1,N);

for k = 1: N
    TR(k) = stats(k).ThinnessRatio;
end
cmap = colormap(lines(21));
figure
for k = 1:N
    scatter(areas(k),TR(k),[],cmap(k,:),'filled');
    ylabel('Thinness Ratio'),xlabel('Area');
    hold on
end

效果如下:
这里写图片描述

OK,这次学习就到这里,希望大家多多交流,一起学习,分享知识是一种美德,谢谢观看。
附:
参考书籍:《实用MATLAB图像和视频处理》

2015-10-23 19:15:21 lishanlu136 阅读数 6824

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

一、图像金字塔

在数字图像处理领域,多分辨率金字塔化是图像多尺度表示的主要形式。图像金字塔化一般包括两个步骤:图像经过一个低通滤波器进行平滑;然后对这个平滑图像进行抽样,抽样比例一般在水平和垂直方向都是为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 维的向量)的向量去描述每个关键点。

                                                                     
2014-04-15 10:41:15 Angelahhj 阅读数 4373

图像特征的分类有多种标准,根据特征自身的特点可以分为两类:描述物体外形的形状特征和描述物体灰度变换的纹理特征。根据特征提取所采用的方法的不同又可以分为统计特征和结构(句法)特征。特征选取的标准是,1)易提取;2)稳定性;3)具有区分度。

 

统计特征提取的方法有哪些?

直方图,在直方图基础上衍生出来的一些其他的方法,如均值、方差、熵、矩等;

灰度共生矩阵;

 

图像特征提取一般提取三个方面的特征,即颜色、纹理、形状。

 

颜色特征:

相对于RGB空间来说,HSV空间对光照(和噪声)鲁棒性好,所以将RGB转成HSV。根据HSV三个分量的范围,将颜色空间分成若干个color bins,统计颜色直方图。

Hhue)色彩,又称为色调,是指色彩的相貌,与色彩明暗无关;

SSaturation)饱和度,是色彩纯与不纯的分别;

VValue)亮度,是指色彩的明暗程度、光度的高低,越接近白色亮度越高。

但是颜色直方图并没有反映颜色空间分布的信息,也没有表达出图像中物体的形状。

纹理特征:

关于纹理,目前并没有统一的定义。我们可以理解成纹理元的重复,构成了纹理。纹理特征的提取方法可以分成四类:基于统计特征的纹理分析(如灰度共生矩阵、Tamura提出的6个特征的方法)、基于信号处理的分析(如小波变换)、基于结构的纹理分析、基于模型的纹理分析(如数字图像变换法、小波变换)。

1.      基于统计特征的纹理分析

基于统计特征的纹理分析是基于像元及其邻域的灰度属性,研究纹理区域中的统计特征或者像元及其邻域内的灰度的一阶、二阶、高阶统计特征。

应用最广

l  Tamura等从心理学角度定义的六个基本特征,即粗糙度(coarseness)、对比度(contrast)、方向性(directionality)、线像度(line likeness)、规则性(regularity)、粗略度(roughness),这是一组与人类视觉特性对应的纹理特征。

l  Amadasun等定义的基于邻域灰度差别矩阵的纹理特征,包括稀疏度、繁忙度、纹理粒度等5个特征。

l  Haralick等定义的基于灰度共生矩阵的纹理特征,常用统计量包括角二阶矩、对比度、相关、方差、熵等。

 

2.      基于信号处理的纹理分析

基于信号处理的纹理分析是建立在时域、频域分析与多尺度分析基础之上,对纹理图像中某个区域进行某种变换后,再提取保持相对平稳的特征值。

3.      基于模型的纹理分析

基于模型的纹理分析假设纹理是以某种参数控制的分布模型方式形成的,从纹理图像的实现来估计计算模型参数,以参数为特征或用某种分类策略进行图像分割。参数估计是该方法的核心问题。

4.      基于结构特征的纹理分析

l  句法(syntactic)纹理描述方法

l  数学形态学方法

适合周期性好的纹理,比如棋盘、布纹

使用范围较窄

 

 

形状特征:

形状特征主要包括基于边缘的特征和基于区域的特征。提取边缘特征,首先通过SoberCanny等边缘检测算子得到边缘,再计算链码、边缘梯度直方图等特征。但是这种方法有一定的缺陷,边缘信息是很不稳定的信息,内容相似的图片在边缘形状的视觉效果上也可能会存在很大的差异。基于区域的特征提取方法包括傅里叶变换、不变矩等,这种方法对图像的平移、旋转、伸缩具有不变性。

基于边缘特征的一种方法是检测边缘,得到角点,也就得到了物体的大致轮廓,然后计算相邻角点的n阶矩。

 

 

2017-06-04 16:58:11 coming_is_winter 阅读数 10171

图像处理之特征提取(二)之LBP特征简单梳理


  LBPLocal Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子,具有多分辨率、灰度尺度不变、旋转不变等特性。主要用于特征提取中的纹理提取。
  纹理是个什么概念呢?具体定义为:泛指物体面上的花纹或线条,是物体上呈现的线形纹路。在图像处理中一般理解也就是灰度变化引起的某些特征反应。具体深一步了解:ChenLee_1 ,http://blog.csdn.net/carson2005/article/details/44676281,纹理特征简介
  总体来讲LBP特征提取及算法比较好理解,对于其整体性认识与理解请移步:
       zouxy09,http://blog.csdn.net/zouxy09/article/details/7929531,目标检测的图像特征提取之(二)LBP特征
  老子今晚不加班,http://blog.csdn.net/hqh45/article/details/24501097,LBP特征理解
  其中涉及原理步骤算法讲解的很清楚,这里不再赘述,这里把其中几点重点介绍一下:

  一、灰度不变性

  
图1
以原始的LBP3*3的局部区域为例,最后编码形成的01111100八位码体现的只是邻域对于中心像素差值的相对量,像素值本身的大小体现出来,所以这里你可以想象一下,把一幅灰度图的所有像素对应加上一个常数C,最后得出的图像LBP特征码是一样的,常数C在局部像素差值中已经消掉了。这里联系一下HOG特征,最后的梯度值是不是也是灰度不变的?可以思考一下。

二、支持多分辨率  

  LBP算子在每个像素点都可以得到一个LBP“编码”,那么,对一幅图像(记录的是每个像素点的灰度值)提取其原始的LBP算子之后,得到的原始LBP特征依然是“一幅图片”(记录的是每个像素点的LBP值)。

图2

  在圆形LBP中只要不断改变P和R的大小(即图像处理中常用的所谓“窗口大小”的概念),即可以让LBP具有多分辨率识别的特性。这句话看起来没有什么问题,但是仔细想却抓不住其中的具体原理,变换P,R就可以提取在多分辨率中适用的LBP特征?这里的前提是某个特征存在于连续的一个局部空间内,举个例子,某个特征存在于R∈(x,y)的区间,变换R可以提取不同分辨率下的同一特征,假设某个特征只存在于R=x的一个圆上,你变换个R就肯定提取不到对应的特征了,不知表述清楚没?但这是特殊情况,一般特征存在于不可能是单个像素宽度或长度级别。(这一块还是有待进一步学习)。最后的实验结论是具有多分辨率特性是成立的,处理单张图片,对应RP取(2,8)(3,16)(4,24)三组数据,结果图3所示,可以看到纹理的细腻程度不同。一个自我理解无具体依据的推断:LBP中PR效果类似于SIFT中σ,最后造成图像影响就是模糊的效果,达到多分辨率提取特征的目的。这里说是多分辨率而不是尺度不变,因为最后检测时根据简单几组PR提取的对应LBP特征还是只适用于不同PR对应的几组固定的具体大小图像,而没有达到对于所有大小图像适用的尺度不变特性。


图3

三、等价模式

  有一类模式在图像中出现的频率及其高,这类模式就是等价模式,它们都有一个特性,就是黑白跳变数量都小于等于2。另外我们也可以推出,在P邻域中,等价模式的个数U为:U=P*(P-1)+2。
   上面这句话意思主要是由于PR的增加,LBP码的长度对应增加,对应的码的数量呈指数增长,2^P次个,不利于计算,找一种方法将编码数量降低一点。
  重点U=P*(P-1)+2,这个东东是怎么来的?具体公式啥的没找到,感觉应该存在比较简单的推导方法,这里的方法比较笨。  

  编码由01组成,这里单独拿出0来计算,怎样保证0/1之间的跳变满足≤2呢?一种情况所有的0都在编码中聚在一起(设为情况1),如100011,110001这种,另一种是0分开两拨,但只能存在于编码的最左端与最右端(设为情况2),如011100,001110这种,其余的(010110,001011)跳变次数都大于2了。设定P为偶数。为了表述方便表后半部分取P=4示例。


图4

  等价模式这里的跳变次数为≤2,,变成3,4等可不可以呢(?)?最后实验证明(这是个统计量?还是公式计算量?):尽管等价模式(≤2)只占了全部模式的一小部分,但表明这一小部分等价模式能够刻画90%以上的纹理特征。这里其实可以简单想象一下,在一个LBP局域中跳变1,2次是正常的,假设跳变次数太多,也就是0/1之间转换的太快,局域内就成了黑白相间的噪声了,体现不出来纹理。


参考文献:

部分上已给出。

迈克老狼2012,http://www.cnblogs.com/mikewolf2002/p/3438698.html,,  (里面包含LBP特征提取opencv源码)    OpenCV学习(39) OpenCV中的LBP图像








2019-06-19 21:01:41 Aoman_Hao 阅读数 739

LOG,HOG,DOG微分算子在近圆的斑点检测方面效果很好

HOG特征

https://blog.csdn.net/coming_is_winter/article/details/72850511
https://blog.csdn.net/zouxy09/article/details/7929348/

总结:Dalal提出的Hog特征提取的过程:把样本图像分割为若干个像素的单元(cell),把梯度方向平均划分为9个区间(bin),在每个单元里面对所有像素的梯度方向在各个方向区间进行直方图统计,得到一个9维的特征向量,每相邻的4个单元构成一个块(block),把一个块内的特征向量联起来得到36维的特征向量,用块对样本图像进行扫描,扫描步长为一个单元。最后将所有块的特征串联起来,就得到了人体的特征。

例如,对于64*128的图像而言,每16*16的像素组成一个cell,每2*2个cell组成一个块,因为每个cell有9个特征,所以每个块内有4*9=36个特征,以8个像素为步长,那么,水平方向将有7个扫描窗口,垂直方向将有15个扫描窗口。也就是说,64*128的图片,总共有36*7*15=3780个特征。

特征总数: 一个cell有9个特征(9个梯度方向),每个特征cell块里有 num*9个特征,步长像素规格:(列像素数-步长)/步长*(行像素数-步长)/步长,
总特征数:(列像素数-步长)/步长*(行像素数-步长)/步长*num*9

LOG特征

图像与某一个二维函数进行卷积运算实际就是求取图像与这一函数的相似性。同理,图像与高斯拉普拉斯函数的卷积实际就是求取图像与高斯拉普拉斯函数的相似性。当图像中的斑点尺寸与高斯拉普拉斯函数的形状趋近一致时,图像的拉普拉斯响应达到最大。

Laplace可以用来检测图像中的局部极值点,但是对噪声敏感,所以在我们对图像进行Laplace卷积之前,我们用一个高斯低通滤波对图像进行卷积,目标是去除图像中的噪声点

先对图像f(x,y)用方差为σ的高斯核进行高斯滤波,去除图像中的噪点。

L(x,y;σ)=f(x,y)∗G(x,y;σ)
G(x,y;σ)高斯核
然后对图像的拉普拉斯图像则为:

∇^2=(∂^2L/∂^x2)+(∂^2L/∂y^2)
而实际上有下面等式:

∇^2[G(x,y)∗f(x,y)]=∇^2[G(x,y)]∗f(x,y)

我们可以先求高斯核的拉普拉斯算子,再对图像进行卷积

使用LoG虽然能较好的检测到图像中的特征点,但是其运算量过大,通常可使用DoG(差分高斯,Difference of Gaussina)来近似计算LoG

Haar特征

Haar特征分为三类:边缘特征、线性特征、中心特征和对角线特征,组合成特征模板。特征模板内有白色和黑色两种矩形,并定义该模板的特征值为

白色矩形像素和减去黑色矩形像素和

Haar-like特征

https://blog.csdn.net/zouxy09/article/details/7929570

积分图就是只遍历一次图像就可以求出图像中所有区域像素和的快速算法,大大的提高了图像特征值计算的效率。

       积分图主要的思想是将图像从起点开始到各个点所形成的矩形区域像素之和作为一个数组的元素保存在内存中,当要计算某个区域的像素和时可以直接索引数组的元素,不用重新计算这个区域的像素和,从而加快了计算(这有个相应的称呼,叫做动态规划算法)。积分图能够在多种尺度下,使用相同的时间(常数时间)来计算不同的特征,因此大大提高了检测速度。

       我们来看看它是怎么做到的。

       积分图是一种能够描述全局信息的矩阵表示方法。积分图的构造方式是位置(i,j)处的值ii(i,j)是原图像(i,j)左上角方向所有像素的和:

归一化图像

i¯(x,y)=(i(x,y)−μ)/cσ
公式中i¯(x,y)表示归一化之后的图像,而i(x,y)表示原始的图像,其中μ表示图像的均值,而σ表示图像的标准差
σ2=(1/N)∑x2−μ2   2是平方

SIFT特征

SIFT的全称是Scale Invariant Feature Transform,尺度不变特征变换(物体怎么转,人都能识别)。SIFT特征对旋转、尺度缩放、亮度变化等保持不变性,是一种非常稳定的局部特征。

有4个主要步骤

1、尺度空间的极值检测 搜索所有尺度空间上的图像,通过高斯微分函数来识别潜在的对尺度和选择不变的兴趣点。

$$$L(x,y,σ)=G(x,y,σ)∗I(x,y)$

为了有效的在尺度空间检测到稳定的关键点,提出了高斯差分尺度空间(DOG scale-space)。利用不同尺度的高斯差分核与图像卷积生成。构造高斯差分尺度空间(DOG scale-space): 
$$D(x,y,σ)=(G(x,y,kσ)−G(x,y,σ))∗I(x,y)=L(x,y,kσ)−L(x,y,σ)$$

σ 是尺度坐标。σ大小决定图像的平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。大的σ值对应粗糙尺度(低分辨率),反之,对应精细尺度(高分辨率)。

对于一幅图像I,建立其在不同尺度(scale)的图像,后面每个采样都是原图的1/4倍。

每个点都要与邻域的点,上下相邻尺度的点做比较(9+8+9)26个点作比较(以确保在尺度空间和二维图像空间都检测到极值点)。一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点

2、特征点定位 在每个候选的位置上,通过一个拟合精细模型来确定位置尺度,关键点的选取依据他们的稳定程度。

拟和三维二次函数以精确确定关键点的位置和尺度,同时去除低对比度的关键点和不稳定的边缘响应点(因为DoG算子会产生较强的边缘响应),以增强匹配稳定性、提高抗噪声能力

用Harris Corner检测
参考文章

3、特征方向赋值 基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向,后续的所有操作都是对于关键点的方向、尺度和位置进行变换,从而提供这些特征的不变性。

每个特征点计算一个方向,依照这个方向做进一步的计算, *利用关键点邻域像素的梯度方向分布特性为每个关键点指定方向参数,使算子具备旋转不变性。

m(x,y)=(L(x+1,y)L(x1,y))2+(L(x,y+1)L(x,y1))2m(x,y)=(L(x+1,y)−L(x−1,y))2+(L(x,y+1)−L(x,y−1))2
θ(x,y)=atan2(L(x,y+1)L(x,y1)L(x+1,y)L(x1,y)√θ(x,y)=atan2(L(x,y+1)−L(x,y−1)L(x+1,y)−L(x−1,y)
每个关键点有三个信息:位置、所处尺度、方向。由此可以确定一个SIFT特征区域。
直方图
4、特征点描述 在每个特征点周围的邻域内,在选定的尺度上测量图像的局部梯度,这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变换。

高斯函数是唯一可行的尺度空间核

尺度空间

多分辨率图像金字塔:

1、对原始图像进行平滑
2、对处理后的图像进行降采样(通常是水平、垂直方向的1/2)降采样后得到一系列不断尺寸缩小的图像。显然,一个传统的金字塔中,每一层的图像是其上一层图像长、高的各一半。多分辨率的图像金字塔虽然生成简单,但其本质是降采样,图像的局部特征则难以保持,也就是无法保持特征的尺度不变性。

高斯尺度空间:

图像的模糊程度来模拟人在距离物体由远到近时物体在视网膜上成像过程,距离物体越近其尺寸越大图像也越模糊,这就是高斯尺度空间,使用不同的参数模糊图像(分辨率不变)

图像和高斯函数进行卷积运算,图像模糊,使用不同的“高斯核”可得到不同模糊程度的图像

L(x,y,σ)=G(x,y,σ)∗I(x,y)

其中G(x,y,σ)是高斯核函数
G(x,y,σ)=(1/2Πσ^2)e^((x^2+y^2)/(2σ^2))

构建尺度空间的目的是为了检测出在不同的尺度下都存在的特征点,而检测特征点较好的算子是Δ^2G(高斯拉普拉斯,LoG)

DoG特征

使用LoG虽然能较好的检测到图像中的特征点,但是其运算量过大,通常可使用DoG(差分高斯,Difference of Gaussina)来近似计算LoG。

DOG可以看作为LOG的一个近似,但是它比LOG的效率更高。
设k为相邻两个高斯尺度空间的比例因子,则DoG的定义:

D(x,y,σ)=[G(x,y,kσ)−G(x,y,σ)]∗I(x,y)=L(x,y,kσ)−L(x,y,σ)

L(x,y,σ) 是图像的高斯尺度空间
将相邻的两个高斯空间的图像相减就得到了DoG的响应图像

Harris角点特征提取

Harris角点检测是一种基于图像灰度的一阶导数矩阵检测方法。检测器的主要思想是局部自相似性/自相关性,即在某个局部窗口内图像块与在各个方向微小移动后的窗口内图像块的相似性。

1、角点可以是两个边缘的角点;
2、角点是邻域内具有两个主方向的特征点;

人眼对角点的识别通常是在一个局部的小区域或小窗口完成的。如果在各个方向上移动这个特征的小窗口,窗口内区域的灰度发生了较大的变化,那么就认为在窗口内遇到了角点。如果这个特定的窗口在图像各个方向上移动时,窗口内图像的灰度没有发生变化,那么窗口内就不存在角点;如果窗口在某一个方向移动时,窗口内图像的灰度发生了较大的变化,而在另一些方向上没有发生变化,那么,窗口内的图像可能就是一条直线的线段。

xyz=(1+ex)2xyw x^{y^z}=(1+{\rm e}^x)^{-2xy^w}

sqrt()sqrt()

结论:1、增大α的值,将减小角点响应值R,降低角点检测的灵性,减少被检测角点的数量;减小α值,将增大角点响应值R,增加角点检测的灵敏性,增加被检测角点的数量。
2、Harris角点检测算子对亮度和对比度的变化不敏感
3、Harris角点检测算子具有旋转不变性
4、Harris角点检测算子不具有尺度不变性

关于图像特征点提取

博文 来自: sdkdslx
没有更多推荐了,返回首页