opencv直方图计算.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
opencv直方图计算

直方图计算 目标 本文档尝试解答如下问题: 如何使用OpenCV 函数split 将图像分割成单通道数组。 如何使用OpenCV 函数calcHist 计算图像阵列的直方图。 如何使用OpenCV 函数normalize 归一化数组。 Note 在上一篇中 (直方图均衡化) 我们介绍了一种特殊直方图叫做图像直方图。现在 我们从更加广义的角度来考虑直方图的概念,继续往下读! 什么是直方图? 直方图是对数据的集合统计,并将统计结果分布于一系列预定义的bins 中。 这里的数据不仅仅指的是灰度值 (如上一篇您所看到的),统计数据可能是任何 能有效描述图像的特征。先看一个例子吧。 假设有一个矩阵包含一张图像的信 息 (灰度值 ): 如果我们按照某种方式去统计这些数字,会发生什么情况呢? 既然已知数字 的范围包含 256 个值, 我们可以将这个范围分割成子区域(称作bins), 如: 然后再统计掉入每一个 的像素数目。采用这一方法来统计上面的数字矩 阵,我们可以得到下图( x 轴表示 bin, y 轴表示各个bin 中的像素个数)。 以上只是一个说明直方图如何工作以及它的用处的简单示例。直方图可以统计的 不仅仅是颜色灰度, 它可以统计任何图像特征 (如 梯度, 方向等等)。 让我们再来搞清楚直方图的一些具体细节: dims: 需要统计的特征的数目,在上例中,dims = 1 因为我们仅仅统计了灰度值 (灰度图像)。 bins: 每个特征空间子区段的数目,在上例中, bins = 16 range: 每个特征空间的取值范围,在上例中,range = [0,255] 怎样去统计两个特征呢? 在这种情况下,直方图就是3 维的了,x 轴和y 轴分别 代表一个特征,z 轴是掉入 组合中的样本数目。同样的方法适用 于更高维的情形 (当然会变得很复杂)。 OpenCV 的直方图计算 OpenCV 提供了一个简单的计算数组集(通常是图像或分割后的通道)的直方图函 数calcHist 。支持高达 32 维的直方图。下面的代码演示了如何使用该函数计算 直方图! 源码 本程序做什么? 装载一张图像 使用函数split 将载入的图像分割成 R, G, B 单通道图像 调用函数calcHist 计算各单通道图像的直方图 在一个窗口叠加显示3 张直方图 代码一瞥: #include opencv2/highgui/highgui.hpp #include opencv2/imgproc/imgproc.hpp#include iostream#include stdio.h using namespace std;using namespace cv; /**@函数 main */int main( int argc, char** argv ){ Mat src, dst; /// 装载图像 src = imread( argv[1], 1 ); if( !src.data ) { return -1; } /// 分割成3 个单通道图像 ( R, G 和 B ) vectorMat rgb_planes; split( src, rgb_planes ); /// 设定bin 数目 int histSize = 255; /// 设定取值范围 ( R,G,B) ) float range[] = { 0, 255 } ; const float* histRange = { range }; bool uniform = true; bool accumulate = false; Mat r_hist, g_hist, b_hist; /// 计算直方图: calcHist( rgb_planes[0], 1, 0, Mat(), r_hist, 1, histSize, histRange, uniform, accumulate ); calcHist( rgb_planes[1], 1, 0, Mat(), g_hist, 1, histSize, histRange, uniform, accumulate ); calcHist( rgb_planes[2], 1, 0, Mat(), b_hist, 1, histSize, histRange, uniform, accumulate );

文档评论(0)

hhuiws1482 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档