《图像的直方图修正和增强.ppt》由会员分享,可在线阅读,更多相关《图像的直方图修正和增强.ppt(59页珍藏版)》请在三一办公上搜索。
1、1,第五章 图像的直方图修正和增强,教师 甘岚信息学院,2,一、灰度直方图,1、灰度直方图简介灰度直方图是数字图像处理中一个最简单、最有用的工具,它描述了一幅图像的灰度级内容。任何一幅图像的直方图都包含了客观的信息,某些类型的图像还可由其直方图完全描述。,3,灰度直方图是灰度值的函数,描述的是图像中具有该灰度值的像素的个数。横坐标表示像素的灰度级别;纵坐标是该灰度出现的频率(像素的个数)。例如,图像5-1的灰度直方图如图5-2所示。,2、灰度直方图的定义,4,图5-1 原图,图5-2 灰度直方图,直方图示例,5,灰度直方图也有另一种方式的定义:假设有一幅由函数D(x,y)所定义的连续图像,它平
2、滑地从中心的高灰度级变化到边沿的第灰度级。选择某一灰度级D1,然后定义一条轮廓线,该轮廓线连接了图像上所有的具有灰度级D1的点。所得到的轮廓线形成了包围灰度级大于等于D1的区域的封闭曲线。如图5-3所示。,直方图的另一种表示方法,6,图像中有一条灰度级为D1的轮廓线,在更高的灰度级D2处,还有第二条轮廓线。设A1是第一条轮廓线所包围区域的面积,A2是第二条轮廓线所包围的区域的面积。,图5-3,直方图的另一种表示示例,7,将一幅连续图像中被具有灰度级D的所有轮廓所包围的面积称为该图象的阈值面积函数A(D)。直方图的可定义为:,直方图定义公式,由上式可以得出结论:一幅连续图像的直方图是其阈值面积函
3、数的导数的负值。,8,负号的出现是由于,随着D的增加A(D)在减小。如果将图像看成是一个二维的随机变量,则面积函数相当于其积累分布函数,而灰度值相当于其概率密度函数。对于离散函数,我们固定D为1,则上式变为:,9,3、编写程序实现灰度直方图,(1)到目前为止的图像处理程序小结编写图像处理程序首先需要把要处理的图像“读进来”把磁盘上的图像读入到程序地址空间内的内存中。这实际上是一个在内存中建立图像对象的过程,这里所谓的图象对象,可以理解为面向对象概念中的对象;也可以是传统的过程化程序设计方法中处理的各种程序变量或者结构。,10,在图像处理程序中,设置一个变量或者函数来提供图像数据的首地址。也就是
4、存放图像像素数据的内存块(数组)的首地址。前面提到的读取图像到内存中的操作,就是为了创建这个图像像素内存块。在所有的图像处理算法中,都要找到图像像素首地址,然后对其执行相关的算法。示意图如下:,11,图5-4 位图结构示意图,如图所示,在程序中分别用BITMAPFILEHEADER和BITMAPINFORHEADER来存储位图文件头和文图信息头结构中的数据;用CPalette或者HPALETTE来保存调色板数据;用一个char*类型的指针指向像素数据。每次执行图像处理函数之前,得到像素数据块的指针,用它来进行相关的算法计算。,12,(2)灰度直方图绘制思路其实,根据灰度直方图的定义,思路很简单
5、。就是分别数出从0255之间的灰度值的像素,在图像中的个数。也就是,灰度值为0的像素有多少,灰度值为1的像素有多少以此类推。把最终的统计结果用程序绘图的方式记录下来。,13,方法:(1)找到前面提到的“图像像素内存块”的指针;(2)扫描该指针所指向的内存块,分别统计各个项数值对应的像素的个数;(3)在窗口中用GDI绘图函数绘制出二维图像;(4)比较好的方式是,能够动态的改变灰度直方图的显示范围,从而清晰的显示某一段灰度区间内的具体情况。示例参见实际程序代码。,14,二、灰度的线性变换,1、理论基础灰度的线性变换就是将图像中所有的点的灰度按照线性变换函数进行变换。该线性变换函数f(x)是一个一维
6、线性函数:f(x)=fA*x+fB,15,灰度变换方程为:DB=f(DA)=fA*DA+fB式中参数fA为线性函数的斜率,fB为线性函数在y轴的截距,DA表示输入图像的灰度,DB表示输出图像的灰度。当fA=1且fB!=0时,操作仅使所有像素的灰度值上移或下移,其效果是使整个图像更暗或者更亮;,16,如果fA0,暗区域将变量,亮区域将变暗,点运算完成了图像求补运算;特殊情况下,当fA=1,fB=0时,输出图像和输入图像相同;当fA=-1,fB=255时,输出图像正好反转,这正是对图像求“反色”。,17,图5-3 反色,反色的实际含义是将R、G、B值反转。若颜色的量化级别是256,则新图的R、G、
7、B值为255减去原图的R、G、B值,线性变换的特例反色,18,2、编程实现图像线性变换,图像灰度的变换操作不需要改变DIB的调色板和头文件,只要得到指向DIB像素起始地址的指针,然后在扫描所有像素点的过程中实现算法即可。线性变换的代码截图见图5-4。注意把代码中的公式,和理论上的公式:f(x)=fA*x+fB 对比理解。,19,图5-4 线性变换代码截图,20,三、图像增强,1、概述和分类(1)“好”图像的概念是相对的图像增强技术作为一大类基本的图像处理技术,其目的是对图像进行加工,以得到对具体应用来说视觉效果更“好”,更“有用”的图象。由于具体应用的目的和要求不同,因而这里的“好”和“有用”
8、的含义也不相同,并且所要需要的具体增强技术也可以大不相同。,21,从根本上说,并没有图像增强的通用标准,观察者事某种增强技术优劣的最终判断者。由于视觉检查和评价是相当主观的过程,所以所谓“好图像”的定义在比较增强算法性能中实际上是多变不定的。(2)空域和频域目前常用的增强技术根据其处理所进行的空间不同,可分为基于图像域的方法和基于变换域的方法。,22,顾名思义,前者直接在图像所在的空间进行处理,而后者对图像的处理是通过在图像的变换域而间接进行的。(3)图像的空域处理前者根据对图像的每次处理是对单个像素进行的或者是对小的子图象(模板)进行的可分为2组:基于像素(点)和基于模板的。,23,在基于像
9、素的处理(也叫点处理)中,增强过程对每个像素的处理与其它像素无关;模板处理则是指每次处理操作都是基于图像中的某个小区域进行的。在图像处理中,空域是指由像素组成的空间。空域增强方法是直接作用与像素的增强方法,可表示为:g(x,y)=EHf(x,y)(5.1),基于像素点的处理,24,上式中,f(.)和g(.)分别表示增强前后的图像,而EH代表增强操作。如果EH是定义在每个(x,y)上的,则EH是点操作;如果EH是定义在(x,y)的某个领域上,则EH常被称为模板操作。EH既可以作用于一幅图像f(.),也可以作用于一系列图像f1(.),f2(.),fn(.)之上。,25,从增强操作容易实现的角度出发
10、,最常用的邻域是正方形。这个正方形最小可以为一个像素(此时实际为点操作,所以点操作可以看作是模板操作的一个特例)。在这种情况下,g(.)的值取决于(x,y)处的f(.)值,而EH就是1个灰度变换。,26,一般情况下,像素的领域比一个像素要大,或者说这个像素的领域中除了其本身外,还有其他的像素。在这种情况下,g(.)在(x,y)位置处的值不仅取决于f(.)在(x,y)位置处的值,而且取决于f(.)在以(x,y)为中心的领域内所有象素的值。,基于模板的处理,27,如以s和t分别表示f(.)和g(.)在(x,y)位置处的灰度值,并以n(s)代表f(.)在(x,y)的邻域内像素的灰度值,则此时式(5.
11、1)可写成为t=EHs,n(s)(5.2)即,t是s和n(s)的函数。,28,为邻域内实现增强操作,常可利用模板(mask)与图像卷积来进行。每一个模板实际上是一个2-D数组,其中各个元素的取值确定了模板的功能。这种模板操作也常称为空间滤波。,29,(4)图像的频域处理,为了有效和快速地对图像进行处理和分析,常常需要将原定义在图像空间的图象以某种形式转换到其它空间,并利用这些空间的特有性质方便地进行一定的加工,最后再转换回图像空间以得到所需要的效果。最常用的变换空间就是频域空间。频域空间的增强有两个关键:,30,将图像从图像空间转换到频域空间所需的变换及其逆变换;在频域空间对图像进行增强加工的
12、操作。此时与式(5.1)对应的增强操作可表示为:g(x,y)=T-1EHT(f(x,y)(5.3),31,(5)小结,以上讨论都是把整幅图像一起考虑,实际中有时需要增强图像中的某一部分,所以增强技术可根据其处理的策略分为全局的和局部的。另外,以上讨论组要考虑的是灰度图像,今后还要考虑对彩色图像的增强技术。,32,图像增强技术分类,33,四、空域变换增强,1、直接灰度变换(1)增强对比度增强图像对比度实际是增强原图的各个部分的反差。实际中往往是通过增加原图里某两个灰度值见的动态范围来实现的。典型的增强对比度的EH(.)如图5-5(b)中曲线所示。可以看出通过这样一个变换,原图中灰度值在0到s1和
13、s2到L-1间的动态范围减小了,而原图原图中灰度值在s1到s2间的动态范围增加了,从而这个范围内的对比度增强了。,34,图5-5 直接变换法,35,实际应用中,s1,s2,t1,t2可取不同的值进行组合,从而得到不同的效果。如果s1=t1,s2=t2,则EH为一条斜率为1的直线,增强图像和原图相同。如果s1=s2,t1=0,t2=L-1,则增强图只剩下2个灰度级别,对比度最大但细节全部丢失了。,36,该方法的目标与增强对比度相反。有时原图的动态范围太大,超出某些显示设备的允许动态范围,这是如直接使用原图则一部分细节可能丢失。解决的办法就是对原图进行灰度压缩。一种常用的压缩方法是借助对数形式的E
14、H,如图5-5(c)所示,则:t=C log(1+|s|),其中C为尺度比例常数。,(2)动态范围压缩,37,图5-5 直接变换法,38,其目的与增强对比度相仿,是要将某个灰度值范围变得比较突出。一个典型的EH例子如图5-5(d)的曲线所示,它可将s1到s2间的灰度级突出,而将其余灰度值变为某个低灰度值。,(3)灰度切分,39,图5-5 直接变换法,40,(4)直接灰度变换的例子,(a)对图像求反(b)增加对比度,图像实例,41,(c)动态范围压缩(d)灰度切分,42,位面图直接灰度变换也可借助图像的位面表示进行。对1幅用多个比特表示其灰度值的图像来说,其中的每个比特可看作表示了1个二值的平面
15、,也称位面。1幅其灰度值用8bit表示的图像有8个位面,一般用0代表最低位面,位面7代表最高位面,如图5-6。借助图像的位面表示形式有可能采取对图像特定位面的操作来达到对图像增强的效果。,43,图5-6 图像的位面表示和位面图,44,位面图实例,图5-7给出了1组位面图实例。图(a)是1幅8bit灰度级的图像,图(b)到图(i)是它的8个位面图(从位面7到位面0)。这里基本上仅5个最高位面包含了视觉可见的有意义信息,其它位面只是很局部的小细节,许多情况下也常认为是噪声。对1幅8bit灰度级的图像,当代表1个像素灰度值字节的最高比特为1时,该像素的灰度值必定大于或等于128。所以在图(b)中,白
16、色像素点在原图中的对应灰度值必定大于等于128。,45,图5-7 位面图实例,46,而黑色像素点在原图中对应的灰度值必定小于或等于127。换句话说,图(b)相当于把原图灰度值分成0到127和128到255这两个范围,并将前者标记为黑色而后者标为白色而得到。同理,图(c)相当于把原图灰度值分成0到63,128到191和64到127,192到255这四个范围,并将前两者标为黑色而后两者标为白色而得到。其它各图可以此类推。,47,五、图像的代数运算,1.引言 代数运算是指两幅输入图象之间进行点对点的加、减、乘、除运算得到输出图象的过程。如果记输入图象为A(x,y)和B(x,y),输出图象为C(x,y
17、),则有如下四种简单形式:C(x,y)=A(x,y)+B(x,y)(1)C(x,y)=A(x,y)-B(x,y)(2)C(x,y)=A(x,y)B(x,y)(3)C(x,y)=A(x,y)/B(x,y)(4),48,2.加法运算,图象相加一般用于对同一场景的多幅图象求平均,以便有效地降低加性(additive)随机噪声。通常图象采集系统中采集图象时有这样的参数可供选择。通常直接采集的图象品质较好,不需要这样的处理,但是对于经过长距离模拟通讯方式传送的图象(如太空航天器传回的星际图象)这种处理是不可缺少的。利用求平均的方法降低噪声信号提高信噪比的做法,只有当噪声可以用同一个独立分布的随机模型描述
18、时才会有效。,49,3.减法运算(差分),图象相减是常用的图象处理方法,用于检测变化及运动物体。在可控制的条件下,如工业视觉环境下,这种称之为差分方法的简单处理与阈值化处理一道往往是建立机器视觉系统最有效的方法之一。在相对稳定的环境下,可以假设背景变化缓慢,且符合一定的分布规律,通过建立背景模型,实施差分方法来检测运动物体,可以获得很好的效果。因此,差分方法可以分为控制环境下的简单差分方法和基于背景模型的差分方法。,50,3.1 简单的差分方法,在控制环境下,或者在很短的时间间隔内,可以认为背景是固定不变的,可以直接使用差分方法检测变化或直接分割出作为前景的物体。其流程图如下:,51,52,变
19、化检测演示播放目标跟踪演示播放,53,六、真彩色转256色图,我们知道,真彩图中包含最多达2的24次方种颜色,怎样从中选出256种颜色,又要使颜色的失真比较小,这是一个比较复杂的问题。一种简单的做法是将R:G:B以3:3:2表示,即取R,G的高3位,B的高两位,组成一个字节,这样就可以表示256种颜色了,但不难想象,这种方法的失真肯定很严重。,54,下面介绍的算法能够比较好地实现真彩图到256色图的转换。它的思想是:准备一个长度为4096的数组,代表4096种颜色。对图中的每一个象素,取R、G、B的最高四位,拼成一个12位的整数,对应的数组元素加1。全部统计完后,就得到了这4096种颜色的使用频率。其中,可能有一些颜色一次也没用到,即对应的数组元素为零(假设不为零的数组元素共有PalCounts个)。,55,将这些为零的数组元素清除出去,使得前PalCounts个元素都不为零。将这PalCounts个数按从大到小的顺序排列(这里我们使用起泡排序)。这样,前256种颜色就是用的最多的颜色,它们将作为调色板上的256种颜色。对于剩下的(PalCounts-256)种颜色并不是简单地丢弃,而是用前256种颜色中的一种来代替,代替的原则是找有最小平方误差的那个。,56,57,58,59,结束,谢谢大家!,