图像处理(1)直方图均衡

来源:互联网 发布:php curl 跳转页面 编辑:程序博客网 时间:2024/04/30 18:23

为了增强图像对比度,通常需要调整图像的灰度级分布,使得亮暗更加分明。如果一幅图像中某些灰度级分布概率过小,就会导致这部分图像不清晰,因此灰度级分布的越平均图像对比度越好。表现在空间上,如果减小分布较大的灰度级的面积,而增加分布较小的灰度级面积,就会突出原来显示不清晰的部分。
调整图像对比度可以看作一个灰度级变换的过程,通过灰度级变换来改变直方图分布。假设原来图像函数为f(r),分布概率密度为p(r)。
现在变换灰度级r,如下:
s=g(r)
直方图均衡要求,每个灰度级概率密度平均,即:
这里写图片描述
其中L-1为灰度级数。
根据总概率为1可以求出变换函数g(r)。
这里写图片描述
均衡的灰度级是原有灰度级概率密度的积分,用离散量表示为累加:
这里写图片描述
接下来看直方图均衡的处理效果,MATLAB程序包含统计灰度分布的grayLevel_ statistic.m和均衡化函数histogram_equal.m。

function f=grayLevel_statistic(gray, level)[row, col]=size(gray);f=linspace(0,0,level);f=double(f);for i=1:1:row    for j=1:1:col        f(gray(i,j)+1)=f(gray(i,j)+1)+1;    endendf=f./(row*col);
function T=histogram_equal(gray, level)[row,col]=size(gray);T=zeros(row, col);p=grayLevel_statistic(gray, level);%get the probability of gray levelp_sum=linspace(0,0,level);p_sum=double(p_sum);for k=1:1:level    if k==1        p_sum(k)=p(k);    else        p_sum(k)=p_sum(k-1)+p(k);    endendfor i=1:1:row    for j=1:1:col        if p_sum(gray(i,j)+1)*(level-1) >= level-1            T(i,j)=level-1;        else            T(i,j)=round(p_sum(gray(i,j)+1)*(level-1));        end    endend
function histogram_image%filter image functionimage=imread('timg.jpeg');[d1,d2,d3]=size(image);if d3==3    R=image(:,:,1);    G=image(:,:,2);    B=image(:,:,3);    gray=round((1/3)*(R+G+B));elseif d3==2    R=image(:,:,1);    G=image(:,:,2);    gray=round((1/2)*(R+G));else    gray=image;endT=histogram_equal(gray,256);imshow(T, [0, 255]);

经过直方图处理后图像具有较好清晰度,增强了明暗对比。但是全局直方图均衡可能会模糊掉一些原来不突出的地方,掩盖掉细节。采用局部直方图均衡可以让细节更加清晰,通过在一个局部区域使用直方图均衡,然后移动到相邻区域继续进行直方图均衡,替换原来变换的灰度值。MATLAB中增加的局部直方图均衡代码为:

function T=histogram_local_equal(gray,level)[row,col]=size(gray);T=zeros(row,col);%move the 3X3 templatefor i=2:1:row-1    for j=2:1:col-1        template=gray(i-1:i+1,j-1:j+1);        %update the gray data using the local histogram data        T(i-1:i+1,j-1:j+1)=histogram_equal(template,level);    endend

图1 (a)灰度图(b)全局直方图均衡处理(c)局部直方图均衡处理,采用3x3模板
图1 (a)灰度图(b)全局直方图均衡处理(c)局部直方图均衡处理,采用3x3模板

参考文献:
1. 《数字图像处理》,Rafael. C. Gonzalez, Richard. E. woods.
2. 《image processing using matlab》, Rafael. C. Gonzalez.