直方图均衡化图像增强与彩色图像处理算法分析2012.05.29目录1. 前言 (1)2. 理论分析 (2)2.1 直方图修正技术的基础 (2)2.2 直方图的均衡化 (3)2.3 直方图均衡化的算法步骤 (4)3. 仿真实验与结果 (6)3.1直方图均衡化Matlab程序 (6)3.2 彩色图形处理Matlab程序 (8)3.3 直方图均衡化仿真结果: (10)3.4 彩色图像处理仿真结果: (13)4. 结论 (14)参考文献 (15)1. 前言在实际应用中,无论采用何种输入装置采集的图像,由于光照、噪声等原因,图像的质量往往不能令人满意。
例如,检测对象物的边缘过于模糊;在比较满意的一幅图像上发现多了一些不知来源的黑点或白点;图像的失真、变形等等。
所以图像往往需要采取一些手段进行改善以求达到较好的效果。
图像增强技术正是在此基础上提出的。
图像增强是图像分析与处理的一个重要的预处理过程,其主要有两个目的:一是运用一系列技术手段改善图像的视觉效果,提高图像的清晰度;二是将图像转化成一种更适合于人或计算机进行分析处理的形式。
即改善图像质量是图像增强的根本目的。
图像增强的意义一般可以理解为:按需要进行适当的变换,对图像的某些特征,如边缘、轮廓、对比度进行强调或锐化,突出某些有用的信息,去除或削弱无用的信息以便于显示、观察或进一步分析和处理。
图像增强技术是一类基本的图像处理技术,是指有选择地突出图像中感兴趣的特征或者抑制图像中某些不需要的特征,其目的是使处理后的图像更适合于人的视觉特性或机器的识别系统,包括图像的轮廓线或者纹理加强、图像去噪、对比度增强等。
因此图像增强处理是图像分析和图像理解的前提和基础。
在图像的获取过程中,特别是对于多媒体监控系统采集的图像,由于监控场景光线照射复杂、拍摄背景也比较复杂等环境因素的影响。
加之摄像设备、传感器等因素引入的噪声,使监控图像在一定程度上存在对比度差、灰度分布范围窄、图像分辨率下降。
因此,为得到一幅清晰的图像必须进行增强处理。
传统的图像增强算法通常是基于整幅图像的统计量,这样在计算整幅图像的变换时,图像中的低频信息、高频信息以及含有的噪声,同时进行了变换,因而在增强图像的同时增强了噪声,导致信息熵下降,给监控图像的分析和后期处理带来了困难。
针对此问题,提出一种新算法。
图像增强处理方法根据图像增强处理所在的空间不同,可分为基于空间域的增强方法和基于频率域的增强方法两类。
空间域处理方法是在图像像素组成的二维空间里直接对每一个像素的灰度值进行处理,它可以是一幅图像内像素点之间的运算处理,也可以是数幅图像间的相应像素点之间的运算处理。
频率域处理方法是在图形的变换域对图像进行间接处理。
其特点是先将图像进行变换,在空间域对图像作傅里叶变换得到它的频谱按照某种变化模型(如傅里叶变换)变换到频率域,完成图像由空间域变换到频率域,然后在频率域内对图像进行低通或高通频率域滤波处理。
处理完之后,再将其反变换到空间域。
直方图均衡化算法是图像增强空域法中的最常用、最重要的算法之一。
它以概率理论作基础,运用灰度点运算来实现直方图的变换,从而达到图像增强的目的。
本文介绍一种基于累积分布函数变换法为基础的直方图修正法。
它可以通过对直方图进行均匀化修正,可使图像的灰度间距增大或灰度均匀分布、增大反差,是图像的细节变得清晰。
2. 理论分析2.1 直方图修正技术的基础一幅给定图像的灰度级经归一化处理后,分布在01r ≤≤范围内。
这时可以对[0,1]区间内的任意一个r 值进行如下变换:()s T r = (1)也就是说,通过上述变换,每个原始图像的像素值r 都对应产生一个s 值。
变换函数()T r 应该满足下列条件:① 在01r ≤≤区间内,()T r 是单值单调增加; ② 对于01r ≤≤,有0()1T r ≤≤这里第一个条件保证了图像的灰度级西欧哪个白到黑的次序不变和反变换函数1()T s -的存在。
第二个条件则保证了映射变化后的像素灰度值在允许的范围内。
从s 到r 的反变换可用式(2)表示,同样也满足上述两个条件1()r T s -= (2)由概率论理论可知,若已知随机变量ξ的概率密度为()r P r ,而随机变量η是ξ的函数,即'()T ηξ=,η的概率密度为()s P s ,所以可以由()r P r 求出()s P s 。
因为()s T r =是单调增加的,由数学分析可知,它的反函数1()r T s -=也是单调函数。
在这种情况下,当s η<,且仅当r ξ<时发生,所以可以求得随即变量η的分布函数为:()()[]()rrF s P s p r p x dx ηηξ-∞=<=<=⎰ (3)对式(3)两边求导,即可得到随即变量η的分布密度函数()s P s 为:111()()()()[()][()]()s r r r r T s dr d drP s P r p r T s p r T s ds ds ds---==⋅=⋅=⋅=(4)由式(4)可知,对于连续情况,设()r P r 和()s P s 分别表示原图像和变换后图像的灰度级概率密度函数。
根据概率论的知识,在已知()r P r 和变换函数()s T r =时,反变换函数1()r T s -=也是单调增长,则()s P s 可由式(4)求出。
2.2 直方图的均衡化对于连续图像,设r 和s 分别表示被增强图像和变换后图像的灰度。
为了简单,在下面的讨论中,假定所有像素的灰度已被归一化了,就是说,当0r s ==时,表示黑色;当1r s ==时,表示白色;变换函数()T r 与原图像概率密度函数()r P r 之间的关系为:()()()rr s T r p r d r ==⎰ 01r ≤≤ (5)式中:r 为积分变量。
式(5)的右边可以看作是r 的累积分布函数(CDF ),因为CDF 是r 的函数,并单调地从0增加到1,所以这一变换函数满足了前面所述的关于()T r 在01r ≤≤内单值单调增加,对于01r ≤≤,有0()1T r ≤≤的两个条件。
由于累积分布函数是r 的函数,并且单调的从0增加到1,所以这个变换函数满足对式(5)中的r 求导,则:()r dsP r dr= (6) 再把结果带入式(4),则11()()11()[()]()[][()]1/()s r r r r T s r T s r dr d p s p r p r p r ds ds ds dr p r --====== (7) 由以上推到可见,变换后的变量s 的定义域内的概率密度是均匀分布的。
由此可见,用r 累积分布函数作为变换函数可产生一幅灰度级分布具有均匀概率密度的图像。
其结果扩展了像素取值的动态范围。
上面的修正方法是以连续随机变量为基础进行讨论的。
为了对图像进行数字处理,必须引入离散形式的公式。
当灰度级是离散值的时候,可用频数近似代替概率值,即:()kr k n p r N=(01k r ≤≤ 0,1,2,k =…,L-1) (8) 式中,L 是灰度级数;()r k p r 是取第k 级灰度值的概率;k n 是在图像中出现第k 级灰度的次数;N 是图像中像素数。
通常把为得到均匀直方图的图像增强技术叫做直方图均衡化处理或直方图线性化处理。
式(5)的直方图均衡化累积分布函数的离散形式可由式(9)表示:()()kkj k k r j i i n s T r p r N=====∑∑ (01j r ≤≤ 0,1,2,k =…,L-1) (9)其反变换为1()k k r T s -= (10)2.3 直方图均衡化的算法步骤直方图均衡化的算法步骤如下:● 列出原始图像和变换后图像的灰度级:I,j =0,1,,L -1,其中L 是灰度级的个数; ● 统计原图像各灰度级的像素个数i n ; ● 计算原始图像直方图:()in p i N=,N 为原始图像像素总个数; ● 计算累积直方图:0()jj k p p k ==∑;● 利用灰度变换函数计算变换后的灰度值,并四舍五入:[(1)0.5]j j INT L p =-+; ● 确定灰度变换关系i j →,据此将原图像的灰度值(,)f m n i =修正为(,)g m n j =; ● 统计变换后各灰度级的像素个数j n ; ● 计算变换后图像的直方图:()j n p j N=;● 对均衡化后的的直方图进行区间统计,显示图像。
流程图3. 仿真实验与结果3.1直方图均衡化Matlab程序clear all;close all;clc;I1=imread('lena.jpg');figure(1);imshow(I1);I2=rgb2gray(I1);figure(2); %原始图像的灰度图像imshow(I2);D=double(I2);imsize=size(D);nbrTot=imsize(1)*imsize(2);nbrEach=zeros(1,256);for K1=1:imsize(1)for K2=1:imsize(2)nbrEach(D(K1,K2)+1)=nbrEach(D(K1,K2)+1)+1; %统计各灰度级像素个数endendY1=nbrEach/nbrTot;S1=zeros(1,256);for i=1:256for k=1:iS1(i)=S1(i)+Y1(k); %均衡后第K级灰度级(包括K)之前各级像素点所占的比率之和endendS2=round(S1*255);for i=1:256if S2(i)>255S2(i)=255;endendD2=zeros(size(D));for K1=1:imsize(1)for K2=1:imsize(2)D2(K1,K2)=S2(D(K1,K2)+1); %均衡后个像素的灰度值endendY3=uint8(D2);Y2=S2;S3=zeros(1,256);for j=1:256S3(S2(j)+1)=S3(S2(j)+1)+Y1(j); %均衡后各灰度级的像素点数endfor i=1:32for j=1:7S3(8*i)=S3(8*(i-1)+j)+S3(8*i); %对均衡后的像素点进行区间统计endS3(8*i)=S3(8*i)/8for j=1:7S3(8*(i-1)+j)=0;endendY2=S3;figure(3);plot(0:255,Y1); %自编函数均衡化前归一化的直方图figure(4) %自编函数均衡化后归一化的直方图plot(0:255,Y2);figure(5); %自编函数所得的直方图均衡化后的图像imshow(Y3);figure(6); %系统函数均衡化前的直方图imhist(I2);J=histeq(I2);figure(7); %系统函数均衡化后的直方图imhist(J);figure(8); %系统函数所得直方图均衡化后的图像imshow(J);3.2 彩色图形处理Matlab程序将RGB图像转换为HIS,分别对H、S、I分量进行均衡化,主要程序代码为:clear all;close all;clc;I1=imread('lena.jpg');rm=double(I1(:,:,1));gm=double(I1(:,:,2));bm=double(I1(:,:,3));D=double(bm);imsize=size(D);nbrTot=imsize(1)*imsize(2);nbrEach=zeros(1,256);for i=1:imsize(1)for j=1:imsize(2)I(i,j)=(rm(i,j)+gm(i,j)+bm(i,j))/3;S(i,j)=1-3*min(min(rm(i,j),gm(i,j)),bm(i,j))/(rm(i,j)+gm(i,j)+bm(i,j));if(bm(i,j)<=gm(i,j))H(i,j)=abs(acos(double((rm(i,j)-gm(i,j)+(rm(i,j)-bm(i,j))/2)/sqrt(double((rm(i,j)-g m(i,j))^2+(rm(i,j)-bm(i,j))*(gm(i,j)-bm(i,j)))))));elseH(i,j)=abs(2*pi-acos(double((rm(i,j)-gm(i,j)+(rm(i,j)-bm(i,j))/2)/sqrt(double((rm(i ,j)-gm(i,j))^2+(rm(i,j)-bm(i,j))*(gm(i,j)-bm(i,j)))))));endendendfor i=1:imsize(1)for j=1:imsize(2)I(i,j)=(rm(i,j)+gm(i,j)+bm(i,j))/3;if(H(i,j)<=2*pi/3)r(i,j)=cos(pi/3-H(i,j));b(i,j)=I(i,j)*(1-S(i,j));g(i,j)=3*I(i,j)-b(i,j)-r(i,j);elseif(H(i,j)<=4*pi/3)r(i,j)=I(i,j)*(1+S(i,j)*cos(H(i,j)-2*pi/3)/cos(pi-H(i,j)));b(i,j)=I(i,j)*(1-S(i,j));g(i,j)=3*I(i,j)-b(i,j)-r(i,j);else r(i,j)=I(i,j)*(1+S(i,j)*cos(H(i,j)-4*pi/3)/cos(5*pi/3-H(i,j))); b(i,j)=I(i,j)*(1-S(i,j));g(i,j)=3*I(i,j)-b(i,j)-r(i,j);endendendJ0(:,:,1)=H;J0(:,:,2)=I1(:,:,2);J0(:,:,3)=I1(:,:,3);figure(1);imshow(I1);figure(2);imshow(uint8(J0));3.3 直方图均衡化仿真结果:1.1:原始图像原始图像灰度图像自编函数均衡化前归一化的直方图系统函数均衡化前的直方图自编函数所得的直方图均衡化后的图像系统函数所得直方图均衡化后的图像自编函数均衡化后归一化的直方图系统函数均衡化后的直方图1.2:原始图像原始图像灰度图像自编函数均衡化前归一化的直方图系统函数均衡化前的直方图自编函数所得的直方图均衡化后的图像系统函数所得直方图均衡化后的图像自编函数均衡化后归一化的直方图系统函数均衡化后的直方图3.4 彩色图像处理仿真结果:原始图像在H分量的直方图均衡化在S分量的直方图均衡化在I分量的直方图均衡化4. 结论图像增强有图像平滑和锐化两种。