MATLAB 图像直方图

灰度图像的直方图表示其灰度级出现的频率,是一个表示图像中每个灰度级出现次数的图表。在一个黑暗的图像中,灰色层次(直方图)在低端是杂乱的。在一个均匀明亮的图像中,灰度级(直方图)在上端是杂乱的。在对比度良好的图像中,灰度(直方图)会在很大程度上得到很好的铺展。


查看直方图的语法

原始图像
原始图像 OIP.jpg

在MATLAB中,可以使用imhist函数查看直方图。例如,下面的命令可以用来显示图像OIP.jpg的直方图:


A = imread('E:\MATLAB学习\OIP.jpg');
figure(1), imhist(A);
图像直方图

对直方图执行的三个主要操作包括直方图拉伸、直方图收缩和直方图滑动。下面各段将介绍所有这些操作。

直方图拉伸

这种技术也被称为输入裁剪,它包括一个线性变换,延伸原始直方图的一部分,使其非零强度范围占据整个动态灰度。

如果图像的直方图的中心是杂乱的,可以使用imadjust函数对其进行拉伸。以下命令拉伸直方图:


imadjust (F, [a,b], [c,d])

a, b, c和d的值必须在0和1之间:

 使用imadjust函数拉伸直方图
使用imadjust函数拉伸直方图

命令imadjust (F,[],[1,0])将图像的灰度值反转,以产生类似摄影负片的结果。

使用上述命令拉伸直方图需要用户输入。另一种方法是使用直方图均衡化命令,这是一个完全自动的过程。MATLAB中的直方图均衡化命令是histeq。histeq命令的使用如下所示 :


A = imread('E:\MATLAB学习\OIP.jpg');
HE = histeq(A);
imshow(HE),figure, imhist(HE)

以下分别为拉伸后的图像和均衡化直方图:

图像
图像
 均衡化直方图
均衡化直方图

直方图收缩

这种技术,也称为输出裁剪,修改原始直方图,使其动态灰度范围压缩为更窄的灰度。不调整功能,可用于直方图收缩。


直方图滑动

这种技术包括简单地对图像中的所有像素添加或减去一个恒定的亮度值。整体效果是一个具有可比性的对比度属性的图像,但分别是更高或更低的平均亮度。直方图滑动可以使用imaddimsubtract函数进行操作。

在实现直方图滑动时,必须确保像素值不超出灰度边界。直方图滑动的例子如下:


A = imread('E:\MATLAB学习\OIP.jpg');
imshow(A),title(‘Original Image’);
B=im2double(A);
bright_add = 0.2;
imhist(A), title(‘Original Histogram’);
C=B+bright_add;
imshow(C),title(‘New Bright Image’);
imhist(C), title(‘New Histogram’);
直方图滑动
滑动/或者说平移后的直方图
滑动/或者说平移后的直方图

在本例中,通过向图像的像素值添加0.2来增加亮度。 注意与上文的原始图像和直方图对比。






公众号

关注公众号,获取一手资讯

“ MATLAB 图像直方图 ” comments 0

评论/回复

电子邮件地址不会被公开。 必填项已用*标注