当前位置:   article > 正文

传统图像处理算法总结_传统图像算法

传统图像算法

一、颜色空间

  • RGB:更适合用于显示系统
  • HSI
  • CMYK
  • YUV
  • HSV:色调、饱和度、明度(应用图象个分割)

二、高斯滤波

  • 滤波器该如何去理解? 答:滤波器可以想象成一个包含加权系数的窗口或者说一个镜片,当使用滤波器去平滑处理图像的时候,就是把通过这个窗口或者镜片去看这个图像;
  • 高斯滤波是一种线性平滑滤波,适用于消除高斯噪声;
  • 高斯噪声就是它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。

  • 高斯核: 理论上,高斯分布在所有定义域上都有非负值,这就需要一个无限大的卷积核。实际上,仅需要取均值周围3倍标准差内的值,以外部份直接去掉即可。 高斯滤波的重要两步就是先找到高斯模板然后再进行卷积,模板(mask在查阅中有的地方也称作掩膜或者是高斯核)。所以这个时候需要知道它怎么来?又怎么用? 举个栗子: 假定中心点的坐标是(0,0),那么取距离它最近的8个点坐标,为了计算,需要设定σ的值。假定σ=1.5,则模糊半径为1的高斯模板就算如下:

  •  高斯滤波计算:

 三、腐蚀和膨胀

腐蚀与膨胀是数字形态学里的两个基本操作,一般用于二值图像(当然RGB图也可以用)。腐蚀的作用说白了就是让暗的区域变大,而膨胀的作用就是让亮的区域变大。

腐蚀:变黑,有效核内有0则把中心点赋值为零

膨胀:变白,有效核内有255则把中心点赋值为255

参考:数字图像处理---通俗理解腐蚀与膨胀_图像腐蚀和膨胀的作用_alw_123的博客-CSDN博客

四、开运算和闭运算

  • 开运算:先腐蚀,后膨胀

dst = cv2.morphologyEx(src, cv2.MORPH_OPEN, kernel)

  • 闭运算:先膨胀,后腐蚀

dst = cv2.morphologyEx(src, cv2.MORPH_CLOSE, kernel)

  • 图像梯度运算:图像梯度运算是膨胀图像减去腐蚀图像的结果,得到图像的轮廓

dst = cv2.morphologyEx(src, cv2.MORPH_GRADIENT, kernel) 

五、计算图像的均值、标准差和平均梯度

均值、标准差和平均梯度是验证图像质量的常用指标。其中:

  • 均值反映了图像的亮度,均值越大说明图像亮度越大,反之越小;
  • 标准差反映了图像像素值与均值的离散程度,标准差越大说明图像的质量越好;
  • 平均梯度反映了图像的清晰度和纹理变化,平均梯度越大说明图像越清晰;

OpenCV 自学笔记33. 计算图像的均值、标准差和平均梯度_opencv求图像均值_两鬓已不能斑白的博客-CSDN博客

六、插值

1、线性插值

线性插值是指插值函数为一次多项式的插值方式,其在插值节点上的插值误差为0; 在图片上,我们利用线性插值的算法,可以减少图片的锯齿,模糊图片;

2、双线性插值

双线性插值是有两个变量的插值函数的单线性插值扩展,核心思想是在两个方向上分别进行一次线性插值.

理解线性插值 - 知乎 (zhihu.com)

七、变换

(十四)透视变换_淡定的炮仗的博客-CSDN博客

仿射变换(Affine Transformation)_仿射变换公式_shelleyHLX的博客-CSDN博客

1、仿射变换

Affine Transformation是一种二维坐标到二维坐标之间的线性变换,保持二维图形的“平直性”(译注:straightness,即变换后直线还是直线不会打弯,圆弧还是圆弧)和“平行性”。

仿射变换就是允许图像任意倾斜,允许图形在两个方向上任意伸缩的变换。

  • 不变:线共点、点共线关系不变,平行线仍然平行,中点仍是中点,一条直线上几段线段的比例关系不变;
  • 变:原来的线段长度、夹角角度

 

几种典型的仿射变换: 

  • 平移变换 ,刚体变换

  • 缩放变换
  • 旋转变换
  • 组合

2、透视变换

透视变换(Perspective Transformation)的本质是将图像投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping)。

八、常见的边缘检测算子

盘点各种边缘检测算子_Grinfen的博客-CSDN博客

边缘检测系列1:传统边缘检测算子 - 知乎 (zhihu.com)

1、 Roberts边缘检测算子

  • Roberts算子是一种基于差分算子的边缘检测算子。它使用两个2x2的卷积核,分别对图像的对角线方向进行卷积操作,然后将两个方向的差分结果合并得到边缘强度。
  • 特点:Roberts算子简单快速,适用于边缘信息较明显的图像。它对噪声敏感,对细节边缘的检测能力较弱。
  • 应用场合:Roberts算子适用于对边缘信息较明显、噪声较小的图像进行边缘检测。

 2、 Prewitt算子

  • 原理:Prewitt算子是一种基于梯度算子的边缘检测算子。它使用两个3x3的卷积核,分别对图像在水平和垂直方向进行卷积操作,然后将两个方向的梯度响应合并得到边缘强度。
  • 特点:Prewitt算子类似于Sobel算子,具有简单易实现和计算效率高的特点。它对噪声有一定的抑制能力,适用于一般性的边缘检测任务。
  • 应用场合:Prewitt算子常用于图像处理中的边缘检测、边缘增强和边缘定位等任务。

3、Sobel算子

  • 原理:Sobel算子是一种基于梯度算子的边缘检测算子。它使用两个3x3的卷积核,分别对图像在水平和垂直方向进行卷积操作,然后将两个方向的梯度响应合并得到边缘强度。
  • 特点:Sobel算子简单易实现,计算效率高,对噪声有一定的抑制能力。它在边缘定位和边缘精度方面表现较好,常用于一般性的边缘检测任务。
  • 应用场合:Sobel算子广泛应用于图像处理领域的边缘检测、边缘增强和图像分割等任务。
     

 4、 Scharr算子

  • 原理:Scharr算子是一种基于梯度算子的边缘检测算子。它利用两个3x3的卷积核,在水平和垂直方向上分别对图像进行卷积操作,然后将两个方向的梯度响应合并得到边缘强度。
  • 特点:Scharr算子与Sobel算子类似,但在计算梯度时采用了更加精确的权重分配,因此在边缘检测中具有更好的细节保留能力。
  • 应用场合:Scharr算子常用于需要高精度边缘检测和边缘定位的任务,如图像增强和特征提取等。

 5、Laplacian算子

  • 原理:Laplacian算子是一种基于二阶导数算子的边缘检测算子。它通过对图像进行二阶导数计算,检测图像中的像素强度变化,从而找到边缘。
  • 特点:Laplacian算子对边缘的精度和细节检测较好,但对噪声较敏感。它可以检测出图像中的零交叉点,可以用于边缘精化和角点检测。
  • 应用场合:Laplacian算子常用于需要较高精度边缘检测的任务,如图像分割、特征提取和图像增强等。

 6、Krisch 算子

  • 原理:Kirsch算子是一种基于梯度算子的边缘检测算子。它利用一组预定义的8个梯度模板,对图像进行卷积操作,然后选择最大的梯度响应作为边缘强度。
  • 特点:Kirsch算子对不同方向的边缘具有较好的响应能力,可以检测出边缘的方向信息。它相对于其他算子来说计算量较大,但在边缘方向性和边缘细节方面表现较好。

应用场合:Kirsch算子常用于需要检测具有特定方向的边缘的应用,如纹理分析和目标识别等。

7、Canny算子

  • 原理:Canny算子是一种经典的边缘检测算法,它结合了多个步骤来提取图像中的边缘。首先,利用高斯滤波对图像进行平滑处理,然后计算图像的梯度,进一步筛选出边缘像素,最后通过阈值处理边缘连接得到最终的边缘图像。
  • 特点:Canny算子具有良好的边缘定位精度、低噪声敏感性和边缘细化能力。它能够提取出细节边缘,并具备较强的抑制噪声的能力。
  • 应用场合:Canny算子广泛应用于边缘检测、图像分割、目标识别和机器视觉等领域。

九、Sobel 算法

Sobel边缘检测算法_绯雨千叶的博客-CSDN博客

Sobel边缘检测算法比较简单,实际应用中效率比canny边缘检测效率要高,但是边缘不如Canny检测的准确,然而在很多实际应用的场合,sobel边缘却是首选,Sobel算子是高斯平滑与微分操作的结合体,所以其抗噪声能力很强,用途较多。尤其是在对效率要求较高,而对细纹理不太关系的时候。

Sobel_x_or_y = cv2.Sobel(src, ddepth, dx, dy, dst, ksize, scale, delta, borderType)

十、 Canny 算法

图像处理基础(五)边缘检测之 Canny 算法 - 知乎 (zhihu.com)

步骤

  1. 高斯模糊
  2. 计算梯度大小和方向 (通常使用sobel算子计算梯度)
  3. 非最大化抑制(nms),每条边理应只有一个响应
  4. 双阈值,分离强边缘和弱边缘
  5. 连接弱边缘

十一、Hough 变换原理(直线和圆检测)

OpenCV(十八)霍夫变换(直线、线段与圆检测)_霍夫变换线段__(*^▽^*)_的博客-CSDN博客

1、直线检测

1)作用:提取直线等几何形状

2)定义:

霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。Hough变换是图像处理中从图像中识别几何形状的基本方法之一。

Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的检测问题转化为寻找参数空间中的峰值问题。也即把检测整体特性转化为检测局部特性。比如直线、椭圆、圆、弧线等。

原则上霍夫变换可以检测任何形状,但复杂的形状需要的参数就多,霍夫空间的维数就多,因此在程序实现上所需的内存空间以及运行效率上都不利于把标准霍夫变换应用于实际复杂图形的检测中。霍夫梯度法是霍夫变换的改进(圆检测),它的目的是减小霍夫空间的维度,提高效率。

3)原理:

  • 直线检测原理:(通过平面空间到极值坐标空间的转换)将要检测的对象转到霍夫空间中,利用累加器找到最优解,即为所求直线。(注:检测前要对图像二值化处理)
  • 圆检检测原理:霍夫梯度法,找到达到阈值的原点和半径

2、圆检测

 

十二、查找轮廓(cv2.findCountours函数)、

查找轮廓(cv2.findCountours函数)_寻找轮廓_计算机视觉-Archer的博客-CSDN博客

  1. 输入图像转为灰度图像cvtColor
  2. 使用Canny进行边缘提取,得到二值图像
  3. 使用findContours寻找轮廓
  4. 使用drawContours绘制轮廓

十三、单应性(homography)原理

1、透视变换:把空间坐标系中的三维物体或对象转变为二维图像表示的过程称为投影变换,根据视点(投影中心)与投影平面之间距离的不同,投影可分为平行投影和透视投影,透视投影即透视变换。

2、当两张图片A和B符合同一个透视变换时,那么就会存在一个单应性矩阵H,使得B=A*H,从这里我们不难推理出,单应性其实就是一个平面到另一个平面的投影映射。

十四、二维高斯滤波能否分解成一维操作

快速高斯滤波、高斯模糊、高斯平滑(二维卷积分步为一维卷积)_高斯模糊和高斯平滑_青城山小和尚的博客-CSDN博客

答:可以分解。

二维高斯滤波分解为两次一维高斯滤波,高斯二维公式可以推导为X轴与Y轴上的一维高斯公式。

即使用一维高斯核先对图像逐行滤波,再对中间结果逐列滤波。

十五、图像去噪算法

【技术综述】传统图像降噪方法一览 - 知乎 (zhihu.com)

十七、均值滤波

均值滤波(Mean filtering)_半濠春水的博客-CSDN博客

均值滤波是典型的 线性滤波算法,是指用当前像素点周围nxn个像素值的均值来代替当前像素值。使用该方法遍历处理图像内的每一个像素点,可完成整幅图像的均值滤波。

卷积核越大,参与到均值运算中的像素就会越多,即当前计算的算的是更多点的像素值的平均值,去噪效果越好,当然花费的计算时间也会越长,同时让图像失真越严重。因此在实际处理中,要在失真和去噪效果之间取得平衡,选取合适大小的卷积核

cv2.blur()

十八、中值滤波

中值滤波(Median filtering)_半濠春水的博客-CSDN博客

中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。
中值滤波的方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。

十九、双边滤波

双边滤波 Bilateral Filtering - 知乎 (zhihu.com)

双边滤波(Bilateral Filtering)_听风者868的博客-CSDN博客

目的:为了能够在去噪的同时保持细节信息

原理:邻域滤波时的加权系数不仅仅考虑几何距离,而且考虑灰度相似性

 

二十、引导滤波

某函数上一点与其邻近部分的点成线性关系,一个复杂的函数就可以用很多局部的线性函数来表示,当需要求该函数上某一点的值时,只需计算所有包含该点的线性函数的值并做平均即可

二十一、图像中的低频信息和高频信息

图像频率:图像中灰度变化剧烈程度的指标

  • 低频信息(低频分量)表示图像中灰度值变化缓慢的区域,对应着图像中大块平坦的区域。
  • 高频信息(高频分量)表示图像中灰度值变化剧烈的区域,对应着图像的边缘(轮廓)、噪声以及细节部分。

低频分量:主要对整幅图像强度的综合度量

高频分量:主要对图像边缘和轮廓的度量

从傅里叶变换的角度,将图像从灰度分布转化为频率分布。

二十二、HOG 算法

HOG算法_ML玩家的博客-CSDN博客

1、HOG算法思想

主要是为了基于各像素点的梯度提取出图像中目标的轮廓,用较少的特征更好地表达图像中目标信息

2、步骤

首先读取彩色图像并将其转化为灰度图像;并对灰度图像矩阵归一化,目的是为了减少光照和背景等因素的影响,本文主要用伽马校正法;选择合适的梯度算子来计算梯度图,主要分为x和y方向上的梯度;然后计算出合梯度的幅值和方向;划分检测窗口成大小相同的cell单元;组合相邻的cell单元成更大的相互重叠的块(block),便于充分利用重叠的边缘信息,然后统计整个块的直方图;对每个块内的梯度直方图归一化,综合所有块的信息,对HOG特征描述符可视化。
 

3、总结

HOG算法是一个将图片原始信息最终压缩成一个向量的过程,当我们将一张照片通过HOG算法得到此HOG特征描述符后,相当于我们得到了图片的样本数据,就可以拿来用于机器学习中对模型进行训练,然后结合机器学习模型比如SVM来实现路上行人检测等目的。当然HOG虽然存在维度降低,忽略光照等环境因素的影响,但也存在因梯度使得描述子对噪声敏感的问题。所以可以结合SIFT和LBP算法来对图像进行处理。

二十三、直方图均衡化

改善图像的亮度和对比度。对图像进行直方图均衡化的目的是,使其原本分布集中的像素值,均衡的分布到所有可取值的范围,这样,图像就既有明亮也有灰暗,对比度和亮度就得到了改善。

直方图均衡化的目的是将一幅图像的直方图变成一个均匀分布的直方图,从而增强图像的对比度

图像直方图均衡化详解 - 知乎 (zhihu.com)

【数字图像处理】直方图均衡化_有时候。的博客-CSDN博客

二十四、相机标定方法与流程

深度科普:一文搞懂相机标定 - 知乎 (zhihu.com)

二十五、分水岭算法

【OpenCV】- 分水岭算法_我菜就爱学的博客-CSDN博客

分水岭算法,是一种基于拓扑理论的数学形态学的分割方法。分割图像时可以从图像中获取有用的信息。

基本思想:把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以可以通过模拟侵入过程来说明:在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢侵入水中,随着侵入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分水岭。
 

分水岭的计算步骤:

  • 排序过程
  • 淹没过程

  watershed()函数

二十六、RANSAC 算法

机器视觉:ransac算法详解_无水先生的博客-CSDN博客

RANSAC是一种常用的参数估计方法,全称为Random Sample Consensus(随机抽样一致性)。它通过随机选择数据中的一部分,然后根据这些数据拟合模型,统计模型与其他数据的偏差,最终筛选出符合一定阈值的数据,用于估计参数。RANSAC可以应用于很多领域,如计算机视觉、机器人和地理信息系统等。其优点在于对噪声数据和异常值有很强的鲁棒性,能够有效地估计参数。
 

二十七、Bundle Adjustment(BA)算法

Bundle Adjustment原理及应用_晚餐男孩的博客-CSDN博客

光束法平差

经典的BA目的是优化相机的pose和landmark

二十八、L-M 算法(优化算法)

L~M方法_l-m算法_猫山王的博客-CSDN博客

二十九、SIFT 算法(尺度不变特征变换)

SIFT算法详解_夜半罟霖的博客-CSDN博客

SIFT 特征为什么能实现尺度不变性?

SIFT特征是如何保持旋转不变性的?

三十、SURF 算法(加速稳健特征

SURF算法详解_dl_风禾的博客-CSDN博客

三十一、ORB 算法(快速特征点提取和描述的算法)

【图像特征提取与匹配】ORB算法详述_orb图像_灰gu娘的栈的博客-CSDN博客

三十二、LSD 算法(直线提取算法)

LSD(Line Segment Detector)直线提取算法_lsd算法_Xue Feng BUPT的博客-CSDN博客

三十三、LBP 算法

LBP算法及其改进算法_程序媛堆堆的博客-CSDN博客

三十四、KCF 算法(目标跟踪算法-KCF 算法)

目标跟踪学习过程(3):KCF算法 - 知乎 (zhihu.com)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/740461
推荐阅读
  

闽ICP备14008679号