京公网安备 11010802034615号
经营许可证编号:京B2-20210330
直方图你一定知道,那么灰度直方图呢?你了解吗?灰度直方图,顾名思义,就是先统计出来一幅图像中每一个像素出现的次数,之后再把每一个像素出现的次数除以总的像素个数,得到的结果就是这个像素的出现频率,最后再将像素和该像素的出现频率用图表示出来,就是灰度直方图。先简单通俗的介绍了灰度直方图,下面跟随小编一起详细了解一下吧。
一、灰度直方图概念
灰度直方图,是数字图像处理中,一种计算代价非很小,但是非常有用的工具,它概括出了一幅图像的灰度级信息。
灰度直方图是图像灰度级的函数,通常用来描述每个灰度级在图像矩阵中的像素个数或者占有率。灰度直方图横坐标是灰度级,纵坐标表示图像中该灰度级出现的个数(频率)。
一维直方图的结构:
可以将高维直方图理解为图像在每个维度上灰度级分布的直方图。最为常见的是二维直方图,二维中对应每个像素统计个变量。
二·、灰度直方图的性质:
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
【核心关键词】客户、数据分析、指标体系、数据采集、数据指标、业务数据、分析思路、业务需求、分析方法 【专访摘要】本次 CDA ...
2026-07-24在数据分析、业务建模与数字化运营体系中,原始业务数据普遍存在缺失、重复、异常、口径不一致等质量问题,直接用于分析与建模会 ...
2026-07-24 很多数据分析师能熟练计算均值、标准差,但当被问到“如何用一张图让业务方3秒内看懂核心结论”“面对不同数据类型该怎么选 ...
2026-07-24在数据驱动的精细化运营体系中,指标是业务判断、效果复盘、策略优化的核心依据。随着企业数据化程度提升,指标数量持续膨胀,但 ...
2026-07-23在用户运营与产品增长体系中,留存是衡量产品真实价值与用户粘性的核心标尺,也是决定用户生命周期价值、获客投产比的底层因素。 ...
2026-07-23 很多数据分析师精通Excel、SQL、Python等工具,但当被问到“面对一个具体的业务问题,该用什么分析方法”“描述性分析和诊断 ...
2026-07-23【核心关键词】埋点、产品、互联网、数据库、决策、数据分析、产品经理、商业模式、移动互联网、指标体系、运营模块、大数据平 ...
2026-07-22在高并发、大数据量的业务系统中,单表数据量达到千万级甚至亿级后,会出现查询性能骤降、索引维护成本飙升、存储扩容困难等问题 ...
2026-07-22 很多企业团队并非缺乏指标,而是陷入“指标失控”:仪表盘上堆满实时跳动的数据,却无法回答“当前瓶颈在哪、下一步该做什么 ...
2026-07-22在金融风控、企业运营、行业研究等数据分析场景中,大量数据以面板数据形态存在:例如多家分支机构连续多个季度的风险指标、多位 ...
2026-07-21 很多数据分析师每天都在计算指标、制作报表,但当被问到“什么叫指标数据元”“指标数据标准包含哪些核心维度”“指标数据质 ...
2026-07-21一、活动介绍 2026暑期CDA备考冲刺季,为想利用假期拿证的你量身打造。考点胶囊内容搭配多重硬核福利,让你在旅行、实习、居家 ...
2026-07-21金融行业的运营风险贯穿业务全流程,涵盖交易欺诈、操作违规、流程漏洞、合规偏差、客户信用异常等多元场景,是银行、保险、证券 ...
2026-07-17财产保险作为金融行业的核心板块,涵盖车险、家财险、责任险、企财险等多元品类,是个人与企业抵御财产风险、经营风险的重要保障 ...
2026-07-17 很多数据分析师能熟练写SQL、做透视表,但当被问到“数据是从哪里来的?经过哪些加工才进入数据仓库?ETL具体做了什么?”时 ...
2026-07-17【核心关键词】模块、餐饮、客户、门店、企业、订单、供应链、多样化、产品、生产计划、数据分析、生产管理、物料管理、业务分 ...
2026-07-16在数字化分析时代,原始数据本身不具备业务价值,只有通过科学的统计学方法加工、拆解、验证与解读,才能挖掘数据背后的规律、差 ...
2026-07-16 很多数据分析师能熟练地写SQL、做透视表、算描述性统计,但当被问到“如何预测用户流失概率”“如何归因销量下滑的关键因素 ...
2026-07-16在描述性统计分析、数据预处理、异常值排查与多组数据分布对比工作中,箱线图(Box Plot)是应用最广泛的可视化与统计工具之一。 ...
2026-07-15在企业数据存储、业务统计与数据分析工作中,绝大多数业务数据都带有时间维度属性,例如订单创建时间、用户注册时间、支付完成时 ...
2026-07-15