图像处理各种变换、运算、算法的简明原理、作用和应用场合

2022-08-07 09:27:21

1 图像仿射变换
原理:仿射变换就是图像的旋转、平移和缩放操作的统称,一个仿射变换可以表示为线性变换和平移变换的叠加。仿射变换的数学表示是先乘以一个线性变换矩阵再加上一个平移向量。
应用:图像的旋转操作。

2 图像的透视变换
原理:透视变换是指按照物体成像投影规律对图像进行变换。
应用:
见博文:https://blog.csdn.net/qq_41498261/article/details/103228062

3 图像金字塔
原理:图像金字塔是通过多个分辨率表示图像的一种有效且简单的结构。一个图像金字塔是一系列以金字塔形状排列的分辨率逐步降低的图像。图像金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率表示。
应用:
主要解决图像分析尺度问题的,许多图像分析任务,包括超分辨、目标检测等等都是一种很重要的手段。更多的是构造特征时:1、适应尺度变化。2、增加特征维度,构造高维特征。
具体的如:
sift算法;
在from coarse to fine由粗到精的搜索策略中都可以用金字塔;
optical flow光流法;
slam当中的姿态估计;
在多分辨率融合算法中也用到了图像金字塔。

4 直方图
原理:直方图是图像处理中非常重要的像素统计工具,它不再表征任何的图像纹理信息,而是表示图像像素的统计特性。由于同一物体无论是旋转还是平移,在图像中都有相同的灰度值,因此直方图具有平移不变性、缩放不变性等优点。
应用:
在特定的的条件下,可以利用图像的直方图特征进行图像的识别,例如对数字、字母的识别。

4 直方图匹配(直方图规定化)
使原始图像的直方图匹配特定的直方图,使图像具有某个特征的直方图,即根据直方图去调整图像。

5 直方图反向投影
原理和作用见我写的博文:
https://blog.csdn.net/michaelhan3/article/details/73550643
上面这篇博文是别人转载我的博文,奇怪的是我在我的博客中找不到这篇博文了,纳闷~

6 图像模板匹配
原理:我们在图像中寻找模板图像时,可以直接通过比较图像像素的形式来搜索是否存在相同的内容,这种通过比较像素灰度值来寻找相同内容的方法叫作图像模板匹配。

7 图像滤波
由于采集图像的设备可能会受到各种噪声和意外的干扰,另外图像信号的传输过程中也有可能产生噪声,因此去除图像中的噪声是图像预处理中非常重要的步骤。图像滤波是去除图像噪声的重要方式。
图像滤波通常分为线性滤波和非线性滤波。
常见的线性滤波有:均值滤波、方框滤波、高斯滤波
常见的非线性滤波有:中值滤波、双边滤波

7-1 可分离滤波
实际上就是在OpenCV按照OpenCV规定的框架自己定义滤波函数。

8 图像的边缘检测
图像中物体的边缘含有重要的信息,提取图像中的边缘信息对于分析图像中的内容、实现图像中物体的分割、定位等具有重要作用。目前,图像边缘提取算法已经非常成熟。
常见的边缘检测算子和算法有:Sobel算子、Scharr算子、Laplacian算子、Canny算法,下而分别简介。
Sobel算子—Sobel算子是通过离散微分方法求取图像边缘的边缘检测算子,除此之外,Sobel算子还结合了高斯平滑滤波的思想,将边缘检测滤波器的大小由ksize×1改进为ksize×ksize,提高了对平缓区域的边缘响应。有时我们并不需要提取图像中的边缘,而是希望能得到提取图像边缘的滤波器,并对滤波器进行修改以提升边缘检测的效果。OpenCV4提供了getDerivKernels()函数,通过该函数可以得到不同大小、不同阶次的Sobel算子和Scharr算子的滤波器。
Scharr算子—虽然Sobel算子可以有效地提取图像边缘,但是对图像中较微弱的边缘,其提取效果较差。因此,为了能够有效地提取出较弱的边缘,需要将像素灰度值间的差距增大,因此引入了Scharr算子。Scharr算子是Sobel算子的增强版本,两者之间在检测图像边缘的原理和使用方式上相同。有时我们并不需要提取图像中的边缘,而是希望能得到提取图像边缘的滤波器,并对滤波器进行修改以提升边缘检测的效果。OpenCV4提供了getDerivKernels()函数,通过该函数可以得到不同大小、不同阶次的Sobel算子和Scharr算子的滤波器。
Laplacian算子—Sobel算子和Scharr算子都具有方向性,即需要分别求取方向x方向的边缘和y方向的边缘,之后将两个方向的边缘综合得到图像的整体边缘。Laplacian算子具有各方向同性的特点,能够对任意方向的边缘进行提取。因此,使用Laplacian算子提取边缘不需要分别检测x方向和y方向的边缘,只需要一次边缘检测。Laplacian算子是一种二阶导数算子,对噪声比较敏感,因此常需要配合高斯滤波使用。
Canny算法—Canny边缘检测算法是目前最优秀的边缘检测算法之一,该算法不容易受到噪声的影响,能够识别图像的中弱边缘和强边缘,并结合强弱边缘的位置关系综合给出图像整体的边缘信息。

9 图像的形态学操作
有些时候,相比于图像中物体的纹理信息,物体的形状与位置信息我们更感兴趣,因此可以将物体的内部信息忽略,以形态为基础对图像进行描述和分析。图像形态学在图像处理中具有广泛的应用,主要用于从图像中提取对于表达和描述区域有意义的图像分量,以便使后续的识别工作能够抓住对象最本质的形状特性,例如边界、连通域等。

9-1 图像中的连通域
图像中的连通域是指由图像中具有相同像素值并且位置相邻的像素组成的区域,连通域分析是指在图像中寻找出彼此互相独立的通域并将其标记出来,提取图像中不同的连通域是图像处理中较常用的方法,它可以用于车牌识别、文字识别、目标检测等,一般情况下,一个连通域内只包含一个像素值,因此为了防止像素值波动对提取不同连通域的影响,连通域分析常处理的是二值化后的图像。

9-2 图像的腐蚀和膨胀
这个不用多说,效果就如它们的名字,网站随便一查,一大堆效果图。
图像的腐蚀操作可以将细小的噪声区域去除,图像的膨胀操作可以扩充每一个区域的面积。

9-3 图像的开运算、闭运算、形态学梯度运算、顶帽运算、黑帽运算、击中击不中变换
图像的腐蚀操作可以将细小的噪声区域去除,但是会将图像主要区域的面积缩小,造成主要区域的形状发生改变;图像的膨胀操作可以扩充每一个区域的面积,填充较小的空洞,但会增加噪声的面积,根据两者的特性,将图像腐蚀和膨胀适当结合,便可以既去除图像中的噪声,又不缩小图像中主要区域的面积;既填充了较小的空洞,又不增加噪声所占的面积。这样,便有了图像的开运算、闭运算、形态学梯度运算、顶帽运算、黑帽运算、击中击不中变换等运算。下面分别介绍。
开运算—开运算是图像腐蚀和膨胀操作的结合,它先对图像进行腐蚀,消除图像中的噪声和较小的连通域,之后通过膨胀运算弥补较大的连通域中腐蚀造成的面积减小。开运算可以去除图像中的噪声,消除较小的连通域,保留较大的连通域。同时,开运算能够在两个物体纤细的连接处将它们分离,并且在不明显改变较大连通域的面积的情况下平滑连通域的边界。开运算还可放大裂缝或者局部低亮度的区域。
闭运算—闭运算也是图像腐蚀和膨胀操作的结合,它先对图像进行膨胀以填充连通域内的小型空洞,扩大连通域的边界,连接邻近的两个连通域,之后通过腐蚀运算减少由膨胀运算引起的的连通域边界的扩大及面积的增加。闭运算可以去除连通域的小型空洞,平滑物体轮廓,连接两个邻近的连通域。
形态学梯度运算—形态学梯度可以描述目标的边界,根据图像腐蚀和膨胀与原图之间的关系计算而得到目标的边界。
顶帽运算—顶帽运算先对图像进行开运算,之后从原图像中减去开运算的结果。由于开运算可放大裂缝或者局部低亮度的区域,因此从原图像中减去开运算后的结图,得到的顶帽运算结果突出了比原图像轮郭周围的区域更明亮的区域。
黑帽运算—与顶帽运算相对应,黑帽是原图像与闭运算结果之间的差值。可用来分离比邻近点暗一些的斑块。
击中击不中变换—击中击不中变换是比图像腐蚀要求苛刻的一种形态学操作。图像腐蚀只需要图像能够将结构元素中所有非零元素包含,但是击中击不中变换要求在原图像中存在与结构元素一模一样的结构。提问:什么是结构元素?其实就是我之前发的博文中提到的核算子啦!之前的博文的链接:https://blog.csdn.net/wenhao_ir/article/details/51691410

10 图像细化(骨架化、中轴变换)
图像细化是将图像中的线条从多像素宽度减少到单位像素宽度的过程,有时又称为“骨架化”或者“中轴变换”。图像细化是模式识别领域重要的处理步骤之一,常用在文字识别中。

11 目标检测
图像中物体的形状信息是较明显和重要的信息,可以通过对形状的识别实现对物体的检测,因此检测图像中某些规则的形状是图像处理的重要方法。常见的检测有:直线检测、圆形检测等。

12 轮廓检测
图像轮廓是指图像中对象的边界,是图像目标的外部特征。主要内容有:轮廓的发现与绘制、求轮廓的面积、求轮廓的长度、求轮廓的外接多边形、点到轮廓的距离、凸包检测。
这里说下什么是点到轮廓的距离:我们通常用这个距离来判断点是在轮廓内还是在轮廓上还是在轮廓外。
再说一下什么凸包?一个典型的就是我们的五指的轮廓,就是一个凸多边形,所以称为凸包。

13 矩
矩是描述图像特征的一种算子,就像之前的直方图一样,也是图像的一种特征。图像的矩被广泛应用于图像检索和识别,以及图像匹配、图像重建、图像压缩及运动图像序列分析等领域。
常见的矩有空间矩、中心矩、Hu矩。值得一提的是:Hu矩具有旋转、平移和缩放不变性,因此,在图像旋转和缩放的情况下,Hu矩具有广泛的应用,比如我们可以用Hu矩进行轮廓匹配。

14 点集拟合
有时我们关注的区域是一些面积较小且数目众多的连通域或者像素,并且这些区域相对集中。此时,如果寻找轮廓并对每个轮廓进行外接多边形逼近,那么结果中会有较多的多边形。为了避免这种情形,我们可以将这些连通域或者像素集合整体看成一个较大的区域。此时,我们可以寻找包围这些区域的规则图像(例如三角形,圆形等),这就是所谓的点集拟合。

15 傅里叶变换
对图像进行频域分析的重要工具。高等数学和信号与系统都有傅里叶变换的详细介绍。

16 图像积分
图像积分主要用于快速计算图像中某些区域像素的平均灰度。在没有图像积分之前,为了计算某个区域内像素的平均灰度值,需要将所有像素值相加,之后除以像素的个数。虽然这种方式的数学原理很简单,但是在程序中运算过程却比较麻烦,因为区域不同时需要重新计算区域内像素值总和,尤其是在同一张图像中计算多个具有重叠区域的平均灰度值时,重叠区域内的像素会被反复使用。积分图像的出现使得每个像素只需要使用一次,这就极大地减少了运算量和运算时间。

17 图像分割
图像分割是指将图像中某一类的像素与其它像素分开,例如在黑白相间的图像中,将黑色和白色分开就是图像分割。常见的图像分割算法有漫水填充法、分水岭法、Grabcut法、Mean-shift法和KMeans法。下面分别介绍。
17-1 漫水填充法—漫水填充法是根据像素灰度值之间的差值寻找相同区域以实现分割的算法。我们可以将图像的灰度值理解成像素的高度,这样一张图像可以看成崎岖不平的地面或者山区,向地面上某一个低洼的地方倾倒一定量的水,水将会掩盖低于某个高度的区域。漫水填充法利用的就是这个原理,其形式也注水相似,因此被形象地称为“漫水”。
17-2 分水岭法—分水岭法与漫水填充法相似,都是模拟水淹过地面或山地的场景,区别是漫水填充法从局部某个像素值进行分割,是一种局部分割算法,而分水岭法从全局出发,需要对全局进行分割。
17-3 Grabcut法—Grabcut法是重要的图像分割算法,它使用高斯混合模型估计目标区域背景和前景。该算法通过迭代的方法解决了能量函数最小化的问题,使得结果具有更高的可靠性。
17-4 Mean-Shift法—Mean-Shift法又称为均值漂移法,是一种基于颜色空间分布的图像分割算法。该算法的输出是一个经过滤色的“分色”图像,其颜色会渐变,并且细纹理会变得平缓。

18 特征点检测
在图像处理中,有时不需要使用物体所有的像素,例如二维码定位、计算二维码尺寸时只需要使用二维码的4个顶占。因此,有时我们需要从图像中提取出能够表示图像特性或者局部特性的像素,这些像素称为角点或者特征点。使用特征点可以极大地减少数据量,提高计算速度。特征点广泛应用于图像处理的多个领域,例如基于特征点的图像匹配、基于特征点的定位和三维重建。
18-1 角点—角点是图像中某些属性较突出的像素,例如像素值最大或者最小的点、线段的端点、孤立的边缘点等。
18-2 特征点—特征点区别于角点的的是,它具有能够唯一描述像素特征的描述子。通常,特征点是由关键点和描述子组成的,例如SIFT特征点、ORB特征点等都需要先计算关键点坐标,之后计算描述子。描述子是用来唯一描述关键点的一串数字,又称为描述符。
18-2-1 SIFT特征点检测—SIFT特征点是图像处理领域中最著名的特征点之一,许多人对其进行改进,衍生出一系列特征点。SIFT特征点之所以备受欢迎是因为它在光照、噪声和旋转等干扰下仍然具有良好的稳定性。要计算SIFT特征点,首先需要构建多尺度高斯金字塔。
18-2-2 SURF特征点检测—虽然SIFT特征点检测具有较高的准确性和稳定性,但是计算速度较慢,无法应用在实时系统中,通常用于离线处理图像。针对这种情况,有人于2006年提出了一种加快SIFT特征点检测的SURF特征点。SIFT特征点通过高斯差分空间作为尺度空间,而SURF特征点直接用方框滤波器逼近高斯差分空间,这种近似的优点是可以借助积分图像轻松地计算出方框滤波器的参数。
18-2-3 即使SURF特征点已经对SIFT进行了改进并提高了计算速度,但是应用在没有GPU的环境中仍然很难保证算法的实时性。ORB特征点以计算速度快而著称,其计算速度可以达到SIFT特征点计算的100倍,达到SURF特征点计算的10倍,因此这些年在计算机视觉中受到广泛关注。

19 特征点匹配
特征点匹配就是在不同的图像中寻找同一个物体的同一个特征点。由于每个特征点都具有标志着唯一身份和特点的描述子,因此特征点匹配其实就是在两幅图像中寻找具有相似描述子的两个特征点。
根据描述子的特点,寻找两个相似描述子的方法也不尽相同,总体可以总结为两类:第一类是计算两个描述子之间的欧氏距离,这种匹配方式包含的特征点有SIFT特征点、SURF特征点等;第二类是计算两个描述子之间的汉明距离,这种匹配方式包含的特征点有ORB特征点、BRISK特征点等。
根据匹配的具体算法,可以分为暴力匹配、FLANN匹配、RANSAC优化特征点匹配等。
暴力匹配—暴力匹配就是计算描述子集合中每个描述子与查询描述子之间的距离,之后将所有距离进行排序,选择距离最小或者距离满足阈值要求的描述子作为匹配结果。
FLANN匹配—虽然暴力匹配的原理简单,但是算法的复杂度高,当遇到特征点数目较大的情况时会严重影响程序的运行时间,此时可用FLANN算法实现特征点的高效匹配。
RANSAC优化特征点匹配—即使使用描述子距离作为约束优化匹配的特征点,也会有部分误匹配的情况。虽然提高阈值约束条件能去掉误匹配点,但是正确匹配的特征点会随之减少,并且在实际情况下我们不可能反复调整阈值以获得更好的匹配结果。为了更好地提高特征点匹配精度,我们可以采用RANSAC算法。

20—立体视觉
相机标定—简单来说是从世界坐标系换到图像坐标系的过程。
相机校正—去除图像的畸变。
相机投影–相机投影是指根据相机的成像模型计算空间中三维点在图像二维平面中坐标的过程。
位姿估计—位姿估计这一过程的基本作用是找到现实世界和图像投影之间的对应点。

21—视频分析
差值法—用于检测移动物体
均值迁移法—用于目标跟踪
光流法—用于目标跟踪

22-机器学习
k均值聚类算法—k均值聚类算法是最简单的聚类方法之一,是一种无监督学习。
k近邻算法—k近邻算法主要用于对目标的分类。
决策树算法—决策树算法也是一种对数据进行分类的监督学习算法,其主要思想是通过构建一种树状结构对数据进行分类,树状结构的每个分支表示一个测试输出,每个叶节点表示一个类别。
随机森林算法—决策树算法在使用时只构建一颗树,这样容易出现过拟合的现象,可以通过构建多个决策树的方式来避免过拟合现象的产生。当构建多个决策树时,它们就构成了随机森林,随机森林算法是对决策树算法的改进和优化。由于随机森林中存在着多颗树,因此对新数据的分类由不同决策树判断的结果进行投票产生。
支持向量机—支持向量机(SVM)其实是一个分类器,可以将不同类的样本通过超平面分割在不同的区域内。

  • 作者:昊虹图像算法
  • 原文链接:https://blog.csdn.net/wenhao_ir/article/details/123992243
    更新时间:2022-08-07 09:27:21