图像的滤波与增强
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像的滤波与增强相关的知识,希望对你有一定的参考价值。
参考技术A (如果您觉得文档不错,能不能麻烦动动小手点个赞啊)1. 滤波实际上是信号处理得一个概念,图像可以看成一个二维信号,其中像素点的 灰度值 代表 信号的强弱 ;
2. 高频 :图像上变化剧烈的部分;
3. 低频 :图像灰度值变化缓慢,平坦的地方;
4.根据图像高低频,设置高通和低通滤波器。高通滤波器可以检测变化尖锐,明显的地方,低通可以让图像变得平滑,消除噪声;
5. 滤波作用 : 高通滤波器 用于 边缘检测 , 低通滤波器 用于图像 平滑去噪 ;
6. 线性滤波 :方框滤波/均值滤波/高斯滤波;
7. 非线性滤波 :中值滤波/双边滤波;
利用给定像素周围的像素值决定此像素的最终输出值的一种算子;
一种常用的领域算子,像素输出取决于输入像素的加权和:
方框滤波(box Filter)被封装在一个名为boxFilter的函数中,即boxFilter函数的作用是使用方框滤波器(box filter)来模糊一张图片,从src输入,从dst输出;方框滤波核:
normalize = true 与均值滤波相同 normalize = false 很容易发生溢出
函数:
cv2.boxFilter(src,depth,ksize,normalize)
参数说明:
参数1:输入图像
参数2:目标图像深度
参数3:核大小
参数4:normalize
均值滤波是一种最简单的滤波处理,它取的是卷积核区域内元素的均值,用cv2.blur()实现
函数 :cv2.blur(src, ksize)
参数说明:
参数1:输入原图
参数2:kernel的大小,一般为奇数
高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。高斯滤波的卷积核权重并不相同,中间像素点权重最高,越远离中心的像素权重越小。其原理是一个2维高斯函数)
高斯滤波相比均值滤波效率要慢,但可以有效消除高斯噪声,能保留更多的图像细节,所以经常被称为最有用的滤波器。
函数:
cv2.Guassianblur(src, ksize, std)表示进行高斯滤波,
参数说明:
参数1:输入原图
参数2:高斯核大小
参数3:标准差σ,平滑时,调整σ实际是在调整周围像素对当前像素的影响程度,调大σ即提高了远处像素对中心像素的影响程度,滤波结果也就越平滑。
中值滤波是一种非线性滤波,是用 像素点邻域灰度值的中指代替该点的灰度值,中值滤波可以去除椒盐噪声和斑点噪声。
函数:
cv2.medianBlur(img,ksize)
参数说明:
参数1:输入原图
参数2:核大小
双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空间与信息和灰度相似性,达到保边去噪的目的,具有简单、非迭代、局部处理的特点。
函数 :cv2.bilateralFilter(src=image, d, sigmaColor, sigmaSpace)
参数说明:
参数1:输入原图
参数2:像素的邻域直径
参数3:灰度值相似性高斯函数标准差
参数4:空间高斯函数标准差
目的
直方图均衡化是将原图像通过某种变换,得到一幅灰度直方图为均匀分布的新图像的方法。
基本思想
对在图像中像素个数多的灰度级进行展宽,而对像素个数少的灰度级进行缩减。从而达到清晰图像的目的。
函数
cv2.equalizeHist(img)
参数1:待均衡化图像
步骤
统计直方图中每个灰度级出现的次数;
计算累计归一化直方图;
重新计算像素点的像素值
Gamma变换是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系:
目的:
Gamma变换就是用来图像增强,其提升了暗部细节,通过非线性变换,让图像从暴光强度的线性响应变得更接近人眼感受的响应,即将漂白(相机曝光)或过暗(曝光不足)的图片,进行矫正。
r > 0图像变暗, r < 0图像变亮
图像增强之空间域滤波
1、为什么进行图像增强
图像增强是指增强图像中某些特征,同时削弱或去除某些不需要的信息,即为了某种应用而去改善图像的质量,消除噪声,显现那些被模糊了的细节或简单的突出一副图像中感兴趣的特征。所以图像增强并不是增强图像的原始信息,而是只针对某一特征以提高某种信息的辨别能力,图像增强需要根据需求采用特定的方法,当增强一些信息时另外一些信息必定被损失,不存在一种通用的方法,必须根据需求决定保留哪些信息丢弃哪些信息。
图像增强技术基本上可以分为两类:空间域增强、频域增强。
2、空间域滤波理论
2.1定义
空间域滤波就是在图像平面上对像素进行操作。
空间域滤波大体分为两类:平滑、锐化。
平滑滤波:模糊处理,用于减小噪声,实际上是低通滤波,典型的滤波器是高斯滤波。
锐化滤波:提取边缘突出边缘及细节、弥补平滑滤波造成的边缘模糊。实际上是高通滤波。
空间域处理可由下式表示:
g(x,y)=T[f(x,y)]
式中,f(x,y)是输入图像,g(x,y)是处理后的图像,T是在点(x,y)的邻域上定义的关于f的一种算子,算子可应用于单幅图像或图像集合。
2.2空间域滤波和邻域处理
1)空间滤波器由一个邻域(通常是一个较小的矩形)和对该邻域所包围图像像素执行的预定义操作组成。对预定义的点(x,y)为中心的领域内的像素进行计算。
2)滤波产生一个新像素,新像素的坐标等于邻域中心的坐标(x,y),像素的值是滤波操作的结果。即用计算后的新像素值作为点(x,y)的值。
3)循环步骤1和2,滤波器的中心遍历图像中的每个像素后,就生成了滤波后的图像。
4)如果在图像像素上执行的是线性操作,则该滤波器称为线性空间滤波器,否则,称为非线性空间滤波器。
一般来说,使用大小为 m×n的滤波器对大小为 M×N的图像进行线性空间滤波,可由下式表示:
3、平滑滤波
平滑滤波可以减少和抑制图像中的噪声,平滑后图像变得模糊,噪声降低。模糊处理常用于预处理任务中,如在目标提取之前去除图像中的一些琐碎细节,以及桥接直线或曲线的缝隙。
1)工作原理
一般来说,图像具有局部连续的性质,即相邻的像素的值相近,而噪声使得噪点处产生像素跳跃,所以通过平滑噪点可以减少噪声,去除图像中的不相关细节。
2)均值滤波和加权滤波
平滑滤波的输出是包含在滤波器模板邻域内的像素的简单平均值,也就是均值滤波器。
均值滤波器是低通滤波器,常见的操作有均值滤波和加权滤波。
W是滤波模板,模板的大小取决于需要滤除的物体的大小,使用时需要更具图像特点选择模板尺寸。
为什么使用加权,平滑滤波对领域内的像素一视同仁,但是一般认为距离模板中心的像素应对滤波结果有较大的贡献,所以将模板中心的系数取得比模板周边的系数大,随着距离中心距离增大,权重迅速减小。高速滤波就是一种加权滤波,只不过模板中的系数由高斯分布来确定的。
3)实现
Matlab滤波可以用fspecial产生滤波模板。
f=fspecial(‘average‘, 3)产生系数为:
f =
0.1111 0.1111 0.1111
0.1111 0.1111 0.1111
0.1111 0.1111 0.1111
例1:均值滤波
imgPath = ‘E:opencv_picsrc_picpic4.bmp‘; img = imread(imgPath); img = imnoise(img,‘salt & pepper‘, 0.02); f=fspecial(‘average‘, 3); img1=imfilter(img, f); f=fspecial(‘average‘, 10); img2=imfilter(img, f2); subplot(1,3,1),imshow(img), title(‘原始图像‘); subplot(1,3,2),imshow(img1),title(‘均值滤波1‘); subplot(1,3,3),imshow(img2),title(‘均值滤波2‘);
可见下图,当滤波系数为3*3时,可以滤波大部分噪声,当滤波系数为10时,滤除了全部噪声但是图像变得模糊。
例2:高斯噪声滤波
imgPath = ‘E:opencv_picsrc_picpic4.bmp‘; img = imread(imgPath); img = imnoise(img, ‘gaussian‘, 0, 0.01); f=fspecial(‘average‘, 5); img1=imfilter(img, f); f2=fspecial(‘gaussian‘, 5, 0.8); img2=imfilter(img, f2); subplot(1,3,1),imshow(img), title(‘原始图像‘); subplot(1,3,2),imshow(img1),title(‘均值滤波‘); subplot(1,3,3),imshow(img2),title(‘高斯滤波‘);
两个滤波模板分别为:
f =
0.0400 0.0400 0.0400 0.0400 0.0400
0.0400 0.0400 0.0400 0.0400 0.0400
0.0400 0.0400 0.0400 0.0400 0.0400
0.0400 0.0400 0.0400 0.0400 0.0400
0.0400 0.0400 0.0400 0.0400 0.0400
f2 =
0.0005 0.0050 0.0109 0.0050 0.0005
0.0050 0.0522 0.1141 0.0522 0.0050
0.0109 0.1141 0.2491 0.1141 0.0109
0.0050 0.0522 0.1141 0.0522 0.0050
0.0005 0.0050 0.0109 0.0050 0.0005
滤波效果如下图。
放大后观察细节,均值滤波在渐变处出现严重的模糊现象,高斯滤波由于使用了带权重的滤波系数,情况好很多。
4、自适应平滑滤波
1)原理
利用平均模板平滑在消除噪声的同时也使得图像变得模糊,高斯平滑在一定程度上缓解了这些现象,但由于平滑滤波的原理可知这种模糊是不可避免的。所以可以进行选择性的平滑,即只对噪声局部区域进行平滑,对无噪声的局部区域不进行平滑,将模糊的影响降到最低。
2)实现
自适应的关键是对噪声区域的识别,哪些区域是需要平滑的,哪些区域不需要。一般地,噪声的存在使噪声点产生灰度跳跃,从而使噪声点局部区域灰度跨度较大。
所以,方法1:可以设定阈值T,当局部最大灰度和最小灰度只差大于阈值,则进行平滑;否则不平滑。方法2:当局部区域灰度方差大于阈值T则进行平滑;否则不平滑。
5、中值滤波
1)原理
中值滤波是一种统计排序滤波器,图像上点(x,y),中值滤波以该点为中心,领域内所有像素的统计排序中值作为此点的响应,中值滤波是非线性滤波。
相比与均值滤波和高斯滤波,中值滤波可以有效的降低随机噪声,直接忽略掉噪声点,把噪声引起的模糊降到最低。典型的应用就是中值滤波消除椒盐噪声。
2)中值滤波效果对比
imgPath = ‘E:opencv_picsrc_picpic4.bmp‘; img = imread(imgPath); img0 = rgb2gray(img); img = imnoise(img0,‘salt & pepper‘); f=fspecial(‘average‘, 3); img1=imfilter(img, f); f2=fspecial(‘gaussian‘, 3, 0.8); img2=imfilter(img, f2); img3=medfilt2(img, [3,3]); subplot(2,3,1),imshow(img0), title(‘原始图像‘); subplot(2,3,2),imshow(img), title(‘噪声图像‘); subplot(2,3,3),imshow(img1),title(‘均值滤波‘); subplot(2,3,4),imshow(img2),title(‘高斯滤波‘); subplot(2,3,5),imshow(img3),title(‘中值滤波‘);
从下图可见,线性平滑滤波在滤除噪声的同时不可避免的引起了模糊,而中值滤波在有效滤除随机噪声的同时,还有效抑制了模糊效应。对于椒盐噪声图像,中值滤波的效果要好于线性平滑滤波。
放大后观察细节,中值滤波较好的还原了原图。
6、参考文献
1、图像增强之空间域滤波 -- Part1. 原理篇
https://blog.csdn.net/hhaowang/article/details/87978218
2、Image Filtering and Enhancement
https://ww2.mathworks.cn/help/images/image-enhancement-and-restoration.html?s_tid=CRUX_lftnav
尊重原创技术文章,转载请注明。
以上是关于图像的滤波与增强的主要内容,如果未能解决你的问题,请参考以下文章
贪玩巴斯数字图像处理基础课堂笔记——「亮度变换与空间滤波全解——加权平滑滤波器相关&卷积拉普拉斯图像增强变化直方图」 2021-10-1910-1210-25
图像增强基于matlab GUI图像双边滤波含Matlab源码 1342期
图像增强基于matlab HSI+同态滤波彩色图像增强含Matlab源码 1515期