灰度直方图
- 格式:pdf
- 大小:265.19 KB
- 文档页数:17
图像处理6灰度直⽅图和直⽅图均衡化灰度直⽅图介绍灰度直⽅图(Gray histogram)是关于灰度级分布的函数,是对图像中灰度级分布的统计。
灰度直⽅图是将数字图像中的所有像素,按照灰度值的⼤⼩,统计其出现的频率。
灰度直⽅图是灰度级的函数,它表⽰图像中具有某种灰度级的像素的个数,反映了图像中某种灰度出现的频率。
如果将图像总像素亮度(灰度级别)看成是⼀个随机变量,则其分布情况就反映了图像的统计特性,这可⽤probability density function (PDF)来刻画和描述,表现为灰度直⽅图。
实现以下代码便于理解灰度直⽅图的计算,其中histogram函数是基于numpy简化的,运⾏结果如下。
# coding: utf8from skimage import dataimport matplotlib.pyplot as pltimport numpy as npdef histogram(a, bins=10, range=None):"""Compute the histogram of a set of data."""import numpy as npfrom numpy.core import linspacefrom numpy.core.numeric import (arange, asarray)# 转成⼀维数组a = asarray(a)a = a.ravel()mn, mx = [mi + 0.0 for mi in range]ntype = np.dtype(np.intp)n = np.zeros(bins, ntype)# 预计算直⽅图缩放因⼦norm = bins / (mx - mn)# 均分,计算边缘以进⾏潜在的校正bin_edges = linspace(mn, mx, bins + 1, endpoint=True)# 分块对于⼤数组可以降低运⾏内存,同时提⾼速度BLOCK = 65536for i in arange(0, len(a), BLOCK):tmp_a = a[i:i + BLOCK]tmp_a_data = tmp_a.astype(float)# 减去Range下限,乘以缩放因⼦,向下取整tmp_a = tmp_a_data - mntmp_a *= normindices = tmp_a.astype(np.intp)# 对indices标签分别计数,标签等于bins减⼀indices[indices == bins] -= 1n += np.bincount(indices, weights=None,minlength=bins).astype(ntype)return n, bin_edgesif__name__ =="__main__":img=data.coffee()fig = plt.figure()f1 = fig.add_subplot(141)f1.imshow(img)f1.set_title("image")f2 = fig.add_subplot(142)arr=img.flatten()n, bins, patches = f2.hist(arr, bins=256, facecolor='red')f2.set_title("plt_hist")f3 = fig.add_subplot(143)hist, others = np.histogram(arr, range=(0, arr.max()), bins=256)f3.plot(others[1:],hist)f3.set_title("np_hist1")f4 = fig.add_subplot(144)hist, others = histogram(arr, range=(0, arr.max()), bins=256)f4.plot(others[1:], hist)f4.set_title("np_hist2")plt.show()关于bincount函数,可以参考Xurtle的博⽂https:///xlinsist/article/details/51346523bin的数量⽐x中的最⼤值⼤1,每个bin给出了它的索引值在x中出现的次数。
灰度直方图的用途灰度直方图(grayscale histogram)是一种统计图表,用于表示图像中每个灰度级别的像素数量。
它将图像的灰度级别作为横坐标,像素数量作为纵坐标,能够直观地展示图像中各个灰度级别像素的分布情况。
灰度直方图在计算机视觉和图像处理领域有着广泛的应用,以下将详细介绍它的用途。
1. 图像增强与调整灰度直方图可以帮助我们快速了解图像的亮度分布情况。
通过观察图像的灰度直方图,我们可以判断图像的亮度范围,并根据需要进行图像增强和调整。
例如,如果图像的灰度分布集中在较低的亮度范围,我们可以通过直方图均衡化等算法来增强图像的对比度,使得图像更加清晰明亮。
2. 图像分割与阈值处理利用灰度直方图,我们可以选择适当的阈值来进行图像分割。
图像分割是将图像划分为几个具有独立意义的区域,常用于目标检测和图像识别等应用。
通过分析灰度直方图可以确定一个或多个阈值,将图像分割成不同的区域,从而提取出感兴趣的目标。
3. 图像质量评估灰度直方图可以用于图像质量的评估和比较。
不同的图像质量可能对应着不同的灰度分布情况,通过对比不同图像的灰度直方图,我们可以直观地了解图像的细节信息和对比度。
在图像压缩、图像传输和图像复原等应用中,可以通过灰度直方图的对比来评估图像的质量,并确定是否需要使用图像增强或去噪等算法来改善图像的质量。
4. 图像匹配与检索利用灰度直方图可以进行图像的匹配与检索。
在图像数据库中,通过计算图像的灰度直方图,我们可以建立索引来加速图像的匹配和搜索。
通过对比查询图像与数据库中图像的灰度直方图相似性,可以找到与查询图像最相似的图像,从而实现图像的检索和识别。
5. 图像分类与识别灰度直方图也可用于图像分类与识别。
通过将图像的灰度直方图作为特征向量,我们可以训练分类器或者使用统计模型来对图像进行分类和识别。
例如,基于灰度直方图的人脸识别算法可以通过计算人脸图像的灰度直方图来进行人脸匹配和识别。
6. 图像分析与检测利用灰度直方图还可以进行图像的分析与检测。
图像增强—灰度变换及直方图均衡化一、实验目的1、了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学理论知识。
2、掌握直接灰度变换的图像增强方法。
3、掌握灰度直方图的概念及其计算方法;4、掌握直方图均衡化的计算过程;二、实验原理及知识点1、图像增强是指按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些不需要的信息的处理方法。
其主要目的是处理后的图像对某些特定的应用比原来的图像更加有效。
图像增强可以在空间域中执行,也可以在变换域中执行。
2、空间域指的是图像平面本身,在空间域内处理图像是直接对图像的像素进行处理。
空间域处理方法分为两种:灰度级变换、空间滤波。
空间域技术直接对像素进行操作,其表达式为g(x,y)=T[f(x,y)]其中f(x,y)为输入图像,g(x,y)为输出图像,T是对图像f进行处理的操作符,定义在点(x,y)的指定邻域内。
定义点(x,y)的空间邻近区域的主要方法是,使用中心位于(x,y)的正方形或长方形区域。
此区域的中心从原点(如左上角)开始逐像素点移动,在移动的同时,该区域会包含不同的邻域。
T应用于每个位置(x,y),以便在该位置得到输出图像g。
在计算(x,y)处的g值时,只使用该领域的像素。
2、灰度变换T的最简单形式是使用领域大小为1×1,此时,(x,y)处的g值仅由f在该点处的亮度决定,T也变为一个灰度变换函数。
由于灰度变换函数仅取决于亮度的值,而与(x,y)无关,所以亮度函数通常可写做如下所示的简单形式:s=T(r)其中,r表示图像f中相应点(x,y)的亮度,s表示图像g中相应点(x,y)的亮度。
灰度拉伸又叫对比度拉伸是最基本的一种灰度变换,使用简单的分段线性变换函数,可以提高灰度的动态范围,适用于低对比度图像的处理,增强对比度。
3、直方图是多种空间城处理技术的基础。
直方图操作能有效地用于图像增强。
除了提供有用的图像统计资料外,直方图固有的信息在其他图像处理应用中也是非常有用的,如图像压缩与分割。
《数字图像处理》试卷答案(2009级)一、名词解释(每题4分,共20分)1.灰度直方图:灰度直方图(histogram)是灰度级的函数,它表示图象中具有每种灰度级的象素的个数,反映图象中每种灰度出现的频率。
它是多种空间域处理技术的基础。
直方图操作能够有效用于图像增强;提供有用的图像统计资料,其在软件中易于计算,适用于商用硬件设备。
灰度直方图性质:1)表征了图像的一维信息。
只反映图像中像素不同灰度值出现的次数(或频数)而未反映像素所在位置。
2)与图像之间的关系是多对一的映射关系。
一幅图像唯一确定出与之对应的直方图,但不同图像可能有相同的直方图。
3)子图直方图之和为整图的直方图。
2.线性移不变系统:一个系统,如果满足线性叠加原理,则称为线性系统,用数学语言可作如下描述:对于,若T[a+b]=aT[]+bT[]=a+b(2.15)则系统T[·]是线性的。
这里,、分别是系统输入,、分别是系统输出。
T[·]表示系统变换,描述了输入输出序列关系,反映出系统特征。
对T[·]加上不同的约束条件,可定义不同的系统。
一个系统,如果系统特征T[·]不受输入序列移位(序列到来的早晚)的影响,则系统称为移不变系统。
由于很多情况下序号对应于时间的顺序,这时也把“移不变”说成是“时不变”。
用数学式表示:对于y(n)= T[x(n)] 若y(n-)=T[x(n-)] (2.16)则系统是移不变的。
既满足线性,又满足移不变条件的系统是线性移不变系统。
这是一种最常用、也最容易理论分析的系统。
这里约定:此后如不加说明,所说的系统均指线性移不变/时不变系统,简称LSI/LTI系统。
3.图像分割:为后续工作有效进行而将图像划分为若干个有意义的区域的技术称为图像分割(Image Segmentation)而目前广为人们所接受的是通过集合所进行的定义:令集合R代表整个图像区域,对R的图像分割可以看做是将R分成N个满足以下条件的非空子集R1,R2,R3,…,RN;(1)在分割结果中,每个区域的像素有着相同的特性(2)在分割结果中,不同子区域具有不同的特性,并且它们没有公共特性(3)分割的所有子区域的并集就是原来的图像(4)各个子集是连通的区域4.数字图像处理:数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。
1.灰度直方图灰度直方图(histogram)是灰度级的函数,它表示图象中具有每种灰度级的象素的个数,反映图象中每种灰度出现的频率。
如下图所示,灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频率,是图象的最基本的统计特征。
从概率的观点来理解,灰度出现的频率可看作其出现的概率,这样直方图就对应于概率密度函数pdf(probability density function),而概率分布函数就是直方图的累积和,即概率密度函数的积分,如下图所示:若直接从代表每种灰度的象素数目的直方图来观察,常用如下的表示:drr dP r p dr r p r P r)()(,)()(0==⎰∑⎰⎰⎰===≈======ki ik k k k k rrnnr P n n r p n r n A dAr p dr drr H A r P A drr dA A r H r p drr H A dr r H r A 00000025500)()()(1)(1)(,/)()()()()(,)()(,而概率分布函数,则概率密度的象素数为,灰度为若记象素总数为,时,在离散情况下,取概率密度象素总数一幅图象的总面积,或灰度直方图的计算是很简单的,依据定义,若图象具有L(通常L=256,即8位灰度级)级灰度,则大小为MxN的灰度图象f(x,y)的灰度直方图hist[0…L-1]可用如下计算获得:1. 1.初始化 hist[k]=0 ; k=0,…,L-12. 2.统计 hist[f(x,y)]++ ; x, y =0,…,M-1, 0,…,N-13. 3.标准化 hist[f(x,y)]/=M*N2.直方图均衡化直方图均衡化是通过灰度变换将一幅图象转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。
设灰度变换s=f(r)为斜率有限的非减连续可微函数,它将输入图象A(x,y)转换为输出图象B(x,y),输入图象的直方图为HA (r),输出图象的直方图为HB(s),则它们的关系可由如下过程导出:例如,下图是直方图均衡化后的飞机图片及其直方图,可见其直方图与原图的直方图相比是很均衡的,但必须说明的是,离散情况下不可能作到绝对的一致。
图像灰度直⽅图图像灰度直⽅图 图像是由像素点构成的,每个像素点的值代表着该点的颜⾊(灰度图或者彩⾊图)。
直⽅图就是对图像中的这些像素点的值进⾏统计,得到⼀个统⼀的整体的灰度概念。
优点:可以清晰了解图像的整体灰度分布,对于后⾯依据直⽅图处理图像来说⾄关重要。
⼀般情况下直⽅图都是灰度图像,直⽅图x轴是灰度值(⼀般0~255),y轴是图像中每⼀个灰度级对应的像素点的个数。
灰度级:正常情况下就是0-255共256个灰度级,从⿊⼀直到⽩(也有可能统计其中的某部分灰度范围),那么每⼀个灰度级对应⼀个数值代表该灰度对应的点数⽬。
也就是说直⽅图其实就是⼀个1*m(灰度级)的⼀个数组⽽已。
但是有的时候不希望逐个灰度的递增,⽐如现在要求20个灰度⼀起作为⼀个灰度级来画直⽅图,这个时候可能只需要1*(m/20)这样⼀个数组就够了。
那么这⾥的20就是直⽅图的间隔宽度了。
Opencv给提供的函数是cv2.calcHist(),该函数有5个参数:image输⼊图像,传⼊时应该⽤中括号[]括起来channels::传⼊图像的通道,如果是灰度图像,那就不⽤说了,只有⼀个通道,值为0,如果是彩⾊图像(有3个通道),那么值为0,1,2,中选择⼀个,对应着BGR各个通道,⽤[]传⼊。
mask:掩膜图像。
如果统计整幅图,那么为none。
如果要统计部分图的直⽅图,就得构造相应的炎掩膜来计算。
histSize:灰度级的个数,需要中括号,⽐如[256]ranges:像素值的范围,通常[0,256],有的图像如果不是0-256,⽐如说你来回各种变换导致像素值负值、很⼤,则需要调整后才可以。
除Opencv外,numpy也有函数⽤于统计直⽅图的 函数np.histogram() 函数np.bincount() 这三个⽅式的传⼊参数基本上差不多,不同的是opencv⾃带的需要中括号括起来。
测试案例:import cv2import numpy as npimport matplotlib.pyplot as pltimg = cv2.imread('02.jpg', 0)#直接读为灰度图像#opencv读取⽅法cv2.calcHist(速度最快)#图像,通道[0]-灰度图,掩膜-⽆,灰度级,像素范围hist_cv = cv2.calcHist([img], [0], None, [256], [0,256])#numpy⽅法读取np.histogram()hist_np,bins = np.histogram(img.ravel(), 256, [0,256])#numpy的另⼀种读取⽅法np.bincount()(速度=10倍⽅法2)hist_np2 = np.bincount(img.ravel(), minlength=256)plt.subplot(221), plt.imshow(img, 'gray')plt.subplot(222), plt.plot(range(256), hist_cv, 'r')plt.subplot(223), plt.plot(range(256), hist_np, 'b')plt.subplot(224), plt.plot(hist_np2)plt.show() opencv的直⽅图函数中掩膜的使⽤,这个掩膜就是⼀个区域⼤⼩,表⽰直⽅图统计就是这个区域的像素统计。
2.2图像灰度直⽅图
灰度直⽅图是⽤来⼲嘛的?
反映⼀幅图像中各灰度级像素出现的频率与灰度级的关系,以灰度级为横坐标,频率为纵坐标,绘制灰度与频率关系的图就是灰度图像的直⽅图。
是图像的⼀个重要特征,反应图像灰度分布状况。
v i代表灰度级出现的频率,n i代表灰度级i出现的个数,n为图像的总像数。
⽅图的性质
1.只反映图像的灰度分布情况,不能反映位置,即灰度直丢失了像素的位置信息
2.⼀幅图相对应唯⼀的灰度直⽅图,不同的图像可对应可对应相同的直⽅图。
3.⼀幅图像分为多个区域,多个区域的直⽅图之和极为原图像的直⽅图。
直⽅图的应⽤
1.图像的量化是否恰当
2.确定图像⼆值化的阈值(按公式⼆值化)
例如两个峰⼀个⾕的灰度图像。
昆明理工大学(数字图像处理)实验报告 实验名称: 灰度直方图绘制及直方图均衡化 专 业: 电子信息科学与技术 姓 名: 学 号: 成 绩:[实验目的]1、加强对灰度直方图及直方图均衡化的理解。
2、掌握直方图均衡化方法。
[实验内容]1、编程实现图像的灰度直方图。
2、实现直方图均衡化。
[实验原理]灰度直方图:1、直方图概念:灰度直方图表示图像中每种灰度出现的频率。
2、直方图的作用: 反映一幅图像的灰度分布特性3、直方图的计算: nk 为图像中出现rk 级灰度的像素数,n 是图像像素总数,而 nk/n 即为频数。
直方图均衡化:1、算法思想:通过函数变换,对在图像中像素个数多的灰度 级进行展宽,而对像素个数少的灰度级进行缩减。
从而达 到清晰图像的目的。
2、变换后每一个r 都对应一个s ,变换函数须满足二个条件 :(1)T 单值单增函数。
(2)对 有 则有: [实验步骤]离散情况下的直方图均衡化的算法:1)、列出原始图像的灰度级2)、统计各灰度级的像素数目 10-≤≤L r 1)(0-≤≤L r T 10)(1-≤≤=-L s s T r 1,...2,1,010,)(-=≤≤=l k r Nn r P k k k3)、计算原始图像直方图各灰度级的频数4)、计算累积分布函数5)、计算映射后的输出图像的灰度级。
6)、用的映射关系修改原始图像的灰度级,从而获得直方图近似为均匀分布的输出图像。
创建相应的菜单并建立相应的消息响应函数:添加一个灰度直方图显示框。
调出资源视图窗口,添加ID为IDD_DIALOG4的对话框资源,设计如图:创建对话框类CDialog_ZFT并按下表关联对应变量:资源类型资源ID 关联变量类型图片控件IDC_zft CStatic绘制文本框IDOK intvoid CDialog_ZFT::OnOK(){CWnd *pwnd=GetDlgItem(IDC_zft);CDC *mydc=pwnd->GetDC();for(int i=0;i<count;i++){mydc->MoveTo(i+10,220);mydc->LineTo(i+10,220-data[i]*180/m_fmax);}/**************直方图****************/void CDLView::OnZft(){// TODO: Add your command handler code here if(m_DibHead==NULL){MessageBox("请打开一幅图像");return;}long w,h;w=m_DibHead->biWidth;h=m_DibHead->biHeight;int i ,j;float h1[256],h2[256];float fmax=0.0;for(i=0;i<256;i++)h1[i]=0;for(i=0;i<h;i++){for(j=0;j<w;j++){h1[*(m_Image+i*w+j)]++;}}for(i=0;i<256;i++){h2[i]=h1[i]*1.0/w/h;if(fmax<h2[i])fmax=h2[i];}CDialog_ZFT zft;zft.data=h2;zft.count=256;zft.m_fmax=fmax;zft.DoModal();}/**************直方图均衡化***************/zftjh(unsigned char *lpDib,long lWidth,long lHeight) {unsigned char *lpsrc;long lresult(0);long i,j;unsigned char bMap[256];long lCount[256];for(i=0;i<256;i++)lCount[i]=0;for(i=0;i<lHeight;i++)for(j=0;j<lWidth;j++){lpsrc=lpDib+i*lWidth+j;lCount[*lpsrc]++;}for(i=0;i<256;i++){lresult=0;for(j=0;j<=i;j++)lresult+=lCount[j];bMap[i]=(lresult*255)/lHeight/lWidth;}for(i=0;i<lHeight;i++)for(j=0;j<lWidth;j++){lpsrc=lpDib+i*lWidth+j;*lpsrc=bMap[*lpsrc];}}void CDLView::OnZftjunh(){// TODO: Add your command handler code hereif(m_DibHead->biBitCount!=8){MessageBox("当前版本仅支持256色位图的操作!","系统提示!",MB_ICONINFORMATION|MB_OK);return;}zftjh(m_Image,m_DibHead->biWidth,m_DibHead->biHeight);Invalidate();}[实验结果]原图均衡化后[实验总结]通过对比图像可知,变换后直方图趋向平坦,灰级减少,灰度合并。
实验一图像的灰度直方图实验1实验目的:1)熟悉MATLAB软件界面和初步使用图像处理工具箱。
2)掌握图像格式转换和图像矩阵显示方法。
3)掌握图像灰度直方图的显示和灰度调整方法。
2实验内容:1)图像类型转换和不同图像显示方法图像类型转换:dither: 将灰度图像变成索引图像或将灰度图像变成二值图像。
[X,map]=gray2ind(I,n) ;n---灰度级数,缺省为64BW=dither(I)例子程序:clear ; %清除内存原有一切变量RGB=imread('gyy1.jpg'); % 把RGB图读入矩阵I=rgb2gray(RGB); %把RGB图变为灰度图[A,map]=gray2ind(I,128); %把灰度图变索引图BW=dither(I); %把灰度图变为二值图subplot(2,2,1),imshow(RGB);title('yuantu'); %显示原图subplot(2,2,2),imshow(A,map),title('xmap'); %显示索引图subplot(2,2,3),imshow(I),title('graytu'); %显示灰度图subplot(2,2,4),imshow(BW),title('BWtu'); %显示二值图gray2ind: 将二值图像转换为索引图像。
[X,map]=gray2ind(BW,n) ;n---灰度级数,缺省为64grayslice: 将灰度图像转为索引图像。
X=grayslice(I,n);im2bw: 将灰度图像、索引图像、真彩色图像转为二值图像。
BW=im2bw(I,level); BW=im2bw(X,map,level); BW=im2bw(RGB,level)level---- 归一化阈值,取值在[0,1]之间。
eg: BW=im2bw(X,map,0.6)im2double: 转换为双精度型。
第三章灰度直方图
目录
1.灰度直方图
2.直方图均衡化
3.直方图规范化
4.色彩直方图
作业
1.灰度直方图
灰度直方图(histogram)是灰度级的函数,是图象的最基本的统计特征。
它表示图象中具有每种灰度级的象素的个数,反映图象中每种灰度出现的频率。
如下图所示,
横坐标:灰度-r
纵坐标:为某一灰度值ri的像素个数ni,或是灰度出现的概率P(r)
从概率的观点来理解,灰度出现的频率可看作其出现的概率,这样直方图就对应于概率密度函数pdf(probability density function),而概率分布函数就是直方图的累积和,即概率密度函数的积分,如下图所示:
灰度直方图的计算是很简单的,依据定义,若图象具有L (通常L=256,即8位灰度级)级灰度,则大小为MxN的灰度图象f(x,y)的灰度直方图hist[0…L-1]可用如下计算获得:
1.初始化hist[k]=0 ; k=0,…,L-1
2.统计hist[k] ; x, y =0,…,M-1, 0,…,N-1
3.如果需要标准化,则hist[k]/=M*N
例:直方图算法实现
例: 通过直方图求图像中的灰度的最大、最小和中值。
例:通过直方图求图像的亮度和对比度。
注2:图像的亮度和对比度
图像的亮度(brightness ):即图像矩阵的平均值,其值越小越暗。
Brightness=图像的对比度(contrast ):即图像矩阵的均方差(标准差),对比度越大,图像中黑白反差越明显。
Contrast=1100
(,)M
N y x g x y M N −−==×∑∑
11
2
00((,))M N y x M N
g x y brightness −−==×−∑∑
1)
unsigned long hist[256]; unsigned char *pCur;
for(int i=0;i<256;i++)
hist[i]=0;
int ImgSize=width*height;
for(i=0,pCur=pImg;i<ImgSize;i++) hist[*(pCur++)]++;
2)
for (g=255;g>=0;g--)
if (hist[g])
break;
maxGray=g;
for (g=0;g<256;g++)
I f (hist[g])
break;
minGray=g;
for(g=sum=0;g<256;g++) {
sum+=hist[g];
if (sum>=ImgSize/2)
break;
}
medGray=g;
3)
for(g=sum=0;g<256;g++)
sum+=g*hist[g];
brightness=1.0*sum/ImgSize;
for(g=sum=0;g<256;g++)
sum+= (g-brightness)* (g-brightness)*hist[g]; contrast=sqrt(sum/ImgSize);
直方图具有很多的优点,直方图能反映图象的概貌,比如图像中有几类目标,目标和背景的分布如何;通过直方图可以直接计算图像中的最大亮度、最小亮度、平均亮度、对比度以及中间亮度等。
使用直方图可以完成图像分割、目标检索等。
因为不同的目标具有不同的颜色分布。
使用归一化直方图作目标匹配,还不易受到目标翻转和目标大小变化的影响。
在图像查询的系统中,直方图有很大的应用,用它存储目标的特征占有空间小,且执行速度快。
其缺点是:因其没有记录位置信息,不同的图像会具有相同或相近的直方图。
2.直方图均衡化
直方图均衡化是通过灰度变换将一幅图象转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。
P41艾
设灰度变换s=f(r)为斜率有限的非减连续可微函数,它将输入图象A(x,y)转换为输出图象B(x,y),输入图象的直方图为HA(r),输出图象的直方图为HB(s),则它们的关系可由如下过程导出:
•根据直方图的含义,经过灰度变换后对应的小面积元相等:
•由此可见,当上式中的分子和分母只差一个比例常数时,它就是常数,即:•结论:是直方图均衡化的灰度变换函数的累计分布函数(概率分布函数)离散情况下,
()()B A H s ds H r dr
=11()()(())()'()'(())A A A B H r H r H f s H s ds f r f f s dr −−===故1',()
d f f r f s d r −==其中0'()()m
A
R f r H r A =00()()()r m A m R f r H r dr R P r A ==∫001()()r
A P r H r dr A =∫其中()()m k f r R P r =0()k i k i n P r n
==∑其中
例如,
图像Lena的直方图均衡后图像Lena的直方图
原始Lena图像直方图均衡后的Lena图像
•暗的区域(手)变亮了
3.直方图规范化
•直方图规范化是指将一幅图象通过灰度变换后,使其具有特定的直方图形式,如使图象与某一标准图象具有相同的直方图,或使图象具有某一特定函数形式的直方图。
•简单地说,就是把一个图象经过灰度变化f后,使得它的直方图为Hf,即规定形状。
用途:可用来校正因亮度和传感器差异引起的变化。
比如,在比较同一个场景在不同的光照条件下的得到的两幅图像之前。
•算法:以均衡化为桥梁
•F1: H1(g1)---------- H0(s)
•F2: H2(g2)---------- H0(v)
•考虑到作为均匀分布的随机变量V和S具有完全相同的统计性质,因而从统计意义上说,它们是等同的。
因而,由s=F1(g1)和v=F2(g2)和v=s,得到g2=F2-1(v)= F2-1 (s)= F2-1 (F1(g1)) 。
4.色彩直方图
•色彩直方图是高维直方图的特例,它统计色彩的出现频率,即色彩的概率分布信息。
通常这需要一定的量化过程,将色彩分成若干互不重叠的种类。
一般不直接在RGB 色彩空间中统计,而是在将亮度分离出来后,对代表色彩部分的信息进行统计,如在HSI空间的HS子空间、YUV空间的UV子空间,以及其它反映人类视觉特点的彩色空间表示中进行。
例如,下图是统计肤色分布情况的例子。
作业
•1.编制直方图均衡化程序(输入输出图象格式bmp)。
返回本章目论。