引言
图像增强是图像处理中的基本内容之一,在图像处理中占有非常重要的地位。图像增强是指对图像的某些特征,如边缘、轮廓或对比度等进行强调或尖锐化。当一幅图像曝光不足或过度,造成对比度过小或过大而不能显示具体细节,通过增加这些细节的动态范围改善图像的视觉效果。图像增强可以突出图像中所感兴趣的特征信息,改善图像的主观视觉质量,提高图像的可懂度。
增强的首要目标是处理图像,使其比原始图像更适合于特定应用。图像增强的方法主要分为两类: 空间域增强法和频域增强法。“空间域”一词是指图像平面本身,这类方法是以对图像像素直接处理为基础的;“频率域”处理技术是以修改图像的傅氏变换为基础的。 增强处理可将其灰度范围拉伸到0-255 的灰度级之间来显示,从而使图像对比度提高,质量改善。增强主要以图像的灰度直方图最为分析处理的基础。直方图均衡化能够增强整个图像的对比度,提高图像的辨析程度,算法简单,增强效果好。
基于点处理的图像增强方法有:灰度线性变换、灰度非线性变换、灰度分段线性变换和直方图均衡化,本文主要讨论灰度分段线性变换和直方图均衡化对图像的增强,并用MATLAB进行实验验证。
图像增强的研究意义
图像增强是数字图像处理的最基本的方法之一,它是为了改善视觉效果或便于人或机器对图像的分析理解,根据图像的特点或存在的问题,以及应用目的所采取的改善图像质量的方法或加强图像的某些特征的措施。图像在成像、采集、运输、复制等过程中不可避免地会造成某些降质。如在成像过程中由于光学系统会导致图像失真,不同的光照条件会使图像的曝光度差异很大,运动状态下成像会使图像模糊;而在传输过程中,各种噪声和干扰将污染图像。因此,通常需要对降质的图像进行预处理,以满足后期处理及分析的需要。图像复原是改善图像的一类方法,这类方法会尽可能还原图像的本来面目,追求提高图像的保真度。而图像增强则是一类追求图像可懂度的方法,通过处理有选择地突出某些感兴趣的信息,便于人或机器分析这些信息,抑制一些无用的信息,以提高图像的使用价值。
图像增强处理后的图像比原始图像更适合于具体应用。由于成像和传输过程的差异性很大,决定了图像增强的方法只能有选择性地使用。实际应用时,需要根据所针对的处理图像、需要解决的问题以及最终要达到的效果等情况,合理选择合适的图像增强算法,并做适当的优化。
图像增强处理后的图像比原始图像更适合于具体应用。由于成像和传输过程的差异性很大,决定了图像增强的方法只能有选择性地使用。实际应用时,需要根据所针对的处理图像、需要解决的问题以及最终要达到的效果等情况,合理选择合适的图像增强算法,并做适当的优化。
实验目的
1、了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学理论知识。
2、掌握灰度分段线性变换的图像增强方法。
3、学会用直方图均衡化对图像进行增强。
实验内容
一、灰度分段线性变换
1、理论基础:
在某些情况下,为了将图像灰度级整个范围(AB) 或其中某一段扩展或压缩到另一灰度范围(z1,zk) 质内,称灰度的线性变换。
分段线性变换和灰度的线性变换有点类似,都用到了灰度的线性变换。但不同之处在于分段线性变换不是完全的线性变换,而是分段进行线性变换。将图像灰度区间分成两段乃至多段,分别作线性变换称之为分段线性变换,如图,分段线性变换的优点是可以根据用户的需要,拉伸特征物体的灰度细节,相对抑制不感兴趣的灰度级。图中的(0,a),(a,b),(b,255)等变换区间边界能通过键盘随时做交换式输入,因此,分段线性变换是非常灵活的。它的灰度变换函数如图所示,函数表达式如下:
式中,(a,c)和(b,d)是图中两个转折点坐标。
该变换函数的运算结果是将原图在a和b之间的灰度拉伸到c和d之间。通过选择的拉伸某段灰度区间,能够更加灵活地控制图像灰度直方图的分布,以改善输出图像量。如果一幅图像灰度集中在较暗的区域而导致图像偏暗,可以用灰度拉伸功能来拉伸(斜率>1)物体灰度区间以改善图像质量;同样如果图像灰度集中在较亮的区域而导致图像偏亮,也可以用灰度拉伸功能来压缩(斜率<1)物体灰度区间以改善图像质量。
2、程序设计:
clc;
clear all; %刘航宇
X1=imread('图片路径');
subplot(2,2,1),imshow(X1);title('原图');
f0=0;g0=0;%折线点赋值
f1=20;g1=10; %参数自己改动,不要完全复制我的
f2=130;g2=180;
f3=255;g3=255;
subplot(2,2,2),plot([f0 f1 f2 f3],[g0 g1 g2 g3]);
axis tight,xlabel('f'),ylabel('g'),title('灰度变换曲线');
r1=(g1-g0)/(f1-f0);%第一段折线的斜率
b1=g0-r1*f0;%计算截距1
r2=(g2-g1)/(f2-f1);
b2=g1-r2*f1;
r3=(g3-g2)/(f3-f2);
b3=g2-r3*f2;
[m,n]=size(X1);
for i=1:m
for j=1:n
f=X1(i,j);
if(f<f1)
g(i,j)=r1*f+b1;
elseif(f>=f1)&(f<=f2)
g(i,j)=r1*f+b1;
else(f>=f2)&(f<=f3)
g(i,j)=r3*f+b3;
end
end
end
subplot(2,2,3),imshow(g);title('灰度变换后');
3、运行结果:
二、直方图均衡化
1、理论基础:
(1)直方图的定义
在图像处理中提到的直方图是指灰度直方图。它定义为统计图像中具有某种灰度的像素数目(或频率=像素数目/图像总的像素个数)的函数。灰度直方图概括了图像中各灰度级的含量,提供了原图的灰度值分布情况[12],也可以说给出了1幅图所有灰度值的整体描述。
什么是灰度直方图呢?灰度直方图(histogram)是灰度级的函数,它表示图像中具有每种灰度级的象素的个数,反映图像中每种灰度出现的频率[8]。
设变量r代表图像中像素灰度级。在图像中,像素的灰度级可作归一化处理,这样,r的值将限定在下述范围之内: 0 ≤ r ≤ 1
在灰度级中,r=0代表黑,r=1代表白。对于一幅给定的图像来说,每一个像素取得[0,1]区间内的灰度级是随即的,也就是说r是一个随即变量。假定对每一瞬间它们是连续的随即变量,那么,就可以用概率密度函数pr(r)来表示原始图像的灰度分布。如果用直角坐标系的横轴代表灰度级r,用纵轴代表灰度级的概率密度函数pr(r),这样就可以针对一幅图像在这个坐标系中作一条曲线来。这条曲线在概率论中就是分布密度曲线(见图2.1)
从图像灰度级的分布可以看出一幅图像的灰度分布特性。例如上图中的两个灰度密度分布函数中可以看出: (a)的大多数像素灰度值取在较暗的区域,所以这幅图像较暗,一般在摄影过程中暴光过强就会造成这种后果;而(b)图像的像素灰度值集中在亮区,因此,图像(b)的特性将偏亮,一般在摄影中暴光太脆弱将导致这种结果。当然,从两幅图像的分布来看图像的质量均不理想。
为了有利于数字图像处理,必须引入离散形式。在离散形式下,用rk代表离散灰度级,用pr(rk)代表pr(r),并且有下式成立:
(2)灰度直方图
面积为A的连续图像f(x,y)经数字化后,成为M行N列的数字图象f(m,n)。一般而言,在数字图像f(m,n)中取不同灰度值的像素的数目是不同的。直方图是用于表达图像灰度分布情况的统计图表[4]。其横坐标是灰度值r,纵坐标是出现这个灰度值的概率密度p(r)(对连续图像f(x,y)而言),或者是出现这个灰度值的概率值p(ri)(对数字图像f(m,n)而言),参见图2.3。
(3)直方图均衡化
直方图均衡化是图象增强中点运算的一种最常用的直方图修正法[10]。其实质是减少图像的灰度等级以换取对比度的扩大。它把给定图像的直方图分布改造成均匀直方图分布,其本质是扩大了量化间隔,减少量化级别。因此,会出现这样的效果,原来灰度不同的象素经处理后可能变为相同,形成了一片相同灰度的区域;各区域之间有明显的边界,出现伪轮廓,图像的对比度增加。但是由于在均衡化过程中,原直方图上频数较少的灰度级被并入少数几个或一个灰度级,对应的图像部分将得不到增强。直方图均衡化处理的中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布[5]。
对于图像的灰度变换,我们这里介绍一种稍微复杂一点的方法,既直方图均衡化。直方图均衡化是灰度变换的一个重要应用,广泛应用在图像增强处理中,它是以累计分布函数变换为基础的直方图修正法,可以产生一幅灰度级分布具有均匀概率密度的图像,扩展了像素的取值动态范围。若像素点的原灰度为R,变换后的灰度为S,需要注意的是R、S是归一化后的灰度值,其灰度变换函数T()为:
2.统计原始图像各灰度级的像素数目nk
3.计算原始图像直方图各灰度级的频率数
4.计算原始图像的累计直方图
5.取整计算:Sk=int[(N-1)tk+k/N]
6.确定映像关系:Sk-->tk
7统计新直方图各个灰度级的像素Nk
8.计算新的直方图:pt(tk)=nk/N
2、程序设计:
clear all
%预处理,彩图灰度化
PS=imread('图片位置');%读入彩色图像文件
imshow(PS) %显示出来
title('输入的彩色图像') %刘航宇
imwrite(rgb2gray(PS),'PicSampleGray.bmp'); %将彩色图片灰度化并保存
PS=rgb2gray(PS); %灰度化后的数据存入数组
%二、绘制直方图
[m,n]=size(PS); %测量图像尺寸参数
GP=zeros(1,256); %预创建存放灰度出现概率的向量
for k=0:255
GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置
end
figure,bar(0:255,GP,'g') %绘制直方图
title('原图像直方图')
xlabel('灰度值')
ylabel('出现概率')
%三、直方图均衡化
S1=zeros(1,256);
for i=1:256
for j=1:i
S1(i)=GP(j)+S1(i); %算sk
end
end
S2=round((S1*256)+0.5); %将Sk归到相近级的灰度
for i=1:256
GPeq(i)=sum(GP(find(S2==i))); %计算现有每个灰度级出现的概率
end
figure,bar(0:255,GPeq,'b') %显示均衡化后的直方图
title('均衡化后的直方图')
xlabel('灰度值')
ylabel('出现概率')
%四、图像均衡化
PA=PS;
for i=0:255
PA(find(PS==i))=S2(i+1); %各个像素归一化赋给这个像素
end
figure,imshow(PA) %显示均衡化后的图像
title('均衡化后图像')
imwrite(PA,'PicEqual.bmp'); %图片格式自己改改,中文描述改改,不要光复制我的程序
3、运行结果:
原图:
4、结果分析:
直方图均衡化是图像增强技术的基本方法,本文分析了这种处理方法的基本理论,并用Matlab 进行实验,结果表明,直方图均衡化在一定程度上改善了图像的对比度差和灰度动态范围,增强了图像的可读性,提高了地物的可分性,有利于进行遥感图像的目视解译。 该算法简单,是一种行之有效的图像增强算法。
中文描述,参数,结果分析改改,不要完全拷贝我的