matlab histeq函数做直方图规定化

如题 做直方图规定化的时候 谁能解释一下histeq(I,hgram)中的hgram参数,是怎么调整直方图的

严格一点来说,直方图均衡化和直方图规定化是不同的概念。histeq是用来做直方图均衡的。

hgram是均衡化后的灰度级个数。
比如histeq(I, 16),就是希望均衡化后的直方图只有16个灰度级;
histeq(I, 64),就是希望均衡化后的直方图只有64个灰度级。

假设原始图像为256级,共有X个像素,现希望均衡化为N个灰度级,过程如下:
步骤1:计算原始图像I的累积函数A(g),其中g=[0,255]表示256个灰度级。
A(0)就是灰度级为0的元素个数;
A(1)就是灰度级为0和1的元素个数和;
A(2)就是灰度级为0、1和2的元素个数和;
...依次类推...;
A(255)就是X,即原始图像的总的像素个数。

步骤2:计算原始直方图和均衡化后直方图的映射关系g->G,即将原始图像中的灰度值g变成新的灰度值G。
这里,G=N*A(g)/X

步骤3:遍历原始图像I,依据步骤2中的映射关系,把所有像素点的灰度值变成新的灰度值,完毕。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-14
对于double型图像,hgram的各元素值域为[0,1];而对于uint8型图像,hgram的各元素的取值范围为[0,255]。J=histeq(I,n)指定直方图化后的灰度等级数n,默认值为64。
例 给出直方图均衡化增强图像对比度的MATLAB 程序。
I=imread('lena.bmp');
J=histeq(I);%对原图像进行直方图均衡化处理
imshow(I);title('原图像');
figure,imshow(J);
figure,subplot(1,2,1);
imhist(I,64);title('原图像');
subplot(1,2,2);
imhist(J,64);title('均衡化之后的图像')
建议用默认的参数就可以。
第2个回答  2013-06-05
%下面利用直方图规定化对图像进行增强:
I=imread('loufang.jpg');
subplot(141),imshow(I);
title('原始图像');
hgram=50:1:250; %规定化函数
J=histeq(I,hgram);
subplot(142),imshow(J);
title('直方图规定化后的图像');
subplot(143),imhist(I,64);
title('原始图像的直方图');
subplot(144),imhist(J,64);
title('直方图规定化后的直方图');

%运行结果:
%变换灰度间隔后的图像和直方图:
%hgram=50:1:250; hgram=50:5:250;
相似回答