直方图计算
- 格式:xls
- 大小:45.50 KB
- 文档页数:15
第三章直方图直方图是用一系列等宽不等高的长方形来表示,宽度表示数据范围的间隔,高度表示在给定间隔内数据出现的频数,变化的高度形态表示数据的分布情况。
直方图一般用于显示波动的形态,直观地传达有关过程情况的信息和决定在何处集中力量进行质量改进。
根据直方图提供的信息,可以推算出数据分布的各种特性值和工序能力指数和工序的不合格品率。
一、收集数据:收集所需的数据,并将其填入数据表。
一般经常采取的数据个数为50~200个,组数常在6~15范围内。
否则反映分布及随后的各种推算会有很大的误差。
二、确定组距和组数:组距选取时最好为测量单位1、2、5的倍数。
求出步骤:a计算极差R。
从数据中选出最大值和最小值,这时应去掉相差悬殊的异常数据。
用最大值减最小值所得结果即为极差。
b用测量单位的1、2、5的倍数除极差,并将所得值修整。
c将圆整值对照下表确定组数,这时圆整值对应的测量单位的倍数值即为组距。
组数表d确定分组组界:把数据中的最小值分在第一组的中部,并把分组组界定在最小测量单位的1/2处,以避免测量值恰好落在边界上。
第一组下限值为最小值-最小测量单位/2,第一组的上限为下限值加上组距。
依次类推,直至它包括最大值的末一组的上界为止。
三、作频数分布表a填入顺序号及各组界限值。
b计算各组的组中值:X中c统计各组频数四、作直方图:用横坐标标注质量特性的测量值的分界值,纵坐标标注频数值,各组的频数用直方柱的高度表示,就形成了直方图。
确定横坐标刻度时要考虑包括数据的整个分布范围,确定纵坐标刻度时,应考虑最大刻度值要包容最大频数的组。
在图内作必要的说明(如图名、收集数据的时间和地点、总频数、统计特性值等)。
五、图形分析常用的分析方法有图形分析和对照标准(规格)分析。
图形分析对质量特性计量值而言,其数据分布大体上符合正态分布。
在正常的生产情况下,其直方图的形状也应呈现出正常的形态;当有异常因素影响时,直方图的图形也呈现出异常。
正常型(对称型)正常型的直方图形,中间高、两边低,左右基本对称。
频率分布直方图的平均数
频率分布直方图是用来描述一组数据的分布情况的图表。
它将数据的取值范围划分成一些区间,统计每个区间内数据出现的次数,然后将这些次数用纵向的条形图表示出来。
频率分布直方图的平均数是指所有数据的平均数。
如果数据有n个,则平均数计算公式为:
平均数= Σ(数据值× 频率) / Σ频率
其中,Σ(数据值× 频率)表示所有数据值乘以对应的频率的总和,Σ频率表示所有数据的频率的总和。
例如,对于如下的频率分布直方图:
数据值频率
0-10 3
10-20 5
20-30 2
30-40 4
40-50 1
则平均数计算如下:
平均数= (0 × 3 + 10 × 5 + 20 × 2 + 30 × 4 + 40 × 1) / (3 + 5 + 2 + 4 + 1)
= 270 / 15
= 18
频率分布直方图的平均数可以反映出数据的中位数,即大多数数据取值的中间值。
百分位数(Percentile)是指在一组数中,有百分之多少的数比它小。
在频率分布直方图中求百分位数的方法如下:
1 找出给定百分位数所对应的频率,也就是给定百分位数在统计表
中的纵坐标。
2 在频率分布直方图中找出给定百分位数所对应的频率的那一列,
也就是给定百分位数在统计表中的横坐标。
3 在频率分布直方图的坐标轴上,用直线连接所找出的纵坐标和横
坐标,这条直线就是给定百分位数的纵轴坐标。
例如,如果要在频率分布直方图中求出第25 百分位数,那么应该找出第25 百分位数所对应的频率,然后在频率分布直方图中找出第25 百分位数所对应的频率的那一列,最后在坐标轴上用直线连接这两点。
这条直线就是第25 百分位数在频率分布直方图中的纵轴坐标。
注意,在求百分位数的过程中,需要注意频率分布直方图的刻度。
如果刻度不同,那么求出来的结果也会不同。
因此,在求百分位数时,需要注意频率分布直方图的刻度。
另外,在求百分位数时,还需要注意下列几点:
1 百分位数是从小到大排列的,因此求百分位数时应该从小到大排
列数据。
2 百分位数的值可能不是数据中的一个实际数值,因此求百分位数
时需要进行插值。
3 百分位数的值可能不是数据中的一个实际数值,因此求百分位数
时需要进行四舍五入。
4 如果数据中有重复的数值,则百分位数的值可能会被重复计算。
因此,在求百分位数时,需要注意数据中的重复值。
希望这些信息对你有所帮助。
南通大学计算机科学与技术学院《数字图像处理》课程实验报告书实验名计算图像的直方图班级计 121姓名张进学号 12130220162014年6月 16 日一、实验内容1、打开一张图,计算其直方图。
二、图像直方图的概念图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的。
纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比。
图像是由像素构成,因为反映像素分布的直方图往往可以作为图像一个很重要的特征。
在实际工程中,图像直方图在特征提取、图像匹配等方面都有很好的应用。
三、灰度直方图的计算1、灰度直方图的定义灰度直方图是灰度级的函数,描述图像中该灰度级的像素个数(或该灰度级像素出现的频率):其横坐标是灰度级,纵坐标表示图像中该灰度级出现的个数(频率)。
一维直方图的结构表示为高维直方图可以理解为图像在每个维度上灰度级分布的直方图。
常见的是二维直方图。
如红-蓝直方图的两个分量分别表示红光图像的灰度值和蓝光图像灰度值的函数。
其图像坐标(Dr,Db)处对应在红光图像中具有灰度级Dr同时在蓝光图像中具有灰度级Db的像素个数。
这是基于多光谱——每个像素有多个变量——的数字图像,二维中对应每个像素统计个变量。
简单的说,直方图就是对数据进行统计,将统计值组织到一系列事先定义好的bin中。
bin的数值是从数据中计算出的特征的统计量,这些数据可以是诸如梯度,方向,色彩或者任何其他特征。
无论如何,直方图获得的是数据分布的统计图。
通常直方图的数据要低于原始数据。
由于原始数据点可以表征任何事情,所以直方图实际上是一个方便表示图像特征的手段。
2、灰度直方图的计算对于彩色图像的R、G、B各彩色分量取反的技术就是图像的反色处理,这在处理二值化图像的连通区域选取的时候非常重要。
如物体连通域用黑色表示,而二值化后的物体连通域图像可那是白色的,而背景是黑色的,这时应手动选取图像的反色处理或有程序根据背景和物体连通域两种颜色的数量所占比例而自动选择是否选择选取图像的反色处理int main(){Mat Image=imread("../cat.png");cvtColor(Image,Image,CV_BGR2GRAY);const int channels[1]={0};const int histSize[1]={256};float hranges[2]={0,255};const float* ranges[1]={hranges};MatND hist;calcHist(&Image,1,channels,Mat(),hist,1,histSize,ranges);return 0;}3、彩色直方图计算int main(){Mat Image=imread("../cat.png");const int channels[3]={0,1,2};const int histSize[3]={256,256,256};float hranges[2]={0,255};const float* ranges[3]={hranges,hranges,hranges};MatND hist;calcHist(&Image,1,channels,Mat(),hist,3,histSize,ranges);return 0;}4、不均匀直方图分别统计0-50,50-80,80-150,150-230,230-255区间的灰度分布:int main(){Mat Image=imread("../cat.png");cvtColor(Image,Image,CV_BGR2GRAY);const int channels[1]={0};int histSize[1]={5};float hranges[6]={0,50,80,150,230,255};const float* ranges[1]={hranges};MatND hist;calcHist(&Image,1,channels,Mat(),hist,1,histSize,ranges,false);return 0;}四、直方图的显示直方图计算得到的实际上是一个多维数组,这并不够直观,我们希望能够像在Excel中把相关数据通过表的形式表示出来。
直⽅图均衡化计算公式直⽅图均衡化(⾊调均化)“图像(Image)>调整(Adjust)”菜单的功能⾊调均化(Equalize)Photoshop菜单:图像>调整>⾊调均化公式:(公式中Sk表⽰均衡化后的灰度值,∑表⽰总和,nj是原图中某个灰度⾊阶j的像素数量,j的范围是0~k,N是图像像素总数。
)“⾊调均化”命令重新分布图像中像素的亮度值,以便它们更均匀地呈现所有范围的亮度级。
使⽤此命令时,Photoshop尝试对图像进⾏直⽅图均衡化(Histogram Equalization),即在整个灰度范围中均匀分布每个⾊阶的灰度值。
当扫描的图像显得⽐原稿暗,⽽您想平衡这些值以产⽣较亮的图像时,能够使⽤“⾊调均化”命令。
配合使⽤“⾊调均化”命令和“直⽅图”命令,能够看到亮度的前后⽐较。
使⽤“⾊调均化”命令:1. 选择菜单图像>调整>⾊调均化。
2. 假如已选择⼀个图像区域,在弹出的对话框中选择要均化的内容,然后点按“好”。
“仅⾊调均化所选区域”只均匀地分布选区的像素。
“基于所选区域⾊调均化整个图像”基于选区中的像素均匀分布所有图像的像素。
原理直⽅图均衡化是⼀种灰度变换算法,因此我们重点研究灰度图像的直⽅图均衡化。
绝对的均匀图A是⼀个⿊⽩灰均匀渐变,0~255的每⼀个⾊阶的灰度数量差不多上相同的。
图B的是图A的像素打乱了顺序随机分布的,每种灰度的数量都与图A的相同,因⽽它的直⽅图也与图A的相同。
图A和图B的直⽅图。
每种灰度数量是相同的,直⽅图呈⼀个⿊⾊矩形。
近似的均匀关于⼀般的图像,由于每种灰度的像素数量并不相同,我们没⽅法把每种灰度的重量调得像图A、B那么均匀,然⽽能够做到近似的均匀。
也确实是讲,把直⽅图横向平均分成⼏份之后,使每⼀份的像素数量⼤致相等。
下⾯是⼀幅图⽚的直⽅图,共有19200个像素,从左到右平均分成三份。
均衡化之后,每份的像素数量都在6400左右。
⼿⼯调整⽅法我们拍摄或扫描的照⽚往往会由于光线太强或太弱,使图像对⽐度减弱,细节分辨不清。
颜色直方图的计算、显示、处理、对比及反向投影(How to Use Histogram? Calculate, Show, Process, Compare and BackProject)作者:王先荣前言颜色直方图直观的显示了图像在色彩空间的分布状况,本文将讨论在EmguCv及OpenCv中跟直方图相关的一些基本操作,包括:计算、显示、处理、对比及反向投影,并谈谈在实践过程中得到的一些经验。
如无特别说明,下文所提的直方图均指颜色直方图。
直方图的计算EmguCv将OpenCv的一系列直方图函数封装到了类DenseHistogram里面,可以用方法Calculate方便的计算图像的直方图。
不过值得注意的是,该方法接受的第一个参数是“单通道”图像数组;而一般情况下的图像都是3通道的,在计算之前我们需要用Image<TColor,TDepth>.Split方法将其分解成单通道图像,然后选择需要参与直方图计算的通道。
下面有几段计算直方图的代码,分别计算单通道(红色)直方图、色调和饱和度直方图。
计算直方图///<summary>///计算直方图(红色)///</summary>private void CalcHistRed(){//计算int rBins = 256;RangeF rRange = new RangeF(0f, 255f);Image<Bgr, Byte> imageSource = new Image<Bgr, By te>((Bitmap)pbSource.Image);Image<Gray, Byte> imageRed = imageSource.Split() [2];DenseHistogram hist = new DenseHistogram(rBins, rRange);hist.Calculate(new IImage[] { imageRed }, false, null);//显示pbHistogram.Image = GenerateHistImage(hist).Bitm ap;//释放资源imageSource.Dispose();imageRed.Dispose();hist.Dispose();}///<summary>///计算直方图(色调和饱和度)///</summary>private void CalcHistHs(){//计算int hBins = 180;RangeF hRange = new RangeF(0f, 179f); //色调的范围在0~180之间int sBins = 256;RangeF sRange = new RangeF(0f, 255f);Image<Bgr, Byte> imageSource = new Image<Bgr, By te>((Bitmap)pbSource.Image);Image<Hsv, Byte> imageHsv = imageSource.Convert< Hsv, Byte>(); //将色彩空间从BGR转换到HSVImage<Gray, Byte>[] imagesHsv = imageSource.Spli t(); //分解成H、S、V三部分DenseHistogram hist = new DenseHistogram(new int [] { hBins, sBins }, new RangeF[] { hRange, sRange });hist.Calculate(new IImage[] { imagesHsv[0], imag esHsv[1] }, false, null);//显示pbHistogram.Image = GenerateHistImage(hist).Bitm ap;//释放资源imageSource.Dispose();imageHsv.Dispose();foreach (Image<Gray, Byte> image in imagesHsv)image.Dispose();hist.Dispose();}直方图的显示我们可以用以下方式来查看直方图:(1)使用HistogramViewer窗体显示直方图;(2)使用HistogramBox控件显示直方图;(3)用自己写的方法将直方图转换成图像,然后显示出来。