图像处理相关知识

本文章仅涉及到这些知识的理解层面,不涉及数学推导和具体实现方法(这些具体的东西现用现学才是最有效的,不然现在学了到时候也会忘)

灰度直方图

1.基本概念

直方图的方法常常应用在灰度图中,在一张灰度图中,每个像素的值都在0(黑色)~255(白色)之间,灰度直方图就是将这张图片中每个灰度值对应的像素数目统计出来做成的一个统计图。

2.灰度直方图的应用

2.1 利用灰度直方图进行动态阈值图像二值化(大津法)

图像的二值化是图像预处理中十分重要的一个部分,简单来说就是给定一个阈值,灰度值大于这个阈值的像素都置为255(白色)小于这个阈值的像素都置为0(黑色)。
二值化在某些场景下可以使用固定阈值,但在另一些应用场景下,固定阈值就不能满足鲁棒性的要求,我们可以利用灰度直方图进行对图片进行动态阈值二值化,最常用的方法就是大津法(OTSU)。
大津法也称为最大类间差算法,它的基本思想如下:
将图像分为背景和前景两部分,在统计学上叫做两个类。方差是灰度分布均匀性的一种度量,背景和前景之间的类间方差越大,说明构成图像的两部分的差别越大,当部分前景错分为背景或部分背景错分为前景都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。

2.2 直方图均衡化

图像的灰度直方图反映了图像的灰度分布,灰度分布过于集中会导致图片看起来没有区分度(糊成一片),均衡化之后会让图片看起来清晰很多,下面是一个典型的例子。在这里插入图片描述
很明显,从灰度直方图可以看出,前三张图片的灰度分布十分集中,看起来就糊成一片。而最后一张是直方图均衡化之后的图片,看起来咖啡豆和背景就能很好地区分开。
直方图均衡化的基本思想:
简单来说就是通过一个非线性的变换,把直方图变成较为均匀的分布。首先把像素统计一遍,再按照原直方图中像素由低到高的顺序把新图的每个像素均匀地对应到0~255的范围内。

2.3区分图像的纹理

通过判断灰度直方图的分布特点,可以提取出图像的纹理特征,这在进行语义分割时很有用。

腐蚀和膨胀

腐蚀和膨胀是针对二值化图片来进行的

膨胀

  1. 概念:膨胀就是求局部最大值。将图片和一个核进行卷积,将这个核中的最大值赋给核的锚点。
  2. 效果:膨胀后的物体更大,膨胀可以消除图片中的“黑洞”
    (注:通常把黑色作为背景,白色作为前景,所以这里的物体指白色)

腐蚀

  1. 概念:腐蚀和膨胀刚好相反,是求局部最小值,将图片和一个核进行卷积,将这个核中的最小值赋给核的锚点。
  2. 作用:腐蚀可以消掉一些白色的噪点

腐蚀和膨胀的作用

  1. 腐蚀和膨胀一起用,可以分割出独立的元素(先腐蚀后膨胀,也称为开运算),或者连接相邻的元素(先膨胀后腐蚀,也称为闭运算)
  2. 寻找图像中的极大值或者极小值区域
  3. 消除图像中的噪声

图像滤波

图像的平滑滤波可以去除图像中的噪声,方便进行后续的处理
,常用的滤波方法有:均值滤波、中值滤波、高斯滤波,其中高斯滤波是效果最好也是最常用的

均值滤波

均值滤波是最简单的滤波器,就是将窗口中像素灰度的平均值作为结果输出给锚点的像素。它是一个低通滤波器。它的核是一个全为1的窗口。

中值滤波

中值滤波是将窗口中像素的中值作为结果输出给锚点的像素。
中值滤波对椒盐噪声有很好的的抑制作用

高斯滤波

高斯滤波是最常用的滤波器,它针对均值滤波的缺点做了改进,给核的不同位置分配不同的权值,越靠近中心锚点的位置权值越大,这样更加合理。以下是高斯滤波器的示意图
在这里插入图片描述

边缘检测

与图片的平滑滤波刚好相反,边缘检测是提取图像中灰度变化剧烈的部分。
常用的边缘检测算子有:Robert、Sobel、LoG、Canny
Robert:是最简单的边缘检测算子,它利用局部查分来寻找边缘。它的定位精度高,但对噪声十分敏感
Sobel:利用一阶微分来进行边缘检测,有类似局部平均的操作,因此具有一定的去噪效果,检测效果比Robert更好。它对灰度渐变和噪声比较多的图片提取效果比较好,同时定位比较准确。
LoG:是一种利用二阶微分来进行边缘检测的算法,先利用高斯平滑滤波对图像进行去噪,再用Laplacian算子来进行计算。它的效果很好,是一种非常常用的边缘提取算子。但它的图像平滑与边缘提取的效果之间是相对立的,需要根据实际情况进行调整。
Canny:Canny算子不是像前几种单纯基于微分的算法,Canny的原理比较复杂。它的提取效果最好,但它由于太过复杂,计算量太大,实时性不好,因此实际应用效果并不是很好。

特征点检测

(本部分内容是前段时间毕设开题时总结的,并且在未来会针对这三种算子做进一步的学习与分析)
常用的特征提取算法有以下三种、SIFT、SURF、ORB

SIFT

SIFT算法的基本步骤

(1) 尺度空间极值检测:建立一个尺度空间,搜索所有尺度上的图像位置。利用DOG算子来识别潜在的对于尺度和旋转不变的兴趣点。
(2) 关键点定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。
(3) 方向确定:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。
(4) 关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,称为描述子,这种表示允许比较大的局部形状的变形和光照变化。
(5) 特征点匹配:采用欧氏距离来衡量两个特征点之间相似度的大小,并且可以采用一些数据结构来加速运算。

SIFT算法的特点

(1) SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性。
(2) 独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配。
(3) 多量性,即使少数的几个物体也可以产生大量的SIFT特征向量。
(4) 可扩展性,可以很方便的与其他形式的特征向量进行联合。
DOG高斯金字塔
Scale特征描述子

SURF

SURF(Speeded Up Robust Features,加速稳健特征) 是一种稳健的图像识别和描述算法。它是SIFT的高效变种,也是提取尺度不变特征,算法步骤与SIFT算法大致相同,要比SIFT算法更高效。虽然SIFT算法已经被认为是最有效的特征点提取算法,但如果不借助于硬件的加速和专用图像处理器的配合,SIFT算法以现有的计算机仍然很难达到实时的程度。对于需要实时运算的场合,需要在毫秒级完成特征点的搜索、特征矢量生成、特征矢量匹配、目标锁定等工作,SIFT算法就很难满足这种需求。SURF针对SIFT运算效率低的特点,做了一些改进,以提高运算效率。

SURF针对SIFT的改进

(1) 特征点检测是基于Hessian矩阵,依据Hessian矩阵行列式的极值来定位特征点的位置。并且将Hession特征计算与高斯平滑结合在一起,两个操作通过近似处理得到一个核模板。此外,Hessian矩阵还可以用来进行特征点匹配。
(2) 在构建尺度空间时,使用box filter与源图像卷积,而不是使用DoG算子。
(3) SURF使用一阶Haar小波在x、y两个方向的响应作为构建特征向量的分布信息。
SURF算法的基本步骤:
(1) 尺度空间极值检测:建立一个尺度空间,搜索所有尺度上的图像位置。利用Hessian算子来识别潜在的对于尺度和旋转不变的兴趣点。
(2) 关键点定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。
(3) 方向确定:统计特征点圆形邻域内的Harr小波特征。即在60度扇形内,每次将60度扇形区域旋转0.2弧度进行统计,将值最大的那个扇形的方向作为该特征点的主方向。
(4) 关键点描述:沿着特征点主方向周围的邻域内,取4×4个矩形小区域,统计每个小区域的Haar特征,然后每个区域得到一个4维的特征向量。一个特征点共有64维的特征向量作为SURF特征的描述子。
(5) 特征点匹配:采用欧氏距离来衡量两个特征点之间相似度的大小,并且可以采用一些方法(如快速近邻FLANN)来加速运算。同时,还可以利用Hessian矩阵的迹来辅助判断。
Harr小波特征描述子
盒子滤波器

ORB

ORB(Oriented FAST and Rotated BRIE) 特征检测算法是在著名的FAST特征检测和BRIEF特征描述子的基础上提出来的,其运行时间远远优于SIFT和SURF,可应用于实时性特征检测。ORB特征检测具有尺度和旋转不变性,对于噪声及其透视变换也具有不变性,良好的性能使得利用ORB进行特征描述的应用场景十分广泛。
ORB算法主要包含FAST(Features From Accelerated Segment Test)算法和BRIEF(Binary Robust IndependentElementary Features)特征描述子两大部分,并在此基础上针对它们的缺点做了一些改进。

FAST角点检测

FAST算法的主要思想为:如果一个像素与周围邻域的像素差别较大(过亮或者过暗),那么可以认为该像素是一个角点。和其他的特征点提取算法相比,FAST算法只需要比较像素和其邻域像素的灰度值大小,十分便捷。
FAST算法的一般步骤为:

  1. 在图像中选取一个像素p,假设其灰度值为Ip
  2. 设定一个合适的阈值T
  3. 考虑以该像素点为中心的一个半径等于3像素的离散化的Bresenham圆,这个圆的边界上有16个像素
  4. 如果在这个大小为16个像素的圆上有n个连续的像素点,它们的像素值要么都比Ip+t大,要么都比Ip−t小,那么它就是一个角点[18]。
    FAST角点检测

BRIEF特征描述子

BRIEF是一种二进制的描述子,其描述向量是0和1表示的二进制串。0和1表示特征点邻域内两个像素(p和q)灰度值的大小:如果p比q大则选择1,反之就取0。在特征点的周围随机选择128对这样的p和q的像素对,就得到了128维由0,1组成的向量,也就是BRIEF特征描述子[19]。
FAST特征提取算法运算效率极高,但也付出了一定的代价,具有一些缺点,针对这些缺点,ORB做了如下改进:

  1. 使用非最大值抑制,在一定区域内仅仅保留响应极大值的角点,避免FAST提取到的角点过于集中。
  2. FAST提取到的角点数量过多且不是很稳定,ORB中可以指定需要提取到的角点的数量N,然后对FAST提取到的角点分别计算Harris响应值,选择前N个具有最大响应值的角点作为最终提取到的特征点集合。
  3. FAST提取到的角点不具有尺度信息,在ORB中使用图像金字塔,并且在每一层金字塔上检测角点,以此来保持尺度的不变性。
  4. FAST提取到的角点不具有方向信息,在ORB中使用灰度质心法(Intensity Centroid)来保持特征的旋转不变性[20]。

猜你喜欢

转载自blog.csdn.net/dada19980122/article/details/111147328
今日推荐