matlabimhist 与histeq 函数
imhist
该函数⽤于获取图像数据的灰度直⽅图。灰度直⽅图如下
该图统计了图中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个。
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。
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);
newmap = histeq(X,map,hgram)
newmap = histeq(X,map)
[newmap,T] = histeq(X,…)
这三个是针对索引图像调⾊板的直⽅图均衡化,⽤法和灰度图像的⼀样。
上⾯的⽤法介绍可能还⽐较难懂,下⾯举⼀些例⼦来说明⽤法。
⽐如histeq(I, 16),就是希望均衡化后的直⽅图只有16个灰度级;
matlab直方图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的直⽅图');

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。