Bootstrap

直方图均衡化的实现

直方图均衡化的实现

       直方图均衡是数字图像的一个基础算法,原理在这里我就不再多说的,如果还没弄懂直方图均衡原理的朋友,建议先去看懂原理,这里是传送门
       下面,先来看看用Matlab中的histeq方法处理的代码:

clc
clear
img = imread('river.jpg');  %读取图像
figure(1);                  %画出原图及其直方图
subplot(3, 2, 1);
imshow(img);
title('原图');
subplot(3, 2, [3 4]);
imhist(img);
title('原图的直方图');
[J,T] = histeq(img, 256);   %直方图均衡化
subplot(3, 2, 2);           %画出均衡化后的图及直方图
imshow(J);
title('均衡化的图');
subplot(3,2, [5 6]);
imhist(J);
title('均衡化后的直方图');

       然后,我们再来试试不直接调用histeq方法,根据直方图的数学原理,直接计算出均衡化之后的图像。具体实现如下:

clc;
clear;
img = imread('river.jpg');  %读取图片
[M,N] = size(img);          %获取行列数据
[count, x] = imhist(img);   %获取每个灰度级的像素数目及累积概率密度
a = 255.0/(M*N);            %计算L/A0
s = zero
;