MATLAB-数字图像处理 图像直方图归一化

简介: MATLAB-数字图像处理 图像直方图归一化

图像直方图归一化

图像直方图概念:

图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的。纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比。图像是由像素构成,因为反映像素分布的直方图往往可以作为图像一个很重要的特征。

图像灰度直方图:一副数字图像有[0~255]灰度级,直方图定义如下:

其中,是第k个灰度级(如:255),是该灰度级的个数。
归一化直方图定义如下:

即:第k个灰度级出现的数量,比上所有灰度级数量总和,也就是概率

获得图像直方图

t=imread('a1.jpg')
subplot(1,2,1),imshow(t),title('原图')
subplot(1,2,2),imhist(t),title('图像直方图')

效果图:
在这里插入图片描述

Imhist
该函数用于获取图像数据直方图。在图像增强技术中,图像灰度级直方图有着重要的意义,是直方图修改技术、直方图均衡化等一些图像处理技术的基础。在matlab 的命令窗口中键入doc imhist或help imhist即可获得该函数的帮助信息。

调用格式:

imhist(I,n)
imhist(X,map)
[counts,x] = imhist(I)
说明:imhist(I,n)其中,I为灰度的输入图像,n为指定的灰度级数目,缺省值为256;imhist(X,map)计算和显示索引色图像X的直方图,map为调色板。用stem(x,counts)同样可以显示直方图。counts和x分别为返回直方图数据向量和相应的彩色向量。

这里着重说一下imhist(I,n)的用法:
验证代码:

 t=imread('a1.jpg')
subplot(2,3,1),imshow(t),title('原图')
subplot(2,3,2),imhist(t),title('灰度级数默认:256')
subplot(2,3,3),imhist(t,128),title('灰度级数:128')
subplot(2,3,4),imhist(t,64),title('灰度级数:64')
subplot(2,3,5),imhist(t,32),title('灰度级数:32')
subplot(2,3,6),imhist(t,16),title('灰度级数:16')

结果图
在这里插入图片描述
总结imhist(I,n):

n的定义是灰度级数,这里我们可以理解为将0~255分成几份,比如默认为256,就是分成256份,一份是1,所以灰度值每隔1就统计一次;又n为128,则把0-255分成128份,一份为2,灰度值每隔2统计一次,所以从对比图像看,n为128的看起来比n为256的更稀疏。

[counts,x] = imhist(I)这句话的意思是,获取直方图的横坐标和纵坐标,即各个像素级,以及每个像素级上的像素出现的次数,这个有个易错点,就是,counts其实是直方图的纵坐标值,而x才是直方图的横坐标。

那么获得这两个值有什么用呢? 这里是可以利用这两个值,用stem函数绘出统计图像

上代码:

F=imread('a1.jpg');
I=rgb2gray(F);
subplot(1,3,1),imshow(I),title('原图')
subplot(1,3,2),imhist(I),title('原图的图像直方图')
[count,x]=imhist(I)
% 获取直方图的横坐标和纵坐标,即各个像素级,以及每个像素级上的像素出现的次数 counts:纵坐标 x:横坐标
subplot(1,3,3),stem(x,count),title('根据图像直方图绘制的统计图')
% 通过刚才得到的值,绘制条形图。

效果图:
在这里插入图片描述
这里看出stem绘出的图像和imhist绘出的图像其实是一样的,只是stem绘出的图像统计了次数。

如果这里我们需要将图像直方图归一化,其实就是将纵坐标变成当前次数占总次数的概率,这个也很简单,就需要将stem的counts先除以总像素数量就行。
代码:

F=imread('a1.jpg');
I=rgb2gray(F);
[m,n]=size(I)
subplot(1,4,1),imshow(I),title('原图')
subplot(1,4,2),imhist(I),title('原图的图像直方图')
[count,x]=imhist(I)
subplot(1,4,3),stem(x,count),title('根据图像直方图绘制的统计图')
count=count/m/n
% 获取直方图的横坐标和纵坐标,即各个像素级,以及每个像素级上的像素出现的次数 counts:纵坐标 x:横坐标
subplot(1,4,4),stem(x,count),title('图像直方图归一化')

效果图:
在这里插入图片描述

目录
相关文章
|
6天前
|
编解码 资源调度
MATLAB | 绘图配色第九期带高斯分布的直方图
MATLAB | 绘图配色第九期带高斯分布的直方图
21 0
|
6月前
|
编解码 算法 Java
基于Gabor-小波滤波深度图表面法线的特征提取算法【通过正常Gabor-小波的直方图进行2D或3D特征提取】研究(Matlab代码实现)
基于Gabor-小波滤波深度图表面法线的特征提取算法【通过正常Gabor-小波的直方图进行2D或3D特征提取】研究(Matlab代码实现)
|
9月前
|
机器学习/深度学习 传感器 算法
【图像分割】基于局部空间信息直方图模糊聚类FGFCM 实现图像图像分割附matlab代码
【图像分割】基于局部空间信息直方图模糊聚类FGFCM 实现图像图像分割附matlab代码
|
10月前
|
机器学习/深度学习 传感器 算法
基于点特征直方图(PFH)算法实现点云拼接附matlab代码
基于点特征直方图(PFH)算法实现点云拼接附matlab代码
|
11月前
|
传感器 机器学习/深度学习 分布式计算
基于Matlab实现表征 DSERN 图像传感器的单样本光子计数直方图期望最大化算法 (PCH-EM)
基于Matlab实现表征 DSERN 图像传感器的单样本光子计数直方图期望最大化算法 (PCH-EM)
|
11月前
|
缓存 算法 数据可视化
数字图像处理Matlab函数全汇总
数字图像处理Matlab函数全汇总
286 0
|
11月前
|
算法 C++ 计算机视觉
MATLAB--数字图像处理 图像的灰度变换与直方图修正
MATLAB--数字图像处理 图像的灰度变换与直方图修正
196 0
MATLAB--数字图像处理  图像的灰度变换与直方图修正
|
11月前
|
编解码 计算机视觉
MATLAB--数字图像处理 图像的采样与量化
MATLAB--数字图像处理 图像的采样与量化
325 0
MATLAB--数字图像处理 图像的采样与量化
|
11月前
|
计算机视觉
MATLAB--数字图像处理 Hough变换
MATLAB--数字图像处理 Hough变换
128 0
MATLAB--数字图像处理 Hough变换
|
11月前
|
算法 计算机视觉
MATLAB--数字图像处理 Otsu算法(MATLAB原理验证)
MATLAB--数字图像处理 Otsu算法(MATLAB原理验证)
255 0
MATLAB--数字图像处理 Otsu算法(MATLAB原理验证)

热门文章

最新文章

相关产品