【OpenCV】数字图像灰度直方图

本文介绍了灰度直方图的基本概念,并详细讲解了OpenCV库中CvHistogram的使用,包括如何创建直方图及一维、二维直方图的实践操作。此外,提供了实验代码的下载链接。
摘要由CSDN通过智能技术生成

灰度直方图是数字图像中最简单且有用的工具,这一篇主要总结OpenCV中直方图CvHistogram的结构和应用。

灰度直方图的定义

灰度直方图是灰度级的函数,描述图像中该灰度级的像素个数(或该灰度级像素出现的频率):其横坐标是灰度级,纵坐标表示图像中该灰度级出现的个数(频率)。
一维直方图的结构表示为

高维直方图可以理解为图像在每个维度上灰度级分布的直方图。常见的是二维直方图。如红-蓝直方图的两个分量分别表示红光图像的灰度值和蓝光图像灰度值的函数。其图像坐标(Dr,Db)处对应在红光图像中具有灰度级Dr同时在蓝光图像中具有灰度级Db的像素个数。这是基于多光谱——每个像素有多个变量——的数字图像,二维中对应每个像素统计个变量。

OpenCV中的直方图CvHistogram

注意我们在上面理解直方图的意义时更多把他想象成一幅 “图”,继而理解图中横坐标,纵坐标的意义。而在OpenCV中,应该更多把直方图看做 “数据结构”来理解。
typedef struct CvHistogram
{
    int     type;
    CvArr*  bins;  //存放每个灰度级数目的数组指针
    float   thresh[CV_MAX_DIM][2];  //均匀直方图
    float** thresh2; //非均匀直方图
    CvMatND mat;  //直方图数组的内部数据结构
}
CvHistogram;
这个结构看起来简单(比IplImage*元素少多了。。。)其实并不太好理解。
第一个成员type用来指定第二个成员bins的类型。OpenCv中常见到CvArr*的接口,可以用以指定诸如CvMat、CvMatND、IplImage的类型,其实CvArr*的是一个指向void的指针。在函数内部有时需要得到确切的指向类型,这就需要type来指定。
thr
评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值