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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/anpingbo/article/details/75732640

为了增强图像对比度,通常需要调整图像的灰度级分布,使得亮暗更加分明。如果一幅图像中某些灰度级分布概率过小,就会导致这部分图像不清晰,因此灰度级分布的越平均图像对比度越好。表现在空间上,如果减小分布较大的灰度级的面积,而增加分布较小的灰度级面积,就会突出原来显示不清晰的部分。
调整图像对比度可以看作一个灰度级变换的过程,通过灰度级变换来改变直方图分布。假设原来图像函数为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;
    end
end

f=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 level

p_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);
    end

end

for 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

    end
end
function histogram_image%filter image function
image=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;
end


T=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 template
for 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);

    end
end

图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.

猜你喜欢

转载自blog.csdn.net/anpingbo/article/details/75732640