数字图像处理宋晓计算机与信息技术学院目录数字图像灰度直方图直方图均衡化中值滤波运动检测目录什么是数字图像?数字图像的读、写及显示灰度直方图的概念灰度直方图的性质灰度直方图的用途灰度直方图的实现目录什么是数字图像?数字图像的读、写及显示灰度直方图的概念灰度直方图的性质灰度直方图的用途灰度直方图的实现什么是数字图像?二值图像(0or1)灰度图像(0~255)彩色图像黑白图像图像的每个像素只能是黑或白,没有中间的过渡,故又称为二值图像。二值图像的像素值为0或1。011100001I灰度图像灰度图像是指灰度级数大于2的图像。但它不包含彩色信息。100220250180501202001500I彩色图像彩色图像是指每个像素由R、G、B分量构成的图像,其中R、B、G是由不同的灰度级来描述。00255800255240240255R02550160255255801600G25525525524000160800B目录什么是数字图像?数字图像的读、写及显示灰度直方图的概念灰度直方图的性质灰度直方图的用途灰度直方图的实现实验要点:1、添加菜单响应函数:OnFileOpen(),OnFileSaveAs(),OnFileSave();2、添加屏幕绘制函数:OnPaint();3、根据需要编写对应代码项(变量+函数体)。数字图像的读、写及显示实验要点:1、添加菜单响应函数:OnFileOpen(),OnFileSaveAs(),OnFileSave();2、添加屏幕绘制函数:OnPaint();3、根据需要编写对应代码项(变量+函数体)。数字图像的读、写及显示CFileDialogdlg(TRUE,NULL,NULL,NULL,BMP(*.BMP)|*.bmp|RAW(*.RAW)|*.raw||,this);CFileDialogfiledlg(FALSE,*.RAW|*.raw|*.BMP|*.bmp,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,*.RAW|*.raw|*.BMP|*.bmp||,NULL);dc.SetPixel(10+j,10+i,RGB(gray,gray,gray));dc.BitBlt(0,0,Bitmap.bmWidth,Bitmap.bmHeight,p,0,0,SRCCOPY);CRectrect;GetClientRect(&rect);目录什么是数字图像?数字图像的读、写及显示灰度直方图灰度直方图的概念灰度直方图的性质灰度直方图的用途灰度直方图的实现灰度直方图反映的是一幅图像中各灰度级像素出现的频率。以灰度级为横坐标,纵坐标为灰度级的频率,绘制频率同灰度级的关系图就是灰度直方图。它是图像的一个重要特征,反映了图像灰度分布的情况。下图是一幅图像的灰度直方图。频率的计算式为灰度直方图的概念0132132105762567160635122675365032272416225627601232121231231221v0=5/64v1=12/64v2=18/64v3=8/64v4=1/64v5=5/64v6=8/64v7=5/64ivi例子该图像像元总数为8*8=64,i=[0,7]左图取自Gonzalez和Woods的DigitalImageProcessing(SecondEdition)Fig.3.15。灰度图像的直方图彩色图像的分波段直方图色彩直方图色彩直方图是高维直方图的特例,它统计色彩的出现频率,即色彩的概率分布信息。通常这需要一定的量化过程,将色彩分成若干互不重叠的种类。一般不直接在RGB色彩空间中统计,而是在将亮度分离出来后,对代表色彩部分的信息进行统计,如在HSI空间的HS子空间、YUV空间的UV子空间,以及其它反映人类视觉特点的彩色空间表示中进行。例如,下图是统计肤色分布情况的例子。目录什么是数字图像?数字图像的读、写及显示灰度直方图灰度直方图的概念灰度直方图的性质灰度直方图的用途灰度直方图的实现灰度直方图只能反映图像的灰度分布情况,而不能反映图像像素的位置,即丢失了像素的位置信息。一幅图像对应唯一的灰度直方图,反之不成立。一幅图像分成多个区域,多个区域的直方图之和即为原图像的直方图。灰度直方图的性质图像直方图唯一?结论:不同的图像可以有相同的直方图。目录什么是数字图像?数字图像的读、写及显示灰度直方图灰度直方图的概念灰度直方图的性质灰度直方图的用途灰度直方图的实现灰度直方图的用途一幅图像应该利用全部或几乎全部可能的灰度级,否则等于增加了量化间隔。相当于加大了量化间隔2550127631913010127006331015070对均匀灰度的图像进行数字化,并检查直方图,就可以及时发现数字化不正常时出现的各种问题。判断图像量化是否恰当(a)恰当量化(b)未能有效利用(c)超过了动态范围边界阈值选择用于确定图像二值化的阈值TyxfTyxfyxg),(1),(0),(具有二峰性的灰度图象灰度直方图的用途视频镜头分割(补充内容)视频素材很多,在录像带上被分成许多段。每一段素材的内容(场景)相关性较强,但不同素材段的内容(场景)的相关性较弱。因此,在场景切换时,在切换点前后的两帧画面的直方图会有较大差异,可以很容易检出。由猫到虎是渐变,相邻帧画面内容连续,因此相邻两帧画面的直方图类似。素材一素材二素材三内容突变直方图也突变。内容突变直方图也突变。直方图具有很多的优点,直方图能反映图象的概貌,比如图像中有几类目标,目标和背景的分布如何;通过直方图可以直接计算图像中的最大亮度、最小亮度、平均亮度、对比度以及中间亮度等。使用直方图可以完成图像分割、目标检索等。因为不同的目标具有不同的颜色分布。使用归一化直方图作目标匹配,还不易受到目标翻转和目标大小变化的影响。在图像查询的系统中,直方图有很大的应用,用它存储目标的特征占有空间小,且执行速度快。其缺点是:因其没有记录位置信息,不同的图像会具有相同或相近的直方图。灰度直方图的用途目录什么是数字图像?数字图像的读、写及显示灰度直方图灰度直方图的概念灰度直方图的性质灰度直方图的用途灰度直方图的实现灰度直方图的实现实验要点:1、添加菜单响应函数:OnHistogram()和OnEz();2、设计的对话框Histogram和Erzhi;3、创建相应的对话框类CHistogram和CErzhi;4、根据需要编写对应代码项(变量+函数体)。灰度直方图的实现实验要点:1、添加菜单响应函数:OnHistogram()和OnEz();2、设计的对话框Histogram和Erzhi;3、创建相应的对话框类CHistogram和CErzhi;4、根据需要编写对应代码项(变量+函数体)。灰度直方图的实现实验要点:1、添加菜单响应函数:OnHistogram()和OnEz();2、设计的对话框Histogram和Erzhi;3、创建相应的对话框类CHistogram和CErzhi;4、根据需要编写对应代码项(变量+函数体)。灰度直方图的计算是很简单的,依据定义,若图象具有L(通常L=256,即8位灰度级)级灰度,则大小为MxN的灰度图象f(x,y)的灰度直方图hist[0…L-1]可用如下计算获得:1.初始化hist[k]=0;k=0,…,L-12.统计hist[k];x,y=0,…,M-1,0,…,N-13.如果需要标准化,则hist[k]/=M*N灰度直方图的实现intcolor[256];CImageApp*app;for(inti=0;i256;i++)app-color[i]=0;COLORREFtrace;for(intj=0;jBitmap.bmHeight;j++)for(inti=0;iBitmap.bmWidth;i++){trace=dc-GetPixel(i,j);app-color[GetRValue(trace)]++;}for(i=0;i=255;i++){if(app-color[i]!=0){m_min=i;break;}}通过直方图求图像中的灰度的最大、最小for(i=255;i=0;i--){if(app-color[i]!=0){m_max=i;break;}}思考:最具代表性灰度?通过直方图求图像的亮度和对比度图像的亮度(brightness):即图像矩阵的平均值,其值越小越暗。Brightness=图像的对比度(contrast):即图像矩阵的均方差/标准差,对比度越大,图像中黑白反差越明显。Contrast=1100(,)MNyxgxyMN11200((,))MNyxMNgxybrightnessfor(g=sum=0;g256;g++)sum+=g*app-color[g];brightness=sum/ImgSize;for(g=sum=0;g256;g++)sum+=(g-brightness)*(g-brightness)*app-color[g];contrast=sqrt(sum/ImgSize);二值化for(intj=0;jBitmap.bmHeight;j++)for(inti=0;iBitmap.bmWidth;i++){ref=dc-GetPixel(i,j);r=GetRValue(ref);last=(int)r/num;dc-SetPixel(i,j,RGB(255*last,255*last,255*last));}思考:二值化阈值确定?数字图像处理——直方图均衡化数字图像灰度直方图直方图均衡化什么是直方图均衡化?为什么要直方图均衡化?如何实现直方图均衡化?数字图像011100001I100220250180501202001500I00255800255240240255R02550160255255801600G25525525524000160800B灰度直方图1.获取彩色图像每个像素某一颜色分量的灰度值存入数组pic(x,y)中;2.获取图像的高度h和宽度w;3.计算每级灰度的像素个数存入hd数组中,数组下标值为灰度值for(j从1到h){for(i从1到w{k=pic(i,j)hd(k)=hd(k)+1}}4.绘制直方图,每级灰度的像素个数用垂直线表示for(i从0到255){从(i,hd(i))到(i,0)画线}1399821373360646820529260什么是直方图均衡化?将原图像通过某种变换,得到一幅灰度直方图为均匀分布的新图像的方法,即灰度级具有均匀的概率分布。通过对直方图的调整,使得图像数据信息量增大,这样也就使画面更清晰。为什么要直方图均衡化?1)灰度分布更为均匀的图像。2)变换后一些灰度级合并,因此灰度级减少。3)灰级间隔拉大,增加了实际视觉接收信息量、图象的反差和可视粒度。1求原图的灰度直方图2由原图直方图计算灰度分布概率3计算图像各个灰度级的累计分布概率4进行直方图均衡化计算,得到新图像的灰度值如何实现直方图均衡化?例1399821373360646820529260fh03122434415164718293注:这里为了描述方便起见,设灰度级的分布范围为[0,9]。1求灰度直方图求出图像f的总体像素个数Nf=m*n(m,n分别为图像的长和宽)计算每个灰度级的像素个数在整个图像中所占的百分比。hs(i)=h(i)/Nf(i=0,1,…,255)说明:这样就得到了图像的灰度分布概率2计算灰度分布概率例hs00.1210.0820.1630.1640.0450.0460.1670.0480.0890.12h0