直方图均衡

直方图均衡化的目的是为了找到并应用一个点运算使得修正后图像的直方图近似于一个均匀分布。基本思想是对于一幅图像(原始直方图为h)找到并应用一种点运算,使得修正后的图像的直方图heq近似均匀分布,因此累计直方图Heq应该近似楔形。由于直方图是一个离散分布,均匀点运算只能移动和合并直方图条目,所以只能在整体上得到一个近似的解。

       根据以上变换思想,所求的点运算可以从原始图像的累积直方图H中求得:

 

其中图像大小为M×N,像素取值范围为[0,K-1]。用Matlab实现的代码如下所示:

%%

I = imread('Fig0316.tif');

subplot(231);imshow(I);title('原图像');

[m,n] = size(I);

H = zeros(1,256);

for v=1:m

    for u =1:n

        a = I(v,u);

        H(a+1) = H(a+1)+1;   %求原图像的直方图    

    end              

end

subplot(232);plot(1:256,H);title('原图像的直方图');

for k=2:256

    H(k) = H(k)+H(k-1);     %求原图像的累积直方图

end

subplot(233);plot(1:256,H);title('原图像的累积直方图');

H2 = zeros(1,256);

for v=1:m

    for u =1:n

    %直方图均衡化操作

    %原理是均匀分布图像的累积直方图是一个线性斜坡形状(楔形)

    %基本思想是通过变换把原图像的累积直方图变为近似楔形

    a = I(v,u);

    b = uint8(H(a+1)*255/(m*n));  %其中m*n是图像大小,灰度范围是0~255

    I(v,u) = b;

    H2(b+1) = H2(b+1)+1;

    end              

end

subplot(234);imshow(I);title('直方图均衡后的图像');

subplot(235);plot(1:256,H2);title('直方图均衡后图像的直方图');

for k=2:256

    H2(k) = H2(k)+H2(k-1);

end

subplot(236);plot(1:256,H2);title('直方图均衡后图像的累积直方图');

%%

仿真结果如下图所示:

 

 

转载于:https://www.cnblogs.com/FlyingFlyer/p/5451196.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值