直方图你一定知道,那么灰度直方图呢?你了解吗?灰度直方图,顾名思义,就是先统计出来一幅图像中每一个像素出现的次数,之后再把每一个像素出现的次数除以总的像素个数,得到的结果就是这个像素的出现频率,最后再将像素和该像素的出现频率用图表示出来,就是灰度直方图。先简单通俗的介绍了灰度直方图,下面跟随小编一起详细了解一下吧。
一、灰度直方图概念
灰度直方图,是数字图像处理中,一种计算代价非很小,但是非常有用的工具,它概括出了一幅图像的灰度级信息。
灰度直方图是图像灰度级的函数,通常用来描述每个灰度级在图像矩阵中的像素个数或者占有率。灰度直方图横坐标是灰度级,纵坐标表示图像中该灰度级出现的个数(频率)。
一维直方图的结构:
可以将高维直方图理解为图像在每个维度上灰度级分布的直方图。最为常见的是二维直方图,二维中对应每个像素统计个变量。
二·、灰度直方图的性质:
1、灰度直方图只反映图像的灰度分布情况,不能反映图像像素的位置,也就是丢失了像素的位置信息
2、一幅图像对应的灰度直方图是唯一的,但是不同的图像却能够对应相同的直方图
3、将一幅图像分为多个区域,多个区域的直方图之和也就是原图像的直方图
三、创建灰度直方图
<span style="font-size:18px;">#include <iostream> #include "cv.h" #include "highgui.h" #include "cxcore.h" using namespace std; IplImage *DrawHistogram(CvHistogram*hist, float scaleX = 1, float scaleY = 1){ // 画直方图 float histMax = 0; cvGetMinMaxHistValue(hist, 0 , &histMax, 0, 0); // 取得直方图中的最值 IplImage *imgHist = cvCreateImage(cvSize(256 * scaleX, 64*scaleY), 8, 1); cvZero(imgHist); //// 清空随机值 for(int i = 0; i < 255; i++) { float histValue = cvQueryHistValue_1D(hist, i); // 取得直方图中的i值 float nextValue = cvQueryHistValue_1D(hist, i+1); int numPt = 5; CvPoint pt[5]; pt[0] = cvPoint(i*scaleX, 64*scaleY); pt[1] = cvPoint((i+1)*scaleX, 64*scaleY); pt[2] = cvPoint((i+1)*scaleX, (1 -(nextValue/histMax))* 64 * scaleY); pt[3] = cvPoint((i+1)*scaleX, (1 -(histValue/histMax))* 64 * scaleY); pt[4] = cvPoint(i*scaleX, 64*scaleY); cvFillConvexPoly(imgHist, pt, numPt, cvScalarAll(255)); } return imgHist; } int main() { IplImage *img = cvLoadImage("F:\\tongtong.jpg",1); if(!img){ cout << "No data img" << endl; } int dims = 1; int sizes = 256; float range[] = {0,255}; float*ranges[]={range}; CvHistogram *hist = cvCreateHist(dims, &sizes, CV_HIST_ARRAY, ranges, 1); cvClearHist(hist); //清除直方图里面的随机值 IplImage *imgBlue = cvCreateImage(cvGetSize(img), 8, 1); IplImage *imgGreen = cvCreateImage(cvGetSize(img), 8, 1); IplImage *imgRed = cvCreateImage(cvGetSize(img), 8, 1); cvSplit(img, imgBlue, imgGreen, imgRed, NULL); //将多通道图像分解 cvCalcHist(&imgBlue, hist, 0, 0); // 计算图像的直方图 IplImage *histBlue = DrawHistogram(hist); // 将直方图中的数据画出来 cvClearHist(hist); cvCalcHist(&imgGreen, hist, 0, 0); IplImage *histGreen = DrawHistogram(hist); cvClearHist(hist); cvCalcHist(&imgRed, hist, 0, 0); IplImage *histRed = DrawHistogram(hist); cvClearHist(hist); cvNamedWindow("show",0); cvNamedWindow("B", 0); cvNamedWindow("G", 0); cvNamedWindow("R", 0); cvShowImage("show",img); cvShowImage("B",histBlue); cvShowImage("G",histGreen); cvShowImage("R", histRed); cvWaitKey(0); cvReleaseImage(&img); cvDestroyWindow("show"); cvReleaseImage(&histBlue); cvDestroyWindow("B"); cvReleaseImage(&histGreen); cvDestroyWindow("G"); cvReleaseImage(&histRed); cvDestroyWindow("R"); return 0; }</span>
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在数据驱动决策的时代,掌握多样的数据分析方法,就如同拥有了开启宝藏的多把钥匙,能帮助我们从海量数据中挖掘出关键信息,本 ...
2025-03-06在备考 CDA 考试的漫漫征途上,拥有一套契合考试大纲的优质模拟题库,其重要性不言而喻。它恰似黑夜里熠熠生辉的启明星,为每一 ...
2025-03-05“纲举目张,执本末从。”若想在数据分析领域有所收获,一套合适的学习教材至关重要。一套优质且契合需求的学习教材无疑是那关 ...
2025-03-04以下的文章内容来源于刘静老师的专栏,如果您想阅读专栏《10大业务分析模型突破业务瓶颈》,点击下方链接 https://edu.cda.cn/go ...
2025-03-04在现代商业环境中,数据分析师的角色愈发重要。数据分析师通过解读数据,帮助企业做出更明智的决策。因此,考取数据分析师证书成为了许多人提升职业竞争力的选择。本文将详细介绍考取数据分析师证书的过程,包括了解证书种类和 ...
2025-03-03在当今信息化社会,大数据已成为各行各业不可或缺的宝贵资源。大数据专业应运而生,旨在培养具备扎实理论基础和实践能力,能够应 ...
2025-03-03数据分析师认证考试全面升级后,除了考试场次和报名时间,小伙伴们最关心的就是报名费了,报 ...
2025-03-032025年刚开启,知乎上就出现了一个热帖: 2024年突然出现的经济下行,使各行各业都感觉到压力山大。有人说,大环境越来越不好了 ...
2025-03-03大数据分析师培训旨在培养学员掌握大数据分析的基础知识、技术及应用能力,以适应企业对数据分析人才的需求。根据不同的培训需求 ...
2025-03-03小伙伴们,最近被《哪吒2》刷屏了吧!这部电影不仅在国内掀起观影热潮,还在全球范围内引发了关注,成为中国电影崛起的又一里程 ...
2025-03-03以下的文章内容来源于张彦存老师的专栏,如果您想阅读专栏《Python 数据可视化 18 讲(PyEcharts、Matplotlib、Seaborn)》,点 ...
2025-02-28最近,国产AI模型DeepSeek爆火,其创始人梁文峰走进大众视野。《黑神话:悟空》制作人冯骥盛赞DeepSeek为“国运级别的科技成果” ...
2025-02-271.统计学简介 听说你已经被统计学劝退,被Python唬住……先别着急划走,看完这篇再说! 先说结论,大多数情况下的学不会都不是知 ...
2025-02-27“我们的利润率上升了,但销售额却没变,这是为什么?” “某个业务的市场份额在下滑,到底是什么原因?” “公司整体业绩稳定, ...
2025-02-26在数据分析工作中,你可能经常遇到这样的问题: 从浏览到消费的转化率一直很低,那到底该优化哪里呢? 如果你要投放广告该怎么 ...
2025-02-25近来deepseek爆火,看看deepseek能否帮我们快速实现数据看板实时更新。 可以看出这对不知道怎么动手的小白来说是相当友好的,尤 ...
2025-02-25挖掘用户价值本质是让企业从‘赚今天的钱’升级为‘赚未来的钱’,同时让用户从‘被推销’变为‘被满足’。询问deepseek关于挖 ...
2025-02-25在当今这个数据驱动的时代,几乎每一个业务决策都离不开对数据的深入分析。而其中,指标波动归因分析更是至关重要的一环。无论是 ...
2025-02-25以下文章来源于数有道 ,作者数据星爷 SQL查询是数据分析工作的基础,也是CDA数据分析师一级的核心考点,人工智能时代,AI能为 ...
2025-02-25“最近复购率一直在下降,我们的营销力度不小啊,为什么用户还是走了?” “是不是广告投放的用户质量不高?还是我们的产品问题 ...
2025-02-25