一,数字图像处理的数学基础
(1)线性系统
(2)常见函数
(3)常用的矩阵运算
A,相加减
B,数乘
C,矩阵相乘
D,对称反对称
E,逆矩阵
(4)正交变换
二,图像增强
(1)目的
(2)图像噪声
常见的噪声有:椒盐(脉冲)噪声和高斯噪声。椒盐噪声是在图像上随机出现黑色白色像素即或明或暗的噪声点,用非线性滤波方法可去除。高斯噪声的幅值服从高斯分布(正态分布),用线性滤波方法可去除。
常用的滤波方法有:线性滤波(方框滤波、均值滤波、高斯滤波)和非线性滤波(中值滤波和双边滤波)。
(3)方法分类
A,点运算之前总结过的灰度变化和直方图均衡化便是
B,图像空域平滑法:
图像平滑的本质上其实是低通滤波,因为往往噪声出现在图像中的高频部分,但是问题是图像自身的边缘往往也是高频部分,消除噪声的同时也会使边缘模糊。
也可以对距离中心点不同的领域点进行加权平均以适应不同的图像处理要求。
下面是几种简单的平滑方法
(1)平滑模板
(2)高斯平滑模板
图像的高斯平滑是平滑线性滤波器的另一种应用,与图像的简单平滑不同的是,它在对邻域内像素灰度进行平均时,给予了不同位置像素不同的权值。模板上越是靠近邻域中心的位置,其权值就越高。如此安排权值的意义在于用此模板进行图像平滑时,在对图像细节进行模糊的同时,可以更多地保留图像总体的灰度分布特征。
相比图像的简单平滑,高斯平滑对高对比度图像的平滑效率较低,在离散型杂点的消除方面,高斯平滑的效果并不理想。然而如果需要在平滑过程中保留源图像的总体特征,高斯平滑就具有很大的优势。
(3)其他平滑模板(根据不同取权值来划分)
补充:
(4)中值滤波
不同的噪声应用不同的平滑滤波方法效果也不一样,可以根据实际需要来决定采用哪种,下面通过几个例子来看
可以看到平滑模板过滤的噪声的同时边界也模糊了,而中值滤波可以很好的减少这点。
再看下面两个
(5)小结补充:
C,图像锐化:
在图像增强过程中,通常利用各类图像平滑算法消除噪声,图像的常见噪声主要有加性噪声、乘性噪声和量化噪声等。一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时图像边缘信息也主要集中在其高频部分。这将导致原始图像在平滑处理之后,图像边缘和图像轮廓模糊的情况出现。为了减少这类不利效果的影响,就需要利用图像锐化技术,使图像的边缘变得清晰。图像锐化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变得清晰,经过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使图像变得清晰。微分运算是求信号的变化率,由傅立叶变换的微分性质可知,微分运算具有较强高频分量作用。从频率域来考虑,图像模糊的实质是因为其高频分量被衰减,因此可以用高通滤波器来使图像清晰。但要注意能够进行锐化处理的图像必须有较高的性噪比,否则锐化后图像性噪比反而更低,从而使得噪声增加的比信号还要多,因此一般是先去除或减轻噪声后再进行锐化处理。
但是由于边缘和轮廓位于灰度突变的地方,所以图像锐化在增强图像边缘的同时增强了图像的噪声。
(1)微分法
a,一阶导数的边缘算子
通过模板作为核与图像的每个像素点做卷积和运算,然后选取合适的阈值来提取图像的边缘。常见的有Roberts算子、Sobel算子和Prewitt算子。
b,二阶导数的边缘算子
依据于二阶导数过零点,常见的有Laplacian 算子,此类算子对噪声敏感。
c,其他边缘算子
前面两类均是通过微分算子来检测图像边缘,还有一种就是Canny算子,其是在满足一定约束条件下推导出来的边缘检测最优化算子。
微分运算主要指梯度模运算,图像的梯度模值包含了边界及细节信息。比如以下三种:
比如a阶跃型中一阶微分的最高点或二阶微分的原点便是灰度变化的边界点,代表了边缘信息。
梯度的模(幅值)就是 最大变化率方向的单位距离所增加的量。由梯度的计算可知,在图像灰度变化较大的边沿区域其梯度值大,在灰度变化平缓的区域梯度值较小,而在灰度均匀的区域其梯度值为零。我们根据得到的梯度值来返回像素的值,如将梯度值大的像素设置成白色,梯度值小的设置为黑色,这样就可以将边缘提取出来了,或者是加强梯度值大的像素灰度值就可以突出细节了达到了锐化的目的。
求得梯度后锐化的方法:
下面看一个例子:
(原图)
(梯度法之后)
看不太清楚,将其直方图均衡化,
(图像锐化了,噪声也有加强)
(大于阈值的灰度值赋1,小于阈值的赋0)
a,有方向的算子
水平
垂直
Kirsch算子:Kirsch算子采用8个模板对图像上的每一个像素点进行卷积求导数,这8个模板代表8个方向,对图像上的8个特定边缘方向作出最大响应,运算(与3*3像素加权之和,就是对应位置相乘后求和)中取最大值作为图像的边缘输出。
b,无方向的算子
无方向一阶锐化问题的提出
前面的锐化处理结果对于人工设计制造的具有矩形特征物体(例如:楼房、汉字等)的边缘的提取很有效。但是,对于不规则形状(如:人物)的边缘提取,则存在信息的缺损。
为了解决上面的问题,就希望提出对任何方向上的边缘信息均敏感的锐化算法。因为这类锐化方法要求对边缘的方向没有选择,所有称为无方向的锐化算法。
下面是各种算子介绍:
罗伯特算子:它是基于交叉差分的梯度算法,通过局部差分计算检测边缘线条。常用来处理具有陡峭的低噪声图像,当图像边缘接近于正45度或负45度时,该算法处理效果更理想。其缺点是对边缘的定位不太准确,提取的边缘线条较粗。
Prewitt算子:是一种图像边缘检测的微分算子,其原理是利用特定区域内像素灰度值产生的差分实现边缘检测。由于Prewitt算子采用 33 模板对区域内的像素值进行计算,而Robert算子的模板为 22,故Prewitt算子的边缘检测结果在水平方向和垂直方向均比Robert算子更加明显。Prewitt算子适合用来识别噪声较多、灰度渐变的图像
Sobel算子:是一种用于边缘检测的离散微分算子,它结合了高斯平滑和微分求导。该算子用于计算图像明暗程度近似值,根据图像边缘旁边明暗程度把该区域内超过某个数的特定点记为边缘。Sobel算子在Prewitt算子的基础上增加了权重的概念,认为相邻点的距离远近对当前像素点的影响是不同的,距离越近的像素点对应当前像素的影响越大,从而实现图像锐化并突出边缘轮廓。Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。对噪声具有平滑作用,提供较为精确的边缘方向信息。因为Sobel算子结合了高斯平滑和微分求导(分化),因此结果会具有更多的抗噪性,当对精度要求不是很高时,Sobel算子是一种较为常用的边缘检测方法。
拉普拉斯(Laplacian) 算子(无方向):是 维欧几里德空间中的一个二阶微分算子,常用于图像增强领域和边缘提取。它通过灰度差分计算邻域内的像素。
算法基本流程
1)判断图像中心像素灰度值与它周围其他像素的灰度值,如果中心像素的灰度更高,则提升中心像素的灰度;反之降低中心像素的灰度,从而实现图像锐化操作;
2)在算法实现过程中,Laplacian算子通过对邻域中心像素的四方向或八方向求梯度,再将梯度相加起来判断中心像素灰度与邻域内其他像素灰度的关系;
3)最后通过梯度运算的结果对像素灰度进行调整。
Laplacian算子分为四邻域和八邻域,四邻域是对邻域中心像素的四个方向求梯度,八邻域是对八个方向求梯度。
其中,Laplacian算子四邻域模板如下所示:
Laplacian算子的八邻域模板如下所示:
通过Laplacian算子的模板可以发现:
1)当邻域内像素灰度相同时,模板的卷积运算结果为0;
2)当中心像素灰度高于邻域内其他像素的平均灰度时,模板的卷积运算结果为正数;
3)当中心像素的灰度低于邻域内其他像素的平均灰度时,模板的卷积为负数。对卷积运算的结果用适当的衰弱因子处理并加在原中心像素上,就可以实现图像的锐化处理。
Log边缘算子:
Laplace算子对通过图像进行操作实现边缘检测的时,对离散点和噪声比较敏感。于是,首先对图像进行高斯暖卷积滤波进行降噪处理(先平滑噪声),再采用Laplace算子进行边缘检测,就可以提高算子对噪声和离散点的Robust, 这一个过程中Laplacian of Gaussian(LOG)算子就诞生了。
各种算子效果对比:
(2)高通滤波
一般可认为,高空间频率区域称“粗糙”,即图像的亮度值在小范围内变化很大,而“平滑”区,图像的亮度值变化相对较小,如平滑的水体表面等。低通滤波主要用于加强图像中的低频成分,减弱高频成分,而高通滤波则正好相反,加强高频细节,减弱低频细节,简单地讲:高通滤波处理过的图像更加“粗糙”。高通滤波顾名思义就是让频率高的通过,使图像具有锐化效果;低通滤波则恰好相反了,它是使低频通过,使图像具有平滑的效果。
例子:
上图锐化之后边缘信息加强了,但是噪声也加强了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通