matlab imhist与histeq函数

参考:
https://zhidao.baidu.com/question/506425784.html
http://www.ilovematlab.cn/thread-1460-1-1.html
https://jingyan.baidu.com/article/9c69d48fbf456113c9024ed3.html

imhist

该函数用于获取图像数据的灰度直方图。灰度直方图如下
matlab imhist与histeq函数_第1张图片
该图统计了图中256个灰度级各自在图像中出现的个数。
在图像增强技术中,图像灰度级直方图有着重要的意义,是直方图修改技术、直方图均衡化等一些图像处理技术的基础。值得注意的是,imhist只能统计灰度图像的直方图,而对于RGB图像则需要分别统计每个通道的直方图。另外多波段遥感影像也可以直方图均衡化。
具体用法:
imhist( img );直接显示图像img的灰度直方图;
imhist(img,n)显示一个统计n个灰度级信息的直方图;
[counts, x] = imhist( img ) ;获取直方图信息,x为灰度级向量,是一个一维向量,里面记录着灰度从0-255所有的值,而countsx也是一个一维向量,里面记录着x中对应灰度值出现的个数。当然x也可以在imhist(i,x)中指定,可以通过stem(x,count)画相应直方图。即统计的灰度级有x个。

i = imread('images/lena.jpg');
% 一定要把图像转为1通道的
i = rgb2gray(i);
imshow(i);title('原图');
figure;
imhist(i);title('直接显示灰度直方图');
figure;
imhist(i,32);title('32imhist');
figure;
[count,x] = imhist(i,32);
stem(x,count);

histeq

另一个与直方图相关的函数就是histeq,histeq是用来做直方图均衡的。需要了解的是直方图均衡化是数字图像处理中较为基础的图像增强方法,通过直方图均衡化能够自适应地有效改善图像对比度不足问题。说得具体一点,直方图均衡化就是将原始直方图变成更均匀分布的图片。
用法:
J = histeq(I,hgram) 将原始图像I的直方图变成用户指定的向量hgram。hgram中的各元素的值域为[0,1]。
J = histeq(I,n) 指定直方图均衡后的灰度级数n,默认值为64。
[J,T] = histeq(I,…) 返回从能将图像I的灰度直方图变换成图像J的直方图变换T。

newmap = histeq(X,map,hgram)
newmap = histeq(X,map)
[newmap,T] = histeq(X,…)
这三个是针对索引图像调色板的直方图均衡化,用法和灰度图像的一样。
上面的用法介绍可能还比较难懂,下面举一些例子来说明用法。
比如histeq(I, 16),就是希望均衡化后的直方图只有16个灰度级;
histeq(I, 64),就是希望均衡化后的直方图只有64个灰度级。
下面使用直方图均衡化对图像进行处理,我们会发现图像处理之后对比度变得明显了。

%使用直方图均衡化
i = imread('images/lena.jpg');
i = rgb2gray(i);
imshow(i);title('原图');

j = histeq(i,200);
figure(2);
imshow(j);title('直方图均衡化');
%需要注意的是此时j并不是只有200个灰度级
imhist(j);title('j的直方图');

matlab imhist与histeq函数_第2张图片
matlab imhist与histeq函数_第3张图片

你可能感兴趣的:(matlab)