请选择 进入手机版 | 继续访问电脑版
首页 / 全部作品 / 作品详情
基于DIP的图像增强处理技术
1036 0 0
作者:502507

作品亮点:

基于频率域的算法把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则可增强边缘等高频信号,使模糊的图片变得清晰。

作品说明:

1 Introduction of Image Enhancement
图像增强是指按特定的需要突出一幅图像中的某些信息, 同时削弱或去除某些不需要的信息的处理方法,有选择地突出图像中感兴趣的特征或者抑制掩盖图像中某些不需要的特征,使图像与视觉响应特性相匹配。在图像增强过程中,不分析图像降质的原因,处理后的图像不一定逼近原始图像。
使处理后的图像更适合人眼视觉特性或机器分析, 以便于实现对图像的更高级的处理和分析,从而提高图像质量。但其往往也是一个矛盾的过程:去除噪声同时增强边缘。增强边缘的同时会同时增强噪声,而滤去噪声又会使边缘在一定程度上模糊,往往寻找折中的代价函数达到需要。
传统的图像增强算法在确定转换函数时,常基于整个图像的统计量, 如: ST转换,直方图均衡,中值滤波,微分锐化,高通滤波等等。这样对应于某些局部区域的细节在计算整幅图的变换时其影响因为其值较小而常常被忽略掉, 从而局部区域的增强效果常常不够理想, 噪声滤波和边缘增强这两者的矛盾较难得到解决。
1 常用图像增强分类
常用的图像增强方法可分成两大类: 空间域法和频率域法。基于空间域的算法处理时直接对图像灰度级做运算;基于频率域的算法是在图像的某种变换域内对图像的变换系数值进行某种修正,是一种间接增强的算法。基于空间域的算法分为点运算算法和邻域去噪算法。点运算算法即灰度级校正、灰度变换和直方图修正等,目的或使图像成像均匀,或扩大图像动态范围, 扩展对比度。而邻域增强算法分为图像平滑和锐化两种。平滑一般用于消除图像噪声,但是也容易引起边缘的模糊。常用算法有均值滤波、中值滤波。锐化的目的在于突出物体的边缘轮廓,便于目标识别。常用算法有梯度法、算子、高通滤波、掩模匹配法、统计差值法等。基于频率域的算法把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则可增强边缘等高频信号,使模糊的图片变得清晰。
2 Common Methods
2.1图像变换
图像的二维正交变换,它在图像增强、复原、编码等方面有着广泛的应。如傅立叶变换后平均值正比于图像灰度的平均值,高频分量则表明了图像中目标边缘的强度和方向,利用这些性质可以从图像中抽取出特征;又如在变换域中, 图像能量往往集中在少数项上, 或者说能量主要集中在低频分量上, 这时对低频成分分配较多的比特数,对高频成分分配较少的比特数,即可实现图像数据的压缩编码。
2.2灰度变换
可使图像动态范围增大,对比度得到扩展,使图像清晰、特征明显, 是图像增强的重要手段之一。它主要利用点运算来修正像素灰度,由输入像素点的灰度值确定相应输出点的灰度值,是一种基于图像变换的操作。灰度变换不改变图像内的空间关系, 除了灰度级的改变是根据某种特定的灰度变换函数进行之外,可以看作是从像素到像素的复制操作。
2.3灰度直方图
灰度直方图是反映一幅图像的灰度级与出现这种灰度级的概率之间的关系的图形。直方图反应了图像的整体灰度分布情况,对于暗色图像,直方图的组成集中在灰度级低(暗)的一侧,相反,明亮图像的直方图则倾向于灰度级高的一侧。由于图像的视觉效果不好或者特殊需要, 常常要对图像的灰度进行修正, 以达到理想的效果,即对原始图像的直方图进行转换。
2.4图像平滑
平滑处理往往使图像中的边界、轮廓变得模糊,为了减少这类不利效果的影响,这就需要利用图像锐化技术,使图像边缘变得清晰。图像锐化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变得清晰,经过平滑的图像变得模糊的根本原因是图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使图像变得清晰。从频率域来考虑,图像模糊的实质是因为其高频分量被衰减,因此可以用高通滤波器来使图像清晰。为了要把图像中间任何方向伸展的边缘和轮廓变得清晰,对图像的某种运算应该是各向同性的。
图2 图像增强的算法流程图
3 Implement and Analysis
3.1灰度线性变换
为了突出图像中感兴趣的目标或灰度区间, 相对抑制那些不感兴趣的灰度区间, 可采用 分段线性变换,把 0-255 整个灰度值区间分为若干线段,每一个直线段都对应一个局部的线 性变换关系,常用的是三段线性变换方法。
3 三段线性变换函数关系图
以下是在MATLAB中进行灰度线性变换的处理结果:
4 处理得到原始图像(左)和灰度图像(右)
5 线性变换图像[0.01 0.3](左)和线性变换图像[0.3 0.7](右)
其对应的灰度直方图如下:
6 线性变换图像[0.01 0.3]对应直方图
7 线性变换图像[0.3 0.7]对应直方图
3.2直方图均衡化
直方图均衡化可使得图像的灰度分布较为均匀,得到的图像明暗分明,对比清晰明亮,能较好改善原始图的视觉效果。其过程如下
1) 计算原图像的灰度直方图 Pr(rk)
2) 计算原图像的灰度累积分布函数 ks,进一步求出灰度变换表;
3) 根据灰度变换表,将原图像各灰度级映射为新的灰度级。
以下是在 MATLAB 中进行图像直方图均衡的处理结果:
8 直方图均衡化后图像对应处理后图像和其直方图
同样的处理方式对另一张灰度图进行处理得到结果如下:
图片1.png 图片2.png 图片3.png 图片4.png 图片5.png 图片6.png 图片7.png
9 原始图像(左上)线性变换[0.01 0.3](右上)线性变换[0.3 0.7](左下)均衡化(右下)图像及其直方图
4 Results Discussion
从以上运行结果中可以看出:始图像动态范围较小整体较暗, 因此反映在直方图上像素主要集中在低灰度的一侧。
线性变换图像[0.01 0.3]的动态范围较大,整体明暗对比较强,图像变亮,可以看到更多的细节,反映在直方图上像素分布较平均。线性变换图像[0.3 0.7]的动态范围更大,明暗对比更强,图像与上一张变换图像相比,只突出整幅图片最亮的区域,即图片中的投影白屏。优势是可以充分利用图像中的亮度信息,明显改善图像质量,是一种常用的图像增强算法。不足是对于受噪声影响明显的图像,该算法仅仅利用了图像中的局部信息,增强效果不明显,也不能有效地抑制噪声。
  从原始图像的直方图统计可以看出,原始图的灰度范围比较狭窄,所以整体上看对比度比较差,而直方图均衡化后,灰度分布较为均匀,得到的图像明暗分明,对比清晰明亮,能较好改善原始图的视觉效果。虽然其对于噪声的抑制仍逊色,但其能够使得处理后图像的概率密度函数近似服从均匀分布,其结果扩张了像素值的 动态范围,是一种常用的图像增强算法。
图像增强的方法有很多种,但不管是线性变换还是直方图均衡化法,都不能有效抑制噪声。而对于图像中呈孤立分散分布的噪声点,可以用平滑的方式去除,其中线性滤波实现简单,去噪效果明显,但是去噪的同时会导致结果图像边缘位置的改变和细节模糊甚至丢失;非线性滤波能够较好的保持图像边缘位置和细节,但是算法的实现相对线性滤波比较困难。平滑处理的时候经常会使图像的边缘变的模糊。
最后,图像处理是面向对象和问题的一门学科,数字图像处理课程将我带入DIP的兴趣大门,使我对图像处理的多种算法产生了浓厚的兴趣,未来随着接触增加,将有更多需要研究和探索的领域等着我去探知求索,谢谢老师兴趣的培养!
参考文献
[1]贺东霞.数字图像去噪算法的研究与应用[D].陕西.延安大学.2015.
[2]程新.基于同态滤波的图像增强算法研究[D].西安邮电大学,2016.
[3]段一平,李浩攀.MATLAB在图像处理中的应用[J]. 科技信息,200910:213-214.
[4]数字图像处理与图像通信[M]. 北京邮电大学出版社 , 朱秀昌等编著, 2002.
附录
代码一:
% 灰度线性变换
%利用 imadjust 函数对图像局部灰度范围进行扩展
% MATLAB 主要程序如下:
I=imread('9.jpg');%显示原始图像
imshow(I);
I1=rgb2gray(I);%显示原始图像的灰度图像
subplot(2,3,1),imshow(I1);
axis on;
subplot(2,3,4),imhist(I1);%画出灰度直方图
axis on; J=imadjust(I1,[0.01 0.3],[]);%局部拉伸,把[0.1 0.5]内的灰度拉伸为[0 1] subplot(2,3,2),imshow(J);
axis on;
subplot(2,3,5),imhist(J);%画出灰度直方图
axis on;
K=imadjust(I1,[0.3 0.7],[]); %局部拉伸,把[0.3 0.7]内的灰度拉伸为[0 1] subplot(2,3,3),imshow(K);
axis on; subplot(2,3,6),imhist(K);%画出灰度直方图
axis on;
代码二:
%直方图均衡化
I=imread('9.jpg');
I1=rgb2gray(I);%显示原始图像的灰度图像
subplot(2,2,1),imshow(I1);
axis on;
subplot(2,2,3),imhist(I1);%画出灰度直方图
J=histeq(I1,64);%对图像进行均衡化处理,返回有64级灰度的图像J subplot(2,2,2),imshow(J);
axis on;
subplot(2,2,4),imhist(J);%画出灰度直方图
axis on;

返回列表