- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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 );
您可能关注的文档
最近下载
- 2024年10月27日云南昭通市事业单位选调笔试真题及答案解析.doc VIP
- 讲义总结岩土工程勘察讲义.ppt VIP
- 非常规油气勘探开发地质风险评估.pdf
- 中职 图形图像处理(Photoshop CS5)PS(第7章)教学课件 高教版.ppt VIP
- 市政道路监理规划-范本.pdf VIP
- 2025海南省通信网络技术保障中心招聘事业编制人员12人(第1号)笔试模拟试题及答案解析.docx VIP
- 《飞机上应急医疗》课件——心肺复苏的流程.pptx VIP
- 中职 图形图像处理(Photoshop CS5)PS(第6章)教学课件 高教版.ppt VIP
- 抖音直播社区公约.pdf VIP
- 地质灾害治理工程施工技术规范 DB50_T 989-2020 重庆.pdf VIP
文档评论(0)