图中矩阵分别为二维原图像素矩阵,二维的图像滤波矩阵,以及最后滤波后的新像素图。对于原图像的每一个像素点,计算它的领域像素和滤波器矩阵的对应元素的乘积,然后加起来,作为当前中心像素位置的值,这样就完成了滤波的过程了。
平滑滤波包括平均滤波、高斯滤波、中值滤波等方法,其中高斯滤波最为常用。
平均滤波:输出像素值是核窗口内像素值的均值
高斯滤波:将输入数组的每一个像素点与高斯内核卷积,将卷积和当作输出像素值
中值滤波:将图像的每个像素用邻域 (以当前像素为中心的正方形区域)像素的中值代替
边缘是图像上灰度变化最明显的地方,传统边缘检测利用此特点,对图像各像素点进行求微分或二阶微分来定位边缘像素点。由灰度变化特点,可将边缘类型分为阶梯状、脉冲状和屋顶状三种。对于阶梯状,图像边缘点对应一阶微分图像的峰值和二阶微分图像的零交叉处;对于脉冲状和屋顶状边缘,边缘点对应一阶导数的零交叉和二阶导数的峰值。
边缘检测算子是利用图像边缘的突变性质来检测边缘的。主要分为两种类型:一种是以一阶导数为基础的边缘检测算子,通过计算图像的梯度值来检测图像边缘,如:Sobel算子;一种是以二阶导数为基础的边缘检测算子,通过寻求二阶导数中的过零点来检测边缘,如:LOG算子、Canny算子。
Sobel算子是滤波算子的形式,用于提取图像的边缘。对数字图像{f(i,j)}的每个像素,考察它上、下、左、右四邻域灰度值的加权差,与之接近的邻域的权最大。
Sobel算子在空间上容易实现,能平滑噪声,可提供精确的边缘方向信息,但也会检测出伪边缘,使得定位边缘精度较低。
LOG算子是利用图像信噪比得到检测边缘的最优滤波器。首先,通过高斯函数对图像进行低通平滑滤波;然后通过Laplace算子进行高通滤波,最后由二阶导数零交叉点检测图像的边缘。
LOG算子的特点是既可平滑图像又可降低噪声,又因为平滑使得边缘延展,所以边缘点一般为具有局部梯度最大值的点。这可以通过二阶导数的零交叉点来实现。
Canny边缘检测算法实质是先用高斯函数作平滑运算,然后用一阶微分极大值定位边缘点。因为二阶导数过零点对应一阶导数的极大值和极小值。因此,强边缘和弱边缘都是二阶导数过零点。用两个阈值分别检测强边缘和弱边缘,当强边缘和弱边缘相连时,弱边缘被输出。
Canny算子去噪能力强,且能在噪声和边缘检测间取得较好的平衡,能够检测到真正的弱边缘。但它也容易平滑掉一些边缘信息。Canny算子核心优点为:边缘可自动连通。
灰度直方图是灰度级的函数,描述的是图像中每种灰度级像素的个数,反映图像中每种灰度出现的频率。横坐标是灰度级,纵坐标是灰度级出现的频率。
大津算法简介:
大津法是一种确定图像二值化分割阈值的算法,又称最大类间方差法。它是按图像的灰度特性,将图像分成背景和前景两部分。因方差是灰度分布均匀性的一种度量,背景和前景之间的类间方差越大,说明构成图像的两部分的差别越大,当部分前景错分为背景或部分背景错分为前景都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。
大津算法原理:
对于图像 I(x,y),前景(即目标)和背景的分割阈值记作 T,属于前景的像素点数占整幅图像的比例记为 ω0,平均灰度为 μ0;背景像素点数占整幅图像的比例为 ω1,平均灰度为 μ1;整幅图像的平均灰度记为μ,类间方差记为g。
假设图像大小为M×N,图像中像素的灰度值小于阈值 T 的像素个数为 N0,像素灰度大于阈值T的像素个数为 N1,那么:
ω0=N0/ M×N (1)
ω1=N1/ M×N (2)
N0+N1=M×N (3)
ω0+ω1=1 (4)
μ=ω0*μ0+ω1*μ1 (5)
g=ω0(μ0-μ)^2+ω1(μ1-μ)^2 (6)
g=ω0ω1(μ0-μ1)^2 (7)
采用遍历的方法使得类间方差g最大的阈值T,即为所求。Ostu方法可以形象地理解为:求取直方图有两个峰值的图像中那两个峰值之间的低谷值 T 。
角点原理来源于人对角点的感性判断,即图像在各个方向灰度有明显变化。算法的核心是利用局部窗口在图像上进行移动,判断灰度是否发生较大的变化。如图,在各个方向上移动这个特征的小窗口,如果窗口内区域的灰度发生了较大的变化,那么就认为在窗口内遇到了角点;如果窗口内图像的灰度没有发生变化,那么窗口内就不存在角点;如果窗口在某一个方向移动时,窗口内图像的灰度发生了较大的变化,而在另一些方向上没有发生变化,那么,窗口内的图像可能就是一条直线的线段。
根据算法思想,构建数学模型,计算移动窗口的的灰度差值。为了减小计算量,利用泰勒级数进行简化公式:
上图中W函数表示窗口函数,M矩阵为偏导数矩阵。对于矩阵可以进行对称矩阵的变化,假设利用两个特征值进行替代,其几何含义类似下图中的表达。在几何模型中通过判断两个特征值的大小,来判定像素的属性。
M为梯度的协方差矩阵,在实际应用中为了能够更好的编程,定义了角点响应函数R,通过判定R大小来判断像素是否为角点。R取决于M的特征值,对于角点|R|很大,平坦的区域|R|很小,边缘的R为负值。
Hough变换思想为:在原始图像坐标系下的一个点对应了参数坐标系中的一条直线,同样参数坐标系的一条直线对应了原始坐标系下的一个点,然后,原始坐标系下呈现直线的所有点,它们的斜率和截距是相同的,所以它们在参数坐标系下对应于同一个点。这样在将原始坐标系下的各个点投影到参数坐标系下之后,看参数坐标系下有没有聚集点,这样的聚集点就对应了原始坐标系下的直线。
在实际应用中,y=k*x+b形式的直线方程没有办法表示x=c形式的直线(这时候,直线的斜率为无穷大)。所以实际应用中,是采用参数方程p=x*cos(theta)+y*sin(theta)。这样,图像平面上的一个点就对应到参数p---theta平面上的一条曲线上,其它的还是一样。
上图(a)所示为原始的图像空间中一条直线;(b)所示为直角坐标系当中直线过的四个点;(c)所示为这四个点在极坐标参数空间可以表示为过同一点的四条线
为了检测出直角坐标X-Y中由点所构成的直线,可以将极坐标theta-p量化成许多小格。根据直角坐标中每个点的坐标(x,y),在theta = 0-180°内以小格的步长计算各个p值,将对应格计数累加。当直角坐标中全部的点都变换后,对小格进行检验。设置累计阈值T,计数器大于T的小格对应于共线点,其可以用作直线拟合参数。小于T的丢弃不用。
6.
尺度空间理论的基本思想是:在图像信息处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得多尺度下的尺度空间表示序列,对这些序列进行尺度空间主轮廓的提取,并以该主轮廓作为一种特征向量,实现边缘、角点检测和不同分辨率上的特征提取等。
尺度空间方法将传统的单尺度图像信息处理技术纳入尺度不断变化的动态分析框架中,更容易获取图像的本质特征。尺度空间中各尺度图像的模糊程度逐渐变大,能够模拟人在距离目标由近到远时目标在视网膜上的形成过程。
尺度空间满足视觉不变性。该不变性的视觉解释如下:当我们用眼睛观察物体时,一方面当物体所处背景的光照条件变化时,视网膜感知图像的亮度水平和对比度是不同的,因此要求尺度空间算子对图像的分析不受图像的灰度水平和对比度变化的影响,即满足灰度不变性和对比度不变性。另一方面,相对于某一固定坐标系,当观察者和物体之间的相对位置变化时,视网膜所感知的图像的位置、大小、角度和形状是不同的,因此要求尺度空间算子对图像的分析和图像的位置、大小、角度以及仿射变换无关,即满足平移不变性、尺度不变性、欧几里德不变性以及仿射不变性。
Sift特征匹配算法主要包括两个阶段,一个是Sift特征的生成,即从多幅图像中提取对尺度缩放、旋转、亮度变化无关的特征向量;第二阶段是Sift特征向量的匹配。
Sift特征的生成一般包括以下几个步骤:
1.尺度空间的极值检测 搜索所有尺度空间上的图像,通过高斯微分函数来识别潜在的对尺度和选择不变的兴趣点。
2.特征点定位 在每个候选的位置上,通过一个拟合精细模型来确定位置尺度,关键点的选取依据他们的稳定程度。
3.特征方向赋值 基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向,后续的所有操作都是对于关键点的方向、尺度和位置进行变换,从而提供这些特征的不变性。
4.特征点描述 在每个特征点周围的邻域内,在选定的尺度上测量图像的局部梯度,这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变换。
为了使描述符具有旋转不变性,需要利用图像的局部特征为给每一个关键点分配一个基准方向。利用特征点邻域像素的梯度分布特性来确定其方向参数,再利用图像的梯度直方图求取关键点局部结构的稳定方向。找到了特征点,也就可以得到该特征点的尺度σ,也就可以得到特征点所在的尺度图像:
计算以特征点为中心、以3×1.5σ为半径的区域图像的幅角和幅值,每个点L(x,y)的梯度的模m(x,y)以及方向θ(x,y)可通过下面公式求得:
在完成关键点的梯度计算后,使用直方图统计邻域内像素的梯度和方向。梯度直方图将0~360度的方向范围分为36个柱(bins),其中每柱10度。如图所示,直方图的峰值方向代表了关键点的主方向,(为简化,图中只画了八个方向的直方图)。
方向直方图的峰值则代表了该特征点处邻域梯度的方向,以直方图中最大值作为该关键点的主方向。为了增强匹配的鲁棒性,只保留峰值大于主方向峰值80%的方向作为该关键点的辅方向。因此,对于同一梯度值的多个峰值的关键点位置,在相同位置和尺度将会有多个关键点被创建但方向不同。仅有15%的关键点被赋予多个方向,但可以明显的提高关键点匹配的稳定性。实际编程实现中,就是把该关键点复制成多份关键点,并将方向值分别赋给这些复制后的关键点,并且,离散的梯度方向直方图要进行插值拟合处理,来求得更精确的方向角度值。
ORB算子是将FAST特征点的检测方法与BRIEF特征描述结合起来,并在它们原来的基础上做了改进与优化。ORB算法的特征提取是由FAST算法改进的,这里称为oFAST。在使用FAST提取出特征点之后,给其定义一个特征点方向,以此来实现特征点的旋转不变性。ORB算法的特征描述是由BRIEF算法改进的,这里称为rBRIEF。也就是说BRIEF特征描述的基础上加入旋转因子从而改进BRIEF算法。ORB = oFAST + rBRIEF。
图像的特征点可以简单的理解为图像中比较显著显著的点,如轮廓点,较暗区域中的亮点,较亮区域中的暗点等。FAST核心思想就是找出那些卓尔不群的点,即拿一个点跟它周围的点比较,如果它和其中大部分的点都不一样就可以认为它是一个特征点。
FAST具体计算过程:
1. 从图片中选取一个像素点P,下面我们将判断它是否是一个特征点。我们首先把它的密度(即灰度值)设为Ip。
2. 设定一个合适的阙值t :当2个点的灰度值之差的绝对值大于t时,我们认为这2个点不相同。
3. 考虑该像素点周围的16个像素。(见上图)
4. 现在如果这16个点中有连续的n个点都和点不同,那么它就是一个角点。 这里n设定为12。
5. 我们现在提出一个高效的测试,来快速排除一大部分非特征点的点。该测试仅仅检查在位置1、9、5和13四个位置的像素(首先检查1和9,看它们是否和点相同。如果是,再检查5和13)。如果是一个角点,那么上述四个像素点中至少有3个应该和点相同。如果都不满足,那么不可能是一个角点。
得到特征点后我们需要以某种方式描述这些特征点的属性。这些属性的输出我们称之为该特征点的描述子。BRIEF算法的核心思想是在关键点P的周围以一定模式选取N个点对,把这N个点对的比较结果组合起来作为描述子。
具体来讲分为以下几步。
1.以关键点P为圆心,以d为半径做圆O。
2.在圆O内某一模式选取N个点对。这里为方便说明,N=4,实际应用中N可以取512.
假设当前选取的4个点对如上图所示分别标记为:
3.定义操作T
4.分别对已选取的点对进行T操作,将得到的结果进行组合。
假如:
则最终的描述子为:1011