图像处理与信号分析

2013-03-25 11:07:15 liulina603 阅读数 30785

图像处理与识别学习小结

 

数字图像处理是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。图像处理是信号处理在图像域上的一个应用。目前大多数的图像是以数字形式存储,因而图像处理很多情况下指数字图像处理。此外,基于光学理论的处理方法依然占有重要的地位。 数字图像处理是信号处理的子类, 另外与计算机科学、人工智能等领域也有密切的关系。 传统的一维信号处理的方法和概念很多仍然可以直接应用在图像处理上,比如降噪、量化等。然而,图像属于二维信号,和一维信号相比,它有自己特殊的一面,处理的方式和角度也有所不同。大多数用于一维信号处理的概念都有其在二维图像信号领域的延伸,它们中的一部分在二维情形下变得十分复杂。同时图像处理也具有自身一些新的概念,例如,连通性、旋转不变性,等等。这些概念仅对二维或更高维的情况下才有非平凡的意义。图像处理中常用到快速傅立叶变换,因为它可以减小数据处理量和处理时间。
数字图像处理应用在以下方面 :

摄影及印刷 (Photography and printing)

卫星图像处理 (Satellite image processing)

医学图像处理 (Medical image processing)

面孔识别, 特征识别 (Face detection, feature detection, face identification)

显微图像处理 (Microscope image processing)

汽车障碍识别 (Car barrier detection)

 

数字图像基础

图像的基本概念、图像取样和量化、数字图像表示、 空间和灰度级分辨率、图像纹理、像素间的一些基本关系(相邻像素、邻接性、连通性、区域和边界、距离度量)、线性和非线性变换。

线性变换:如果变换函数是线性的或是分段线性,这种变换就是线性变换。以线性函数加大图像的对比度的效果是使整幅图像的质量改善。以分段线性函数加大图像中某个(或某几个)亮度区间的对比度的效果是使局部亮度区间的质量得到改善。

非线性变换:当变换函数是非线性时,即为非线性变换。常用的有指数变换和对数变换。

RGB (red green blue): 红绿蓝三基色

CMYK (Cyan-Magenta-Yellow-black inK): 青色-品红-黄色-黑色

HSI (Hue-Saturation-Intensity): 色调-饱和度-强度

DDB (device-dependent bitmap): 设备相关位图

DIB (device-independent bitmap): 设备无关位图

CVBS (Composite Video Broadcast Signal): 复合电视广播信号

YUV(亦称Y Cr Cb)是被欧洲电视系统所采用的一种颜色编码方法(属于PAL制)。

 



 

数字图像存储与显示

图像格式

在计算机中,有两种类型的图:矢量图(vector graphics)和位映象图(bitmapped graphics)。矢量图是用数学方法描述的一系列点、线、弧和其他几何形状,如图(a)所示。因此存放这种图使用的格式称为矢量图格式,存储的数据主要是绘制图形的数学描述;位映象图(bitmapped graphics)也称光栅图(raster graphics),这种图就像电视图像一样,由象点组成的,如图(b),因此存放这种图使用的格式称为位映象图格式,经常简称为位图格式,存储的数据是描述像素的数值。

 

矢量图与位映象图

目前包括bmp格式、gif格式、jpeg格式、jpeg2000格式、tiff格式、psd格式、

Png格式、swf格式、svg格式、pcx格式、dxf格式、wmf格式、emf格式、LIC格式、eps格式、TGA格式。

目前比较出名的图像处理库有很多,比如LEADTOOLS、OPENCV,LEADTOOLS这个是功能非常强大的图像多媒体库,但是这个是收费注册的。OpenCV 是一个跨平台的中、高层 API 构成,目前包括 300 多个 C 函数。它不依赖与其它的外部库,尽管也可以使用某些外部库。OpenCV 对非商业用途和商业用途都是免费(FREE)的。开源的图像库也有不少,比如:

ImageStone、GIMP、CxImage等,虽然它们的功能没有LEADTOOLS强大,但是一般的图像处理是可以应付的。

具体的功能介绍参考:http://blog.csdn.net/byxdaz/archive/2009/03/09/3972293.aspx

OpenCV源代码及文档下载:SOURCEFORGE.NET
http://sourceforge.net/projects/opencvlibrary/

 

 

数字图像增强

图像增强的目的在于改善图像的显示质量,以利于信息的提取和识别。从方法上说,则是设法摒弃一些认为不必要或干扰的信息,而将所需要的信息得以突出出来,以利于分析判读或作进一步的处理。以下介绍几种较为简单的遥感数字图像增强处理方法。

A空间域增强处理

空间域是指图像平面所在的二维空间,空间域图像增强是指在图像平面上应用某种数学模型,通过改变图像像元灰度值达到增强效果,这种增强并不改变像元的位置。空域增强包括空域变换增强与空域滤波增强两种。空域变换增强是基于点处理的增强方法、空域滤波增强是基于邻域处理的增强方法。

1)、空域变换增强

常用的空域变换增强方法包括:对比度增强、直方图增强和图像算术运算等。

对比度增强是一种通过改变图像像元的亮度分布态势,扩展灰度分布区间来改变图像像元对比度,从而改善图像质量的图像处理方法。因为亮度值是辐射强度的反映,所以也称为辐射增强。常用的方法有对比度线性变换和非线性变换。其关键是寻找到一个函数,以此函数对图像中每一个像元进行变换,使像元得到统一的重新分配,构成得到反差增强的图像。

直方图增强

直方图均衡化

     直方图均衡化基本做法是将每个灰度区间等概率分布代替了原来的随机分布,即增强后的图象中每一灰度级的像元数目大致相同。直方图均衡化可使得面积最大的地物细节得以增强,而面积小的地物与其灰度接近的地物进行合并,形成综合地物。减少灰度等级换取对比度的增大。

直方图归一化 

     直方图归一化是把原图像的直方图变换为某种指定形态的直方图或某一参考图像的直方图,然后按着已知的指定形态的直方图调整原图像各像元的灰级,最后得到一个直方图匹配的图像。这种方法主要应用在有一幅很好的图像作为标准的情况下,对另一幅不满意的图像用标准图像的直方图进行匹配处理,以改善被处理图像的质量。如在数字镶嵌时,重叠区影像色调由于时相等原因差异往往很大,利用直方图匹配这一方法后可以改善重叠区影像色调过度,如果镶嵌图像时相相差不大,完全可以作到无缝镶嵌。

数字图像的算术运算

两幅或多幅单波段影像,完成空间配准后,通过一系列运算,可以实现图像增强,达到提取某些信息或去掉某些不必要信息的目的。

  

2)、空域滤波增强

空域变换增强是按像元逐点运算的,从整体上改善图像的质量,并不考虑周围像元影响。空间滤波增强则是以重点突出图像上的某些特征为目的的(如突出边缘或纹理等),通过像元与周围相邻像元的关系,采取空间域中的邻域处理方法进行图像增强。邻域法处理用于去噪声、图像平滑、锐化和相关运算。

图像卷积运算是在空间域上对图像作局部检测的运算,以实现平滑和锐化的目的。具体作法是选定一卷积函数,又称为“M×N窗口”或“模板”,如3×3或5×5等。然后从图像左上角开始开一与模板同样大小的活动窗口,图像窗口与模板像元的亮度值对应相乘再相加。将计算结果赋予中心像元作为其灰度值,然后待移动后重新计算,将计算结果赋予另一个中心像元,以此类推直到全幅图像扫描一遍结束生成新的图像。

平滑是指图像中出现某些亮度变化过大的区域,或出现不该有的亮点(“噪声”)时,采用平滑方法可以减小变化,使亮度平缓或去掉不必要“噪声”点。它实际上是使图像中高频成分消退,即平滑图像的细节,降低其反差,保存低频成分,在频域中称为低通滤波。具体方法有:均值平滑、中值滤波、锐化。

锐化的作用在于提高边缘灰度值的变化率,使界线更加清晰。它是增强图像中的高频成分,在频域处理中称为高通滤波,也就是使图像细节的反差提高,也称边缘增强。要突出图像的边缘、线状目标或亮度变化率大的部分常采用锐化方法。一般有三种实现方法:

(1)梯度法

    梯度反映了相邻像元的亮度变化率,即图像中如果存在边缘,如湖泊、河流的边界,山脉和道路等,则边缘处有较大的梯度值。对于亮度值较平滑的部分,亮度梯度值较小。因此,找到梯度较大的位置,也就找到边缘,然后再用不同的梯度计算值代替边缘处像元的值,也就突出了边缘,实现了图像的锐化。通常有罗伯特梯度和索伯尔梯度方法。

(2)拉普拉斯算法

    拉普拉斯算法的意义与梯度法不同,它不检测均匀的亮度变化,而是检测变化率的变化率,相当于二阶微分。计算出的图像更加突出亮度值突变的位置。

(3)定向检测

    当有目的地检测某一方向的边、线或纹理特征时,可选择特定的模板卷积运算作定向检测。可以检测垂直边界、水平边界和对角线边界等,各使用的模板不同

 

B、频率域图像增强处理
频域增强指在图像的频率域内,对图像的变换系数(频率成分)直接进行运算,然后通过Fourier逆变换以获得图像的增强效果。

一般来说,图像的边缘和噪声对应Fourier变换中的高频部分,所以低通滤波能够平滑图像、去除噪声。

图像灰度发生聚变的部分与频谱的高频分量对应,所以采用高频滤波器衰减或抑制低频分量,能够对图像进行锐化处理。

频域,就是由图像f(x,y)的二维傅立叶变换和相应的频率变量(u,v)的值所组成的空间。在空间域图像强度的变化模式(或规律)可以直接在该空间得到反应。F(0,0)是频域中的原点,反应图像的平均灰度级,即图像中的直流成分;低频反映图像灰度发生缓慢变化的部分;而高频对应图像中灰度发生更快速变化的部分,如边缘、噪声等。但频域不能反应图像的空间信息。

 

 

二维DFT及其反变换、Fast FT

关于这方面的内容需要参考数学知识。

空域和频域滤波间的对应关系:

卷积定理是空域和频域滤波的最基本联系纽带。二维卷积定理:

 

 

 


基本计算过程:

  1. 取函数h(m,n)关于原点的镜像,得到h(-m,-n)
  2. 对某个(x,y),使h(-m,-n)移动相应的距离,得到h(x-m,y-n)
  3. 对积函数f(m,n)h(x-m,y-n)在(m,n)的取值范围内求和
  4. 位移是整数增量,对所有的(x,y)重复上面的过程,直到两个函数:f(m,n)和h(x-m,y-n)不再有重叠的部分。

 

傅立叶变换是空域和频域的桥梁,关于两个域滤波的傅立叶变换对:

 

 

 

 

 

 

 

 


频域与空域滤波的比较:

1. 对具有同样大小的空域和频率滤波器:h(x,y), H(u,v),频域计算(由于FFT)往往更有效(尤其是图像尺寸比较大时)。但对在空域中用尺寸较小的模板就能解决的问题,则往往在空域中直接操作。

2. 频域滤波虽然更直接,但如果可以使用较小的滤波器,还是在空域计算为好。    因为省去了计算傅立叶变换及反变换等步骤。

3. 由于更多的直观性,频率滤波器设计往往作为空域滤波器设计的向导。

 

平滑的频率域滤波器类型
1 、理想低通滤波器
2 、巴特沃思低通滤波器
3 、高斯低通滤波器
频率域锐化滤波器类型
1 理想高通滤波器
2 巴特沃思高通滤波器

3 高斯型高通滤波器

4 频率域的拉普拉斯算子
5 钝化模板、高频提升滤波和高频加强滤波
频率域图像增强处理的过程:

 

 

图像复原
图像复原:试图利用退化过程的先验知识,去恢复已被退化图像的本来面目。

 

图像复原的基本思路:先建立退化的数学模型,然后根据该模型对退化图像进行拟合。

图像复原模型可以用连续数学和离散数学处理,处理项的实现可在空间域卷积,或在频域相乘。 
参考资料:
http://download.csdn.net/source/1513324

 


边缘检测

数字图像的边缘检测是图像分割、目标区域的识别、区域形状提取等图像分析领域十分重要的基础,图像理解和分析的第一步往往就是边缘检测,目前它以成为机器视觉研究领域最活跃的课题之一,在工程应用中占有十分重要的地位。所谓边缘就是指图像局部亮度变化最显著的部分,它是检测图像局部变化显著变化的最基本的运算。边缘的记录有链码表和线段表2种,链码表适合计算周长,线段表容易计算面积以及相关的,他们之间可以相互的转换。

常见的边缘检测算法:

Roberts边缘检测算子

Sobel边缘算子

Prewitt边缘算子

Kirsch边缘算子

CANNY边缘检测

 


图像压缩
图像压缩是数据压缩技术在数字图像上的应用,它的目的是减少图像数据中的冗余信息从而用更加高效的格式存储和传输数据。图像压缩可以是有损数据压缩也可以是无损数据压缩。对于如绘制的技术图、图表或者漫画优先使用无损压缩,这是因为有损压缩方法,尤其是在低的位速条件下将会带来压缩失真。如医疗图像或者用于存档的扫描图像等这些有价值的内容的压缩也尽量选择无损压缩方法。有损方法非常适合于自然的图像,例如一些应用中图像的微小损失是可以接受的(有时是无法感知的),这样就可以大幅度地减小位速。

无损图像压缩方法有:

行程长度编码

熵编码法

LZW算法

有损压缩方法有:

将色彩空间化减到图像中常用的颜色。所选择的颜色定义在压缩图像头的调色板中,图像中的每个像素都用调色板中颜色索引表示。这种方法可以与 抖动(en:dithering)一起使用以模糊颜色边界。

色度抽样,这利用了人眼对于亮度变化的敏感性远大于颜色变化,这样就可以将图像中的颜色信息减少一半甚至更多。

变换编码,这是最常用的方法。首先使用如离散余弦变换(DCT)或者小波变换这样的傅立叶相关变换,然后进行量化和用熵编码法压缩。

分形压缩(en:Fractal compression)。



形态学图像处理
 膨胀与腐蚀

 膨胀
腐蚀
开操作与闭操作
击中或击不中变换
一些基本的形态学算法

边界提取
区域填充
连通分量的提取
凸壳
细化
粗化
骨架

裁剪


图像分割
图像分割是指通过某种方法,使得画面场景中的目标物被分为不同的类别。通常图像分割的实现方法是,将图像分为“黑”、“白”两类,这两类分别代表了两个不同的对象。

图像分割方法:阈值分割、区域分割、数学形态学、模式识别方法

A、阈值分割包括以下几种:

(1)由直方图灰度分布选择阈值

(2)双峰法选择阈值

(3)迭代法选取阈值

     原理如下,很好理解。

     迭代法是基于逼近的思想,其步骤如下:
      1. 求出图象的最大灰度值和最小灰度值,分别记为ZMAX和ZMIN,令初始阈值T0=(ZMAX+ZMIN)/2;
     2. 根据阈值TK将图象分割为前景和背景,分别求出两者的平均灰度值ZO和ZB;
     3. 求出新阈值TK+1=(ZO+ZB)/2;
     4. 若TK=TK+1,则所得即为阈值;否则转2,迭代计算。

(4 )大津法选择阈值

大津法是属于最大类间方差法,它是自适应计算单阈值的简单高效方法,或者叫(Otsu)

大津法由大津于1979年提出,对图像Image,记t为前景与背景的分割阈值,前景点数占图像比例为w0,平均灰度为u0;背景点数占图像比例为w1,平均灰度为u1。图像的总平均灰度为:u=w0*u0+w1*u1。从最小灰度值到最大灰度值遍历t,当t使得值g=w0*(u0-u)2+w1*(u1-u)2 最大时t即为分割的最佳阈值。对大津法可作如下理解:该式实际上就是类间方差值,阈值t分割出的前景和背景两部分构成了整幅图像,而前景取值u0,概率为 w0,背景取值u1,概率为w1,总均值为u,根据方差的定义即得该式。因方差是灰度分布均匀性的一种度量,方差值越大,说明构成图像的两部分差别越大, 当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小,因此使类间方差最大的分割意味着错分概率最小。直接应用大津法计算量较大,因此一般采用了等价的公式g=w0*w1*(u0-u1)2。

(5)由灰度拉伸选择阈值

大津法是较通用的方法,但是它对两群物体在灰度不明显的情况下会丢失一些整体信息。因此为了解决这种现象采用灰度拉伸的增强大津法。在大津法的思想上增加灰度的级数来增强前两群物体的灰度差。对于原来的灰度级乘上同一个系数,从而扩大了图像灰度的级数。试验结果表明不同的拉伸系数,分割效果差别比较大。

 

B、区域的分割

区域生长、区域分离与合并

 区域生长算法


C、基于形态学分水岭的分割

分水岭分割算法


图像特征提取与匹配

常用的图像特征有颜色特征、纹理特征、形状特征、空间关系特征。

A 颜色特征

特点:颜色特征是一种全局特征,描述了图像或图像区域所对应的景物的表面性质。一般颜色特征是基于像素点的特征,此时所有属于图像或图像区域的像素都有各自的贡献。由于颜色对图像或图像区域的方向、大小等变化不敏感,所以颜色特征不能很好地捕捉图像中对象的局部特征。

常用的特征提取与匹配方法:

颜色直方图

其优点在于:它能简单描述一幅图像中颜色的全局分布,即不同色彩在整幅图像中所占的比例,特别适用于描述那些难以自动分割的图像和不需要考虑物体空间位置的图像。其缺点在于:它无法描述图像中颜色的局部分布及每种色彩所处的空间位置,即无法描述图像中的某一具体的对象或物体。

颜色直方图特征匹配方法:直方图相交法、距离法、中心距法、参考颜色表法、累加颜色直方图法。

 

B 纹理特征

纹理特征的提取方法比较简单,它是用一个活动的窗口在图像上连续滑动,分别计算出窗口中的方差、均值、最大值、最小值及二者之差和信息熵等,

形成相应的纹理图像,当目标的光谱特性比较接近时,纹理特征对于区分目标可以起到积极的作用。选取适当的数据动态变化范围,进行纹理特征提取后,使影像的纹理特征得到突出,有利于提取构造信息。

特点:纹理特征也是一种全局特征,它也描述了图像或图像区域所对应景物的表面性质。但由于纹理只是一种物体表面的特性,并不能完全反映出物体的本质属性,所以仅仅利用纹理特征是无法获得高层次图像内容的。与颜色特征不同,纹理特征不是基于像素点的特征,它需要在包含多个像素点的区域中进行统计计算。在模式匹配中,这种区域性的特征具有较大的优越性,不会由于局部的偏差而无法匹配成功。作为一种统计特征,纹理特征常具有旋转不变性,并且对于噪声有较强的抵抗能力。但是,纹理特征也有其缺点,一个很明显的缺点是当图像的分辨率变化的时候,所计算出来的纹理可能会有较大偏差。另外,由于有可能受到光照、反射情况的影响,从2-D图像中反映出来的纹理不一定是3-D物体表面真实的纹理。

常用的特征提取与匹配方法:

纹理特征描述方法分类

(1)统计方法统计方法的典型代表是一种称为灰度共生矩阵的纹理特征分析方法Gotlieb 和 Kreyszig 等人在研究共生矩阵中各种统计特征基础上,通过实验,得出灰度共生矩阵的四个关键特征:能量、惯量、熵和相关性。统计方法中另一种典型方法,则是从图像的自相关函数(即图像的能量谱函数)提取纹理特征,即通过对图像的能量谱函数的计算,提取纹理的粗细度及方向性等特征参数

(2)几何法

所谓几何法,是建立在纹理基元(基本的纹理元素)理论基础上的一种纹理特征分析方法。纹理基元理论认为,复杂的纹理可以由若干简单的纹理基元以一定的有规律的形式重复排列构成。在几何法中,比较有影响的算法有两种:Voronio 棋盘格特征法和结构法。

(3)模型法

模型法以图像的构造模型为基础,采用模型的参数作为纹理特征。典型的方法是随机场模型法,如马尔可夫(Markov)随机场(MRF)模型法和 Gibbs 随机场模型法

(4)信号处理法

纹理特征的提取与匹配主要有:灰度共生矩阵、Tamura 纹理特征、自回归纹理模型、小波变换等。

灰度共生矩阵特征提取与匹配主要依赖于能量、惯量、熵和相关性四个参数。Tamura 纹理特征基于人类对纹理的视觉感知心理学研究,提出6种属性,即

:粗糙度、对比度、方向度、线像度、规整度和粗略度。自回归纹理模型(simultaneous auto-regressive, SAR)是马尔可夫随机场(MRF)模型的一种应用实例。

 

C形状特征

特点:各种基于形状特征的检索方法都可以比较有效地利用图像中感兴趣的目标来进行检索,但它们也有一些共同的问题,

常用的特征提取与匹配方法:

通常情况下,形状特征有两类表示方法,一类是轮廓特征,另一类是区域特征。图像的轮廓特征主要针对物体的外边界,而图像的区域特征则关系到整个形状区域。

几种典型的形状特征描述方法:

(1)边界特征法该方法通过对边界特征的描述来获取图像的形状参数。其中Hough 变换检测平行直线方法和边界方向直方图方法是经典方法。Hough 变换是利用图像全局特性而将边缘像素连接起来组成区域封闭边界的一种方法,其基本思想是点—线的对偶性;边界方向直方图法首先微分图像求得图像边缘,然后,做出关于边缘大小和方向的直方图,通常的方法是构造图像灰度梯度方向矩阵。

(2)傅里叶形状描述符法

傅里叶形状描述符(Fourier shape descriptors)基本思想是用物体边界的傅里叶变换作为形状描述,利用区域边界的封闭性和周期性,将二维问题转化为一维问题。

由边界点导出三种形状表达,分别是曲率函数、质心距离、复坐标函数。

(3)几何参数法

形状的表达和匹配采用更为简单的区域特征描述方法,例如采用有关形状定量测度(如矩、面积、周长等)的形状参数法(shape factor)。在 QBIC 系统中,便是利用圆度、偏心率、主轴方向和代数不变矩等几何参数,进行基于形状特征的图像检索。

 

D空间关系特征

特点:所谓空间关系,是指图像中分割出来的多个目标之间的相互的空间位置或相对方向关系,这些关系也可分为连接/邻接关系、交叠/重叠关系和包含/包容关系等。通常空间位置信息可以分为两类:相对空间位置信息和绝对空间位置信息。前一种关系强调的是目标之间的相对情况,如上下左右关系等,后一种关系强调的是目标之间的距离大小以及方位。显而易见,由绝对空间位置可推出相对空间位置,但表达相对空间位置信息常比较简单。
空间关系特征的使用可加强对图像内容的描述区分能力,但空间关系特征常对图像或目标的旋转、反转、尺度变化等比较敏感。另外,实际应用中,仅仅利用空间信息往往是不够的,不能有效准确地表达场景信息。为了检索,除使用空间关系特征外,还需要其它特征来配合。

常用的特征提取与匹配方法:

提取图像空间关系特征可以有两种方法:一种方法是首先对图像进行自动分割,划分出图像中所包含的对象或颜色区域,然后根据这些区域提取图像特征,并建立索引;另一种方法则简单地将图像均匀地划分为若干规则子块,然后对每个图像子块提取特征,并建立索引。

 

 

模式识别

模式识别是一种从大量信息和数据出发,在专家经验和已有认识的基础上,利用计算机和数学推理的方法对形状、模式、曲线、数字、字符格式和图形自动完成识别的过程。模式识别包括相互关联的两个阶段,即学习阶段和实现阶段,前者是对样本进行特征选择,寻找分类的规律,后者是根据分类规律对未知样本集进行分类和识别。广义的模式识别属计算机科学中智能模拟的研究范畴,内容非常广泛,包括声音和语言识别、文字识别、指纹识别、声纳信号和地震信号分析、照片图片分析、化学模式识别等等。计算机模式识别实现了部分脑力劳动自动化。

模式识别--对表征事物或现象的各种形式的(数值的,文字的和逻辑关系的)信息进行处理和分析,以对事物或现象进行描述、辨认、分类和解释的过程,是信息科学和人工智能的重要组成部分。

模式还可分成抽象的和具体的两种形式。前者如意识、思想、议论等,属于概念识别研究的范畴,是人工智能的另一研究分支。我们所指的模式识别主要是对语音波形、地震波、心电图、脑电图、图片、文字、符号、三位物体和景物以及各种可以用物理的、化学的、生物的传感器对对象进行测量的具体模式进行分类和辨识。

模式识别问题指的是对一系列过程或事件的分类与描述,具有某些相类似的性质的过程或事件就分为一类。模式识别问题一般可以应用以下4种方法进行分析处理。

模版比对:

统计模式识别方法:统计模式识别方法是受数学中的决策理论的启发而产生的一种识别方法,它一般假定被识别的对象或经过特征提取向量是符合一定分布规律的随机变量。其基本思想是将特征提取阶段得到的特征向量定义在一个特征空间中,这个空间包含了所有的特征向量,不同的特征向量,或者说不同类别的对象都对应于空间中的一点。在分类阶段,则利用统计决策的原理对特征空间进行划分,从而达到识别不同特征的对象的目的。统计模式识别中个应用的统计决策分类理论相对比较成熟,研究的重点是特征提取。统计模式识别的基本原理是:有相似性的样本在模式空间中互相接近,并形成“集团”,即“物以类聚”。其分析方法是根据模式所测得的特征向量Xi=(xi1,xi2,…,xid)T(i=1,2,…,N),将一个给定的模式归入C个类ω1,ω2,…,ωc中,然后根据模式之间的距离函数来判别分类。其中,T表示转置;N为样本点数;d为样本特征数。

统计模式识别的主要方法有:判别函数法,k近邻分类法,非线性映射法,特征分析法,主因子分析法等。

在统计模式识别中,贝叶斯决策规则从理论上解决了最优分类器的设计问题,但其实施却必须首先解决更困难的概率密度估计问题。BP神经网络直接从观测数据(训练样本)学习,是更简便有效的方法,因而获得了广泛的应用,但它是一种启发式技术,缺乏指定工程实践的坚实理论基础。统计推断理论研究所取得的突破性成果导致现代统计学习理论——VC理论的建立,该理论不仅在严格的数学基础上圆满地回答了人工神经网络中出现的理论问题,而且导出了一种新的学习方法——支撑向量机。

 

人工神经网络模式识别:人工神经网络的研究起源于对生物神经系统的研究。人工神经网络区别于其他识别方法的最大特点是它对待识别的对象不要求有太多的分析与了解,具有一定的智能化处理的特点。

句法结构模式识别:又称结构方法或语言学方法。其基本思想是把一个模式描述为较简单的子模式的组合,子模式又可描述为更简单的子模式的组合,最终得到一个树形的结构描述,在底层的最简单的子模式称为模式基元。在句法方法中选取基元的问题相当于在决策理论方法中选取特征的问题。通常要求所选的基元能对模式提供一个紧凑的反映其结构关系的描述,又要易于用非句法方法加以抽取。显然,基元本身不应该含有重要的结构信息。模式以一组基元和它们的组合关系来描述,称为模式描述语句,这相当于在语言中,句子和短语用词组合,词用字符组合一样。基元组合成模式的规则,由所谓语法来指定。一旦基元被鉴别,识别过程可通过句法分析进行,即分析给定的模式语句是否符合指定的语法,满足某类语法的即被分入该类。

在几种算法中,统计模式识别是最经典的分类识别方法,在图像模式识别中有着非常广泛的应用。

参考书籍:美国 冈萨雷斯 数字图像处理第二版

2016-07-01 08:44:34 qq_32887673 阅读数 9027

图像处理与识别学习小结

 

数字图像处理是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。图像处理是信号处理在图像域上的一个应用。目前大多数的图像是以数字形式存储,因而图像处理很多情况下指数字图像处理。此外,基于光学理论的处理方法依然占有重要的地位。 数字图像处理是信号处理的子类, 另外与计算机科学、人工智能等领域也有密切的关系。 传统的一维信号处理的方法和概念很多仍然可以直接应用在图像处理上,比如降噪、量化等。然而,图像属于二维信号,和一维信号相比,它有自己特殊的一面,处理的方式和角度也有所不同。大多数用于一维信号处理的概念都有其在二维图像信号领域的延伸,它们中的一部分在二维情形下变得十分复杂。同时图像处理也具有自身一些新的概念,例如,连通性、旋转不变性,等等。这些概念仅对二维或更高维的情况下才有非平凡的意义。图像处理中常用到快速傅立叶变换,因为它可以减小数据处理量和处理时间。 
数字图像处理应用在以下方面 :

摄影及印刷 (Photography and printing)

卫星图像处理 (Satellite image processing)

医学图像处理 (Medical image processing)

面孔识别, 特征识别 (Face detection, feature detection, face identification)

显微图像处理 (Microscope image processing)

汽车障碍识别 (Car barrier detection)

 

数字图像基础

图像的基本概念、图像取样和量化、数字图像表示、 空间和灰度级分辨率、图像纹理、像素间的一些基本关系(相邻像素、邻接性、连通性、区域和边界、距离度量)、线性和非线性变换。

线性变换:如果变换函数是线性的或是分段线性,这种变换就是线性变换。以线性函数加大图像的对比度的效果是使整幅图像的质量改善。以分段线性函数加大图像中某个(或某几个)亮度区间的对比度的效果是使局部亮度区间的质量得到改善。

非线性变换:当变换函数是非线性时,即为非线性变换。常用的有指数变换和对数变换。

RGB (red green blue): 红绿蓝三基色

CMYK (Cyan-Magenta-Yellow-black inK): 青色-品红-黄色-黑色

HSI (Hue-Saturation-Intensity): 色调-饱和度-强度

DDB (device-dependent bitmap): 设备相关位图

DIB (device-independent bitmap): 设备无关位图

CVBS (Composite Video Broadcast Signal): 复合电视广播信号

YUV(亦称Y Cr Cb)是被欧洲电视系统所采用的一种颜色编码方法(属于PAL制)。

 



 

数字图像存储与显示

图像格式

在计算机中,有两种类型的图:矢量图(vector graphics)和位映象图(bitmapped graphics)。矢量图是用数学方法描述的一系列点、线、弧和其他几何形状,如图(a)所示。因此存放这种图使用的格式称为矢量图格式,存储的数据主要是绘制图形的数学描述;位映象图(bitmapped graphics)也称光栅图(raster graphics),这种图就像电视图像一样,由象点组成的,如图(b),因此存放这种图使用的格式称为位映象图格式,经常简称为位图格式,存储的数据是描述像素的数值。

 

矢量图与位映象图

目前包括bmp格式、gif格式、jpeg格式、jpeg2000格式、tiff格式、psd格式、

Png格式、swf格式、svg格式、pcx格式、dxf格式、wmf格式、emf格式、LIC格式、eps格式、TGA格式。

目前比较出名的图像处理库有很多,比如LEADTOOLS、OPENCV,LEADTOOLS这个是功能非常强大的图像多媒体库,但是这个是收费注册的。OpenCV 是一个跨平台的中、高层 API 构成,目前包括300 多个 C 函数。它不依赖与其它的外部库,尽管也可以使用某些外部库。OpenCV 对非商业用途和商业用途都是免费(FREE)的。开源的图像库也有不少,比如:

ImageStone、GIMP、CxImage等,虽然它们的功能没有LEADTOOLS强大,但是一般的图像处理是可以应付的。

具体的功能介绍参考:http://blog.csdn.net/byxdaz/archive/2009/03/09/3972293.aspx

OpenCV源代码及文档下载:SOURCEFORGE.NET
http://sourceforge.net/projects/opencvlibrary/

 

 

数字图像增强

图像增强的目的在于改善图像的显示质量,以利于信息的提取和识别。从方法上说,则是设法摒弃一些认为不必要或干扰的信息,而将所需要的信息得以突出出来,以利于分析判读或作进一步的处理。以下介绍几种较为简单的遥感数字图像增强处理方法。

A空间域增强处理

空间域是指图像平面所在的二维空间,空间域图像增强是指在图像平面上应用某种数学模型,通过改变图像像元灰度值达到增强效果,这种增强并不改变像元的位置。空域增强包括空域变换增强与空域滤波增强两种。空域变换增强是基于点处理的增强方法、空域滤波增强是基于邻域处理的增强方法。

1)、空域变换增强

常用的空域变换增强方法包括:对比度增强、直方图增强和图像算术运算等。

对比度增强是一种通过改变图像像元的亮度分布态势,扩展灰度分布区间来改变图像像元对比度,从而改善图像质量的图像处理方法。因为亮度值是辐射强度的反映,所以也称为辐射增强。常用的方法有对比度线性变换和非线性变换。其关键是寻找到一个函数,以此函数对图像中每一个像元进行变换,使像元得到统一的重新分配,构成得到反差增强的图像。

直方图增强

直方图均衡化

     直方图均衡化基本做法是将每个灰度区间等概率分布代替了原来的随机分布,即增强后的图象中每一灰度级的像元数目大致相同。直方图均衡化可使得面积最大的地物细节得以增强,而面积小的地物与其灰度接近的地物进行合并,形成综合地物。减少灰度等级换取对比度的增大。

直方图归一化 

     直方图归一化是把原图像的直方图变换为某种指定形态的直方图或某一参考图像的直方图,然后按着已知的指定形态的直方图调整原图像各像元的灰级,最后得到一个直方图匹配的图像。这种方法主要应用在有一幅很好的图像作为标准的情况下,对另一幅不满意的图像用标准图像的直方图进行匹配处理,以改善被处理图像的质量。如在数字镶嵌时,重叠区影像色调由于时相等原因差异往往很大,利用直方图匹配这一方法后可以改善重叠区影像色调过度,如果镶嵌图像时相相差不大,完全可以作到无缝镶嵌。

数字图像的算术运算

两幅或多幅单波段影像,完成空间配准后,通过一系列运算,可以实现图像增强,达到提取某些信息或去掉某些不必要信息的目的。

  

2)、空域滤波增强

空域变换增强是按像元逐点运算的,从整体上改善图像的质量,并不考虑周围像元影响。空间滤波增强则是以重点突出图像上的某些特征为目的的(如突出边缘或纹理等),通过像元与周围相邻像元的关系,采取空间域中的邻域处理方法进行图像增强。邻域法处理用于去噪声、图像平滑、锐化和相关运算。

图像卷积运算是在空间域上对图像作局部检测的运算,以实现平滑和锐化的目的。具体作法是选定一卷积函数,又称为“M×N窗口”或“模板”,如3×3或5×5等。然后从图像左上角开始开一与模板同样大小的活动窗口,图像窗口与模板像元的亮度值对应相乘再相加。将计算结果赋予中心像元作为其灰度值,然后待移动后重新计算,将计算结果赋予另一个中心像元,以此类推直到全幅图像扫描一遍结束生成新的图像。

平滑是指图像中出现某些亮度变化过大的区域,或出现不该有的亮点(“噪声”)时,采用平滑方法可以减小变化,使亮度平缓或去掉不必要“噪声”点。它实际上是使图像中高频成分消退,即平滑图像的细节,降低其反差,保存低频成分,在频域中称为低通滤波。具体方法有:均值平滑、中值滤波、锐化。

锐化的作用在于提高边缘灰度值的变化率,使界线更加清晰。它是增强图像中的高频成分,在频域处理中称为高通滤波,也就是使图像细节的反差提高,也称边缘增强。要突出图像的边缘、线状目标或亮度变化率大的部分常采用锐化方法。一般有三种实现方法:

(1)梯度法

    梯度反映了相邻像元的亮度变化率,即图像中如果存在边缘,如湖泊、河流的边界,山脉和道路等,则边缘处有较大的梯度值。对于亮度值较平滑的部分,亮度梯度值较小。因此,找到梯度较大的位置,也就找到边缘,然后再用不同的梯度计算值代替边缘处像元的值,也就突出了边缘,实现了图像的锐化。通常有罗伯特梯度和索伯尔梯度方法。

(2)拉普拉斯算法

    拉普拉斯算法的意义与梯度法不同,它不检测均匀的亮度变化,而是检测变化率的变化率,相当于二阶微分。计算出的图像更加突出亮度值突变的位置。

(3)定向检测

    当有目的地检测某一方向的边、线或纹理特征时,可选择特定的模板卷积运算作定向检测。可以检测垂直边界、水平边界和对角线边界等,各使用的模板不同

 

B、频率域图像增强处理
频域增强指在图像的频率域内,对图像的变换系数(频率成分)直接进行运算,然后通过Fourier逆变换以获得图像的增强效果。

一般来说,图像的边缘和噪声对应Fourier变换中的高频部分,所以低通滤波能够平滑图像、去除噪声。

图像灰度发生聚变的部分与频谱的高频分量对应,所以采用高频滤波器衰减或抑制低频分量,能够对图像进行锐化处理。

频域,就是由图像f(x,y)的二维傅立叶变换和相应的频率变量(u,v)的值所组成的空间。在空间域图像强度的变化模式(或规律)可以直接在该空间得到反应。F(0,0)是频域中的原点,反应图像的平均灰度级,即图像中的直流成分;低频反映图像灰度发生缓慢变化的部分;而高频对应图像中灰度发生更快速变化的部分,如边缘、噪声等。但频域不能反应图像的空间信息。

 

 

二维DFT及其反变换、Fast FT

关于这方面的内容需要参考数学知识。

空域和频域滤波间的对应关系:

卷积定理是空域和频域滤波的最基本联系纽带。二维卷积定理:

 

 

 


基本计算过程:

  1. 取函数h(m,n)关于原点的镜像,得到h(-m,-n)
  2. 对某个(x,y),使h(-m,-n)移动相应的距离,得到h(x-m,y-n)
  3. 对积函数f(m,n)h(x-m,y-n)在(m,n)的取值范围内求和
  4. 位移是整数增量,对所有的(x,y)重复上面的过程,直到两个函数:f(m,n)和h(x-m,y-n)不再有重叠的部分。

 

傅立叶变换是空域和频域的桥梁,关于两个域滤波的傅立叶变换对:

 

 

 

 

 

 

 

 


频域与空域滤波的比较:

1. 对具有同样大小的空域和频率滤波器:h(x,y), H(u,v),频域计算(由于FFT)往往更有效(尤其是图像尺寸比较大时)。但对在空域中用尺寸较小的模板就能解决的问题,则往往在空域中直接操作。

2. 频域滤波虽然更直接,但如果可以使用较小的滤波器,还是在空域计算为好。    因为省去了计算傅立叶变换及反变换等步骤。

3. 由于更多的直观性,频率滤波器设计往往作为空域滤波器设计的向导。

 

平滑的频率域滤波器类型
1 、理想低通滤波器
2 、巴特沃思低通滤波器
3 、高斯低通滤波器
频率域锐化滤波器类型
1 理想高通滤波器
2 巴特沃思高通滤波器

3 高斯型高通滤波器

4 频率域的拉普拉斯算子
5 钝化模板、高频提升滤波和高频加强滤波
频率域图像增强处理的过程:

 

 

图像复原
图像复原:试图利用退化过程的先验知识,去恢复已被退化图像的本来面目。

 

图像复原的基本思路:先建立退化的数学模型,然后根据该模型对退化图像进行拟合。

图像复原模型可以用连续数学和离散数学处理,处理项的实现可在空间域卷积,或在频域相乘。  
参考资料:
http://download.csdn.net/source/1513324

 


边缘检测

数字图像的边缘检测是图像分割、目标区域的识别、区域形状提取等图像分析领域十分重要的基础,图像理解和分析的第一步往往就是边缘检测,目前它以成为机器视觉研究领域最活跃的课题之一,在工程应用中占有十分重要的地位。所谓边缘就是指图像局部亮度变化最显著的部分,它是检测图像局部变化显著变化的最基本的运算。边缘的记录有链码表和线段表2种,链码表适合计算周长,线段表容易计算面积以及相关的,他们之间可以相互的转换。

常见的边缘检测算法:

Roberts边缘检测算子

Sobel边缘算子

Prewitt边缘算子

Kirsch边缘算子

CANNY边缘检测

 


图像压缩
图像压缩是数据压缩技术在数字图像上的应用,它的目的是减少图像数据中的冗余信息从而用更加高效的格式存储和传输数据。图像压缩可以是有损数据压缩也可以是无损数据压缩。对于如绘制的技术图、图表或者漫画优先使用无损压缩,这是因为有损压缩方法,尤其是在低的位速条件下将会带来压缩失真。如医疗图像或者用于存档的扫描图像等这些有价值的内容的压缩也尽量选择无损压缩方法。有损方法非常适合于自然的图像,例如一些应用中图像的微小损失是可以接受的(有时是无法感知的),这样就可以大幅度地减小位速。

无损图像压缩方法有:

行程长度编码

熵编码法

LZW算法

有损压缩方法有:

将色彩空间化减到图像中常用的颜色。所选择的颜色定义在压缩图像头的调色板中,图像中的每个像素都用调色板中颜色索引表示。这种方法可以与 抖动(en:dithering)一起使用以模糊颜色边界。

色度抽样,这利用了人眼对于亮度变化的敏感性远大于颜色变化,这样就可以将图像中的颜色信息减少一半甚至更多。

变换编码,这是最常用的方法。首先使用如离散余弦变换(DCT)或者小波变换这样的傅立叶相关变换,然后进行量化和用熵编码法压缩。

分形压缩(en:Fractal compression)。



形态学图像处理
 膨胀与腐蚀

 膨胀
腐蚀
开操作与闭操作
击中或击不中变换
一些基本的形态学算法

边界提取
区域填充
连通分量的提取
凸壳
细化
粗化
骨架

裁剪


图像分割
图像分割是指通过某种方法,使得画面场景中的目标物被分为不同的类别。通常图像分割的实现方法是,将图像分为“黑”、“白”两类,这两类分别代表了两个不同的对象。

图像分割方法:阈值分割、区域分割、数学形态学、模式识别方法

A、阈值分割包括以下几种:

(1)由直方图灰度分布选择阈值

(2)双峰法选择阈值

(3)迭代法选取阈值

     原理如下,很好理解。

     迭代法是基于逼近的思想,其步骤如下:
      1. 求出图象的最大灰度值和最小灰度值,分别记为ZMAX和ZMIN,令初始阈值T0=(ZMAX+ZMIN)/2;
     2. 根据阈值TK将图象分割为前景和背景,分别求出两者的平均灰度值ZO和ZB;
     3. 求出新阈值TK+1=(ZO+ZB)/2;
     4. 若TK=TK+1,则所得即为阈值;否则转2,迭代计算。

(4 )大津法选择阈值

大津法是属于最大类间方差法,它是自适应计算单阈值的简单高效方法,或者叫(Otsu)

大津法由大津于1979年提出,对图像Image,记t为前景与背景的分割阈值,前景点数占图像比例为w0,平均灰度为u0;背景点数占图像比例为w1,平均灰度为u1。图像的总平均灰度为:u=w0*u0+w1*u1。从最小灰度值到最大灰度值遍历t,当t使得值g=w0*(u0-u)2+w1*(u1-u)2 最大时t即为分割的最佳阈值。对大津法可作如下理解:该式实际上就是类间方差值,阈值t分割出的前景和背景两部分构成了整幅图像,而前景取值u0,概率为 w0,背景取值u1,概率为w1,总均值为u,根据方差的定义即得该式。因方差是灰度分布均匀性的一种度量,方差值越大,说明构成图像的两部分差别越大, 当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小,因此使类间方差最大的分割意味着错分概率最小。直接应用大津法计算量较大,因此一般采用了等价的公式g=w0*w1*(u0-u1)2。

(5)由灰度拉伸选择阈值

大津法是较通用的方法,但是它对两群物体在灰度不明显的情况下会丢失一些整体信息。因此为了解决这种现象采用灰度拉伸的增强大津法。在大津法的思想上增加灰度的级数来增强前两群物体的灰度差。对于原来的灰度级乘上同一个系数,从而扩大了图像灰度的级数。试验结果表明不同的拉伸系数,分割效果差别比较大。

 

B、区域的分割

区域生长、区域分离与合并

 区域生长算法


C、基于形态学分水岭的分割

分水岭分割算法


图像特征提取与匹配

常用的图像特征有颜色特征、纹理特征、形状特征、空间关系特征。

A 颜色特征

特点:颜色特征是一种全局特征,描述了图像或图像区域所对应的景物的表面性质。一般颜色特征是基于像素点的特征,此时所有属于图像或图像区域的像素都有各自的贡献。由于颜色对图像或图像区域的方向、大小等变化不敏感,所以颜色特征不能很好地捕捉图像中对象的局部特征。

常用的特征提取与匹配方法:

颜色直方图

其优点在于:它能简单描述一幅图像中颜色的全局分布,即不同色彩在整幅图像中所占的比例,特别适用于描述那些难以自动分割的图像和不需要考虑物体空间位置的图像。其缺点在于:它无法描述图像中颜色的局部分布及每种色彩所处的空间位置,即无法描述图像中的某一具体的对象或物体。

颜色直方图特征匹配方法:直方图相交法、距离法、中心距法、参考颜色表法、累加颜色直方图法。

 

B 纹理特征

纹理特征的提取方法比较简单,它是用一个活动的窗口在图像上连续滑动,分别计算出窗口中的方差、均值、最大值、最小值及二者之差和信息熵等,

形成相应的纹理图像,当目标的光谱特性比较接近时,纹理特征对于区分目标可以起到积极的作用。选取适当的数据动态变化范围,进行纹理特征提取后,使影像的纹理特征得到突出,有利于提取构造信息。

特点:纹理特征也是一种全局特征,它也描述了图像或图像区域所对应景物的表面性质。但由于纹理只是一种物体表面的特性,并不能完全反映出物体的本质属性,所以仅仅利用纹理特征是无法获得高层次图像内容的。与颜色特征不同,纹理特征不是基于像素点的特征,它需要在包含多个像素点的区域中进行统计计算。在模式匹配中,这种区域性的特征具有较大的优越性,不会由于局部的偏差而无法匹配成功。作为一种统计特征,纹理特征常具有旋转不变性,并且对于噪声有较强的抵抗能力。但是,纹理特征也有其缺点,一个很明显的缺点是当图像的分辨率变化的时候,所计算出来的纹理可能会有较大偏差。另外,由于有可能受到光照、反射情况的影响,从2-D图像中反映出来的纹理不一定是3-D物体表面真实的纹理。

常用的特征提取与匹配方法:

纹理特征描述方法分类

(1)统计方法统计方法的典型代表是一种称为灰度共生矩阵的纹理特征分析方法Gotlieb 和 Kreyszig等人在研究共生矩阵中各种统计特征基础上,通过实验,得出灰度共生矩阵的四个关键特征:能量、惯量、熵和相关性。统计方法中另一种典型方法,则是从图像的自相关函数(即图像的能量谱函数)提取纹理特征,即通过对图像的能量谱函数的计算,提取纹理的粗细度及方向性等特征参数

(2)几何法

所谓几何法,是建立在纹理基元(基本的纹理元素)理论基础上的一种纹理特征分析方法。纹理基元理论认为,复杂的纹理可以由若干简单的纹理基元以一定的有规律的形式重复排列构成。在几何法中,比较有影响的算法有两种:Voronio 棋盘格特征法和结构法。

(3)模型法

模型法以图像的构造模型为基础,采用模型的参数作为纹理特征。典型的方法是随机场模型法,如马尔可夫(Markov)随机场(MRF)模型法和 Gibbs 随机场模型法

(4)信号处理法

纹理特征的提取与匹配主要有:灰度共生矩阵、Tamura 纹理特征、自回归纹理模型、小波变换等。

灰度共生矩阵特征提取与匹配主要依赖于能量、惯量、熵和相关性四个参数。Tamura 纹理特征基于人类对纹理的视觉感知心理学研究,提出6种属性,即

:粗糙度、对比度、方向度、线像度、规整度和粗略度。自回归纹理模型(simultaneous auto-regressive, SAR)是马尔可夫随机场(MRF)模型的一种应用实例。

 

C形状特征

特点:各种基于形状特征的检索方法都可以比较有效地利用图像中感兴趣的目标来进行检索,但它们也有一些共同的问题,

常用的特征提取与匹配方法:

通常情况下,形状特征有两类表示方法,一类是轮廓特征,另一类是区域特征。图像的轮廓特征主要针对物体的外边界,而图像的区域特征则关系到整个形状区域。

几种典型的形状特征描述方法:

(1)边界特征法该方法通过对边界特征的描述来获取图像的形状参数。其中Hough 变换检测平行直线方法和边界方向直方图方法是经典方法。Hough 变换是利用图像全局特性而将边缘像素连接起来组成区域封闭边界的一种方法,其基本思想是点—线的对偶性;边界方向直方图法首先微分图像求得图像边缘,然后,做出关于边缘大小和方向的直方图,通常的方法是构造图像灰度梯度方向矩阵。

(2)傅里叶形状描述符法

傅里叶形状描述符(Fourier shape descriptors)基本思想是用物体边界的傅里叶变换作为形状描述,利用区域边界的封闭性和周期性,将二维问题转化为一维问题。

由边界点导出三种形状表达,分别是曲率函数、质心距离、复坐标函数。

(3)几何参数法

形状的表达和匹配采用更为简单的区域特征描述方法,例如采用有关形状定量测度(如矩、面积、周长等)的形状参数法(shape factor)。在 QBIC 系统中,便是利用圆度、偏心率、主轴方向和代数不变矩等几何参数,进行基于形状特征的图像检索。

 

D空间关系特征

特点:所谓空间关系,是指图像中分割出来的多个目标之间的相互的空间位置或相对方向关系,这些关系也可分为连接/邻接关系、交叠/重叠关系和包含/包容关系等。通常空间位置信息可以分为两类:相对空间位置信息和绝对空间位置信息。前一种关系强调的是目标之间的相对情况,如上下左右关系等,后一种关系强调的是目标之间的距离大小以及方位。显而易见,由绝对空间位置可推出相对空间位置,但表达相对空间位置信息常比较简单。
空间关系特征的使用可加强对图像内容的描述区分能力,但空间关系特征常对图像或目标的旋转、反转、尺度变化等比较敏感。另外,实际应用中,仅仅利用空间信息往往是不够的,不能有效准确地表达场景信息。为了检索,除使用空间关系特征外,还需要其它特征来配合。

常用的特征提取与匹配方法:

提取图像空间关系特征可以有两种方法:一种方法是首先对图像进行自动分割,划分出图像中所包含的对象或颜色区域,然后根据这些区域提取图像特征,并建立索引;另一种方法则简单地将图像均匀地划分为若干规则子块,然后对每个图像子块提取特征,并建立索引。

 

 

模式识别

模式识别是一种从大量信息和数据出发,在专家经验和已有认识的基础上,利用计算机和数学推理的方法对形状、模式、曲线、数字、字符格式和图形自动完成识别的过程。模式识别包括相互关联的两个阶段,即学习阶段和实现阶段,前者是对样本进行特征选择,寻找分类的规律,后者是根据分类规律对未知样本集进行分类和识别。广义的模式识别属计算机科学中智能模拟的研究范畴,内容非常广泛,包括声音和语言识别、文字识别、指纹识别、声纳信号和地震信号分析、照片图片分析、化学模式识别等等。计算机模式识别实现了部分脑力劳动自动化。

模式识别--对表征事物或现象的各种形式的(数值的,文字的和逻辑关系的)信息进行处理和分析,以对事物或现象进行描述、辨认、分类和解释的过程,是信息科学和人工智能的重要组成部分。

模式还可分成抽象的和具体的两种形式。前者如意识、思想、议论等,属于概念识别研究的范畴,是人工智能的另一研究分支。我们所指的模式识别主要是对语音波形、地震波、心电图、脑电图、图片、文字、符号、三位物体和景物以及各种可以用物理的、化学的、生物的传感器对对象进行测量的具体模式进行分类和辨识。

模式识别问题指的是对一系列过程或事件的分类与描述,具有某些相类似的性质的过程或事件就分为一类。模式识别问题一般可以应用以下4种方法进行分析处理。

模版比对:

统计模式识别方法:统计模式识别方法是受数学中的决策理论的启发而产生的一种识别方法,它一般假定被识别的对象或经过特征提取向量是符合一定分布规律的随机变量。其基本思想是将特征提取阶段得到的特征向量定义在一个特征空间中,这个空间包含了所有的特征向量,不同的特征向量,或者说不同类别的对象都对应于空间中的一点。在分类阶段,则利用统计决策的原理对特征空间进行划分,从而达到识别不同特征的对象的目的。统计模式识别中个应用的统计决策分类理论相对比较成熟,研究的重点是特征提取。统计模式识别的基本原理是:有相似性的样本在模式空间中互相接近,并形成“集团”,即“物以类聚”。其分析方法是根据模式所测得的特征向量Xi=(xi1,xi2,…,xid)T(i=1,2,…,N),将一个给定的模式归入C个类ω1,ω2,…,ωc中,然后根据模式之间的距离函数来判别分类。其中,T表示转置;N为样本点数;d为样本特征数。

统计模式识别的主要方法有:判别函数法,k近邻分类法,非线性映射法,特征分析法,主因子分析法等。

在统计模式识别中,贝叶斯决策规则从理论上解决了最优分类器的设计问题,但其实施却必须首先解决更困难的概率密度估计问题。BP神经网络直接从观测数据(训练样本)学习,是更简便有效的方法,因而获得了广泛的应用,但它是一种启发式技术,缺乏指定工程实践的坚实理论基础。统计推断理论研究所取得的突破性成果导致现代统计学习理论——VC理论的建立,该理论不仅在严格的数学基础上圆满地回答了人工神经网络中出现的理论问题,而且导出了一种新的学习方法——支撑向量机。

 

人工神经网络模式识别:人工神经网络的研究起源于对生物神经系统的研究。人工神经网络区别于其他识别方法的最大特点是它对待识别的对象不要求有太多的分析与了解,具有一定的智能化处理的特点。

句法结构模式识别:又称结构方法或语言学方法。其基本思想是把一个模式描述为较简单的子模式的组合,子模式又可描述为更简单的子模式的组合,最终得到一个树形的结构描述,在底层的最简单的子模式称为模式基元。在句法方法中选取基元的问题相当于在决策理论方法中选取特征的问题。通常要求所选的基元能对模式提供一个紧凑的反映其结构关系的描述,又要易于用非句法方法加以抽取。显然,基元本身不应该含有重要的结构信息。模式以一组基元和它们的组合关系来描述,称为模式描述语句,这相当于在语言中,句子和短语用词组合,词用字符组合一样。基元组合成模式的规则,由所谓语法来指定。一旦基元被鉴别,识别过程可通过句法分析进行,即分析给定的模式语句是否符合指定的语法,满足某类语法的即被分入该类。

在几种算法中,统计模式识别是最经典的分类识别方法,在图像模式识别中有着非常广泛的应用。

 

 

参考书籍:美国 冈萨雷斯 数字图像处理第二版

2016-08-05 22:00:05 utimes 阅读数 3525

图像信号的数学表示

像素的邻域和邻接

邻域分类:

  • 4-邻域 N4(p) 象素p(x,y)的左右上下4个像素。
  • D-邻域 ND(p) 象素p(x, y)的4个对角邻近像素。
  • 8-邻域 N8(p) 象素p(x, y)的左、右、上、下、左上、右上、左下、右下8个像素。

象素的邻接

  • 定义:
    1.若qN4(p)pN4(q) 则称p与q 4-邻接
    2.若 qN8(p)pN8(q) 则称p与q 8-邻接
  • 关系: 4-邻接必8-邻接,反之不然

像素间的连通性
这里写图片描述
这里写图片描述
这里写图片描述
距离度量

这里写图片描述

图像的运算

算术和逻辑运算

这里写图片描述
这里写图片描述
图像中目标物边缘(边界)往往是一种闭合曲线。在数字图象中,线条或边界是一串由离散像素点组成(如下图)。

若用一网络覆盖图像,并是像素点位于网络的交点上,则表示数字图象的线条可看作是由短的线段组成的链。这些短的线段正好是相邻交点的连线。这样就可以用链码来描述任意曲线或闭合的边界。
这里写图片描述

这里写图片描述
这里写图片描述
这里写图片描述

这里写图片描述

边界的形状数表示
这里写图片描述
边缘线(边界)的链码跟踪——以8链码为例

这里写图片描述

线性系统

系统

从形式上看,系统的功能是 施行一种运算,它把一个 信号(输入)映射成另一个信号(输出)。如果把体现这种运算的映射函数记为T[·],则有y=T[x] .

式中的映射函数T[·]表示:输入信号映射成输出信号的一种(或一组)规则,或者一个对应表格。

对于图像处理系统,输入和输出都是二维信号,映射 函数T[·]是二维函数。

线性系统的性质

一个系统是线性系统的充分必要条件:

同时满足叠加原理与齐次原理。

叠加原理:如果输入信号是两个序列之和,则输出信号也为两 个对应的输出信号之和。
y1=T[x1],y2=T[x2],则有y1+y2=T[x1]+T[x2]

齐次原理:如果y=T[x]y=T[x],则有ay=T[ax]=aT[x]

综合上述两个原理,线性系统对于所有输入信号x1,x2以及所有 复常数a和b,皆有:ay1+by2=T[ax1+bx2]

线性系统服从叠加原理,所以线性系统对于输入信号的加权和的响应等于单个输入信号响应的加权和。

线性平移不变系统

平移不变系统:指如果输入序列进行移位,则输出序列进行相应的移位。

对于二维系统,如果y(i, j)=T[x(i, j)] ,则平移不变条件是: 当且仅当对所有序列x(i,j)及所有整数移位(m,n),皆有

y(im,jn)=T[x(im,jn)]

系统的平移不变线性是两个独立的特性,一个特性成立 并不意味着另一个特性也一定成立。

E.g.系统T[x(i,j)]=[x(i,j)]2是平移不变的,但不是线性的; 系统T[x(i,j)]=k(i,j)x(i,j) (其中k(i,j)是增益)是线性的,但不是平移不变的。

线性平移不变系统:指既满足线性条件又满足平移不 变条件的系统。
这里写图片描述
如果对每个(m,n)点空间变化冲激响应hmn(i,j) 则线性系统对任意输入的响应可利用叠加原理求得。
如果系统还是平移不变的,则可进一步简化。

hmn(i,j)L[δ(im,jn)]

故在(m=0,n=0)的特殊情况下,有h00(i,j)L[δ(i,j)] 利用平移不变性质,应有hmn(i,j)=h00(im,jn)

这样一来,空间变化冲激响应变成了空间不变(坐标原点处)冲激响应的移位序列。若定义 $h(i, j) ≡ h_{00}(i, j),则可把输出序列写成:

g(i,j)=m=n=f(i,j)h(im,jn)

  1. 一个空间线性平移不变系统的输出就是该系统的空间不变 冲激响应h (i, j)的加权和。而所加的“权”就是系统的输入 f(i, j)。
  2. 一个线性平移不变系统完全可以用它的空间不变冲激响应 h(i, j)来表征。
  3. 是一个离散二维卷积,i.e. 线性平移不变系统的输出等于 系统的输入与它的空间不变冲激响应的卷积。

二维线性平移不变系统 的频率响应

单位冲激响应为h (i, j)的线性平移不变系统对图像输入的响应
输入信号是复正弦:f(i,j)=exp(jui+jvj)
式中u,v是实数,分别称为水平频率(分量)与垂直频率(分量);u,v后面的i,j是坐标值(注意:不要混淆了虚数记号j与位置坐标记号j)
∞∞

输出信号

g(i,j)=m=n=h(m,n)exp[ju(im)+jv(jn)]=exp(jui+jvj)[m=n=h(m,n)exp(jumjan)]
g(i,j)=exp(jui+jvj)H(u,v)

输出信号与输入信号有相同频率的复正弦,而它的幅度和相位 则由复增益H(u,v)的影响而产生变化。
系统的频率响应
H(u,v)i=j=h(i,j)exp(juijaj)


图像的卷积计算

卷积积分

卷积(convolution) (积分)是图像处理中十分重要的基本计算法则,就像算术中的四则运算一样。

卷积积分(卷积) :

g(t)=h(tτ)f(τ)dτ

h(t)是表征线性平移不变系统特性的一个函数,叫做该系统的冲激响应,是指当系统的输入是单位冲激时得到的输出。线性平移不变系统的输出可通过输入信号与该系统的冲激响应的卷积得到。

卷积积分可以简化为:g=hf。其中运算符合“*”代表前后两个函数的卷积。下图描述了两个函数的卷积过程。卷积积分的结果是图中的阴影部分的 面积,最后的结果g(t)是t的函数。
这里写图片描述
这里写图片描述

卷积积分:如果函数 g(t) 满足下列关系式

g(t)=f(t)h(tτ)dτ=f(t)h(t)

卷积积分的图解表示:
这里写图片描述
这里写图片描述

卷积积分的步骤

  1. 折迭:把 h(τ) 相对纵轴作出其镜像
  2. 位移:把 h(-τ) 移动一个 t 值
  3. 相乘:将位移后的函数 h(t-τ) 乘以f(τ)
  4. 积分: h(t-τ) 和 f(τ) 乘积曲线下的面积即为 t 时刻的卷积值

卷积积分的性质:

  • 交换律hf=fh
  • 分配律f(l+h)=fl+fh
  • 结合律 (fh)l=f(hl)
  • 求导
    ddt[fg]=dfdth=fdhdt

包含脉冲函数的卷积:即 f(t) 或 h(t) 中有一个为脉冲函数 ,则它们的卷积是一种最简单的卷积.
这里写图片描述

卷积定理:如果 f(t) 和 h(t) 的富里叶变换分别为 f(f) 和 H(f) , 则f(t) * h(t) 的富里叶变换为 H(f)f(f)。即

h(t)f(t)H(f)F(f)

卷积定理的简单推导:
g(t)ej2πft=[f(τ)h(tτ)dτ]ej2πftdt=f(τ)[h(tτ)ej2πftdt]dτ
这里写图片描述


相关

相关积分的计算步骤:

  1. 位移:把 h(τ) 移动一个 -t 值
  2. 相乘:将位移后的函数 h(t+τ) 乘以 f(τ)
  3. 积分: h(t+τ) 和f(τ) 乘积曲线下的面积即为 t 时刻的相关值

相关定理:如果 f(t) 和 h(t) 的富里叶变换分别为 F(f) 和 H(f) ,则 f(t) 和 h(t) 的相关积分为 F(f)H*(f)。即

h(τ)f(t+τ)dτH(f)F(f)

其中,F(f)F(f) 的复共轭

二维卷积

设f和h分别是二元连续函数,即f(x,y)和h(x,y),则它们的卷积积分为

g(x,y)=fh=f(u,v)h(xu,yv)dudv

式中的h是一个卷积函数 用在图像处理之中,这个卷积函数就是一个表征图像处理系统性质的函数。

二维连续函数的卷积过程与一维卷积相似,也是 反转-平移-直(点)积-积分的过程。二维 卷积的结果g(x,y)是一个体积。

离散二维卷积的矩阵运算

g(i,j)=m=m=f(m,n)h(im,jn)

二维卷积过程如下:

  1. 由h(i, j)产生序列h(i-m, j-n)。首先把h(m, n)对 m和n轴进行反转,然后进行平移,使得抽样 h(0, 0)处于(i, j)点上。
  2. 计算f(m,n)h(i-m, j-n)乘积序列。
  3. 将乘积序列的各非零抽样值相加,得到卷积输出值g(i, j)
  4. 当m、n变化时,则序列h(i-m, j-n)移到(m,n)平 面的另一个位置,得到另一个卷积输出值。

这里写图片描述

二维卷积卷积运算比较复杂,不能用两个二维序列的矩阵形式直接运算。要对它们进行适当的构造以通过矩阵相乘的运算得到卷积的结果。

  • 首先认为两个序列f(i,j)h(i,j)都是在xy方向上周期至少为NM的无限长周期序列的一部分。
  • 将它们用矩阵形式描述,则为FH,它们的卷积为G=FH=HF
  • F的大小为(mf×nf),H的大小为(mh×nh)。由于卷积运算是两个序列之间展转相乘求和的过程, 所以在运用矩阵形式时要把FH加以扩展。扩展 后的矩阵大小为M×N(其中 Mmf+mh1,Nnf+nh1)用”0”元素填充扩展区的行、列,把扩展后 的矩阵命名为FpHp。为了方便起见,令M=N


这里写图片描述
这里写图片描述
这四个块矩阵分别构成了循环矩阵Hb的第一列。Hb的第二列、第三列 和第四列由第一列四个块矩阵的次序循环交换构成。
这里写图片描述
这里写图片描述

卷积与滤波

卷积的数字实现可用于对数字信号和数字图像的线性滤波.采样方波信号和滤波器冲激响应的卷积过程如下图所示:
这里写图片描述

单位脉冲输入通过一个一阶低通滤波器之后,减少了一定的高次谐波
这里写图片描述


卷积的作用和应用

  1. 平滑 可采用矩形脉冲、三角脉冲或高斯脉冲为平滑函数。等价于邻域处理中的平滑去噪。
  2. 边缘增强带负的旁瓣(side lobes)的正尖峰函数,其边缘增强时产生两个效果。
    1. 增加边缘的梯度;
    2. 在边缘的两侧加边。类似与拉普拉斯算 子产生的效果。
  3. 去卷积 利用一个卷积去除另一卷积影响的技术。

关于图像工程基础与实践更多讨论与交流,敬请关注本博客和新浪微博songzi_tea

2018-09-09 23:00:32 zzq060143 阅读数 6445

写在前面:

  1. 图像处理主要研究图像传输、存储、增强和复原
  2. 计算机图形学主要研究点、线、面和体的表示方法以及视觉信息的显示方法
  3. 图像分析则着重于构造图像的描述方法,更多地是用符号表示各种图像,而不是对图像本身进行运算,并利用各种有关知识进行推理

图像理解
图像理解(image understanding,IU)就是对图像的语义理解。它是以图像为对象,知识为核心,研究图像中有什么目标、目标之间的相互关系、图像是什么场景以及如何应用场景的一门学科。
图像理解属于数字图像处理的研究内容之一,属于高层操作。其重点是在图像分析的基础上进一步研究图像中各目标的性质及其相互关系,并得出对图像内容含义的理解以及对原来客观场景的解释,进而指导和规划行为。图像理解所操作的对象是从描述中抽象出来的符号,其处理过程和方法与人类的思维推理有许多相似之处。
图像分析
图像分析一般利用数学模型并结合图像处理的技术来分析底层特征和上层结构,从而提取具有一定智能性的信息。
图像处理
图像处理(image processing),用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。基本内容 图像处理一般指数字图像处理。数字图像是指用数字摄像机、扫描仪等设备经过采样和数字化得到的一个大的二维数组,该数组的元素称为像素,其值为一整数,称为灰度值。图像处理技术的主要内容包括图像压缩,增强和复原,匹配、描述和识别3个部分。 常见的处理有图像数字化、图像编码、图像增强、图像复原、图像分割和图像分析等。图像处理一般指数字图像处理。
三者关系:
用模式识别和人工智能方法对物景进行分析、描述、分类和解释的技术,又称景物分析或图像理解。20世纪60年代以来,在图像分析方面已有许多研究成果,从针对具体问题和应用的图像分析技术逐渐向建立一般理论的方向发展。图像分析同图像处理、计算机图形学等研究内容密切相关,而且相互交叉重叠。但图像处理主要研究图像传输、存储、增强和复原;计算机图形学主要研究点、线、面和体的表示方法以及视觉信息的显示方法;图像分析则着重于构造图像的描述方法,更多地是用符号表示各种图像,而不是对图像本身进行运算,并利用各种有关知识进行推理。图像分析与关于人的视觉的研究也有密切关系,对人的视觉机制中的某些可辨认模块的研究可促进计算机视觉能力的提高(见机器视觉)。
图像分析(image analysis)和图像处理(image processing)关系密切,两者有一定程度的交叉,但是又有所不同。图像处理侧重于信号处理方面的研究,比如图像对比度的调节、图像编码、去噪以及各种滤波的研究。但是图像分析更侧重点在于研究图像的内容,包括但不局限于使用图像处理的各种技术,它更倾向于对图像内容的分析、解释和识别。因而,图像分析和计算机科学领域中的模式识别、计算机视觉关系更密切一些。
图像分析一般利用数学模型并结合图像处理的技术来分析底层特征和上层结构,从而提取具有一定智能性的信息。
注意:图形不等同于图像,图形只表达了视觉,图像表达了视觉与知觉。目前研究热点:图像检索、三维重建、复原、高分辨率的计算与压缩。

参考文献:
1.http://blog.sina.com.cn/s/blog_4cc6b2a2010008bu.html
2.https://blog.csdn.net/eric41050808/article/details/48996815?locationNum=14

2014-01-13 21:50:00 xj2419174554 阅读数 6015

原创作品,出自 “晓风残月xj” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/xiaofengcanyuexj)。

由于各种原因,可能存在诸多不足,欢迎斧正!

1.课程论文题目

去雾。

本次论文我的选题是去雾。由于对《图像处理与分析》这门课很感兴趣,同时也为了锻炼一下自己学习新知识的能力,我没有选择一些容易的常规的图像处理与分析算法,而是选择较为前沿的去雾算法。作为一名计算机专业的学生,我认为仅仅掌握基本的程序设计思想与常规算法是远远不够的,还要培养自己不断学习的能力—学习新知识、学习新思想的能力。这方面很重要的体现就是了解相关科技前沿,尽自己最大努力研读新论文。此外,我认为一个好的课程报告应该有一定的实用价值,或者说写报告的人应该尽可能使自己的选题有实用价值。众所周知,伴随着我国经济的快速发展,一些一味追求GDP的粗制乱造的发展模式所带来的严重后果正在干扰着我们的正常生活方式。我这次报告所要探讨的主题—雾就是其中不可忽视的因素。我这里所说的雾,是广义的雾,包括雾、霾、沙尘、烟等一切导致视觉效果受限的物理现象。由于雾的存在,户外图像质量降低,如果不处理,往往满足不了相关研究、应用的的要求。在雾的影响下,经过物体表面的光被大气中的颗粒物吸收和反射,导致获取的图像质量差,细节模糊、色彩暗淡。通过一定的技术手段,去掉物体表面的雾霭,增强图片效果显得尤为重要。

2.程序设计思路

由于我的程序可处理的图片可以是灰度的、彩色的两种。所以我设计了两种算法实现不同格式图片的处理:直方图灰度分布均衡化去雾算法,基于单幅图像的快速去雾算法。

 

1)、直方图灰度分布均衡化去雾算法

在此我先谈谈我对直方图均衡化的认识。

直方图均衡化(英文名Histogram Equalization),通过使用累积函数对灰度值进行“调整”以实现对比度的增强。具体说来,即把原图像对应的灰度直方图从比较集中的灰度区间通过一定的转换变成在全部灰度范围内的均匀分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。

直方图均衡化的具体编程实现为

    A.统计每个灰度等级对应的像素点数 

    B.计算累计概率

    C.重新映射图像像素点灰度

在这里我首先统计0-255个灰度等级i的像素点数Color[i],然后分别除以图像总的像素点求出每个灰度等级对应的概率PerProbability[i];接着运用积分的思想来计算累计概率AccuProbability[i];然后映射求得新的像素值NewColor[i]

 

 上述坐标图和积分式解释了积分思想求累计概率的正确性。下面举个例子展示整个过程。

a.假设下面使是图像对应的像素点:

 

b.下面是中间处理工程

 

c.经过处理后图像对应的像素点:

 

为什么直方图灰度分布均衡化可以在一定成都上达到去雾的效果呢?这是因为通过使用累积函数对灰度值进行“调整”以实现对比度的增强,一定程度上使暗的地方更暗、亮的地方更亮,从而在视觉上达到去雾的效果。

但是上面的去雾效果仅仅局限于灰度图片,而不能处理更为实用的彩色图像。经过上述直方图处理后,达到均衡化图像的目的,但是图像会在原图基础上失真或称为走样,即整幅图像的颜色发生很大改变,严重偏离去雾的初衷(去雾是在原图基础上除去表面的薄纱从而增强整幅图像的视觉效果)。

 综上,直方图灰度分布均衡化去雾算法可以处理灰色图,但对于彩色图像就会出现走样,达不到去雾的效果。为了解决彩色图像的去雾问题,我又看了一些最新论文,其中包括何凯明博士的《Single Image Haze Removal Using Dark Channel Prior》论文,这是一篇非常深刻的文章,里面公式推导很多,我硬着头皮读完后看不懂,于是又到博客园、CSDN上筛选出几篇相对容易理解和实现的论文,其中我对清华大牛刘倩、陈茂银、周东华的《基于单幅图像的快速去雾算法》论文非常感兴趣,决定以其为突破点尝试彩色图像的去雾算法实现。

 

 

2.基于单幅图像的快速去雾算法

由于基于单幅图像的快速去雾算法涉及的学科非常多、理论性非常强,在此我的设计思路主要是取自清华大牛刘倩、陈茂银、周东华的《基于单幅图像的快速去雾算法》论文以及在编写程序的过程中在一定程度上参考了CSDN博客兰专家laviewpbt博客《一种可实时处理 O(1)复杂度图像去雾算法的实现》,由于所处理图片的格式不同,以及论文、博客里都没提供源码,所以在编写程序的过程中我并无抄袭。在读论文的过程中,真的是充满了对论文撰写者的佩服之情。之前徐老师在课堂上介绍说《图像处理与分析》是门交叉学科,博大精深,那时还愚昧的不以为然,一则是因为所学知识太少,眼界受限,没有了解相关的前言领域;二来是课下编程不够,虽说自己实现了图像几何变换、图像增强等算法,但总的难度很低,而且刚开始接触时不会还能参照先驱的程序。在看了几篇图像处理的前研论文之后,我感觉到自己的愚昧无知。下面就谈谈对我《基于单幅图像的快速去雾算法》论文的一些理解。

在计算机视觉领域,通常运用严密的数学物理方法来描述雾霾等自然现象,《基于单幅图像的快速去雾算法》论文中提出算法的出发点就是基于衰减模型和环境光模型的,并且提出了一个模型表达式:

 

x为空间坐标,F是待恢复的无雾图像,r是大气散射系数,d是景物深度,A是与x无关的全局大气光,H为有雾情况下的景物图像。

这是基于大气理论的光学表达式,由于知识有限,我只能照搬了。

 

      上面是程序的算法流程,下面我将依次谈谈我对每个步骤的理解。

Step 1  读入待处理的图像

论文以及其他关于去雾的程序都是基于较高格式的图像的,普通bmp尤其是268色位图的处理没有涉及,这也是我选择去雾算法实现的一个重要原因—不简单机械地重复别人做过的东西。

 

 Step 2 求空间最小颜色通道

基本色通道(color channel),就是将构成整体图像的颜色信息整理并表现为单色图像的工具。我们知道现实世界中的颜色都是由红、绿、蓝3中颜色组成的。本步骤是要求出所有空间坐标位置对应的最小颜色通道,即Ri,Gi,Bi中最小者,得到新图像M

 

 Step 3 M进行均值滤波

     均值滤波是徐老师在课堂上重点讲过的。均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素,再用模板中的全体像素的平均值来代替原来像素值。 可见均值滤波的关键是选择模板,然后对应相乘相加相除,这个过程是比较简单。

 

Step 4 M所有像素点求均值Mav

直接把M中的下所有像素相加然后除以总像素数即可。

 

Step 5  求环境光估计值

去雾很大程度上就是要考虑环境光的影响,还远物体的庐山真面目。利用均值滤波求出的环境光具有深度缓变处平滑,深度跳变处随之跳变变的特点。当M的深度发生较大变化时M,Mav也随之发生较大变化,最终体现在L上。

 

Step 6 求出全局大气光

全局大气光也是对图像的重要影响因素。通常取最大灰度值为全局大气光A

 

Step 7 还原图像

     考虑环境光、全局大气光的影响,利用算法开头给出的模型表达式还原图片。

 

   上面就是整个过程。在原论文中,上述都给出较为严格的证明,由于相关专业知识有限,我就不交代推理证明过程了。

    

   

3.数据结构与算法设计

1)、直方图灰度分布均衡化去雾算法

     由于整个处理过程中没有特殊要求的操作,所以开辟二维数组就可解决问题。分别开辟3个二维数组

int *Color=new int[MAXNCOLOR];//Color[i]存储该灰度等级i对应的像素点数,同时为了节省内存空间,在映射后Color[i]则存储原来灰度等级i对应的新灰度等级,这样做可以少申请一个二维数组,由于图像处理很占内存空间,因此优化是必须的。

double *PerProbability=new double[MAXNCOLOR];//存储灰度等级i对应的概率PerProbability[i].

double* AccuProbability=new double[MAXNCOLOR];//存储灰度等级i对应的累加概率AccuProbability[i],此数组可以和上面的PerProbability[]数组合成一个,为了程序的可读性,我开了两个数组,但须明确此处可以优化。

 

此算法原理理解起来可能不是很容易,但实现起来却很简单,无需特殊编程技巧,在此就不给出伪代码,只给出大致流程:统计每个灰度等级对应的像素点数 ,计算累计概率,重新映射屏幕像素点灰度,具体实现见第4部分直方图灰度分布均衡化去雾算法源代码。此算法时间复杂度为O(n),空间复杂度为O(n),n为空间像素点数。

 

2.基于单幅图像的快速去雾算法

     上面的空间最小颜色通道和均值Mav可以在求所有点的颜色通道是一起求出,不必另写循环语句比较求得。由于编程实现较简单,在此就不多说了。

    具体算法步骤见程序设计思路部分,具体源代码见第4部分基于单幅图像的快速去雾算法。

 

4.程序关键代码

、直方图灰度分布均衡化去雾算法源代码
/*************************************************
*功能:直方图灰度分布均衡化去雾算法
**************************************************/
void CMyDIPView::OnMenuitem32790() 
{
	const int MAXNCOLOR=256+10;
	unsigned char *lpSrc;
	CMyDIPDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if(pDoc->m_hDIB == NULL)
		return ;
	LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->m_hDIB);
	LPSTR lpDIBBits=::FindDIBBits (lpDIB);
	int cxDIB = (int) ::DIBWidth(lpDIB);
	int cyDIB = (int) ::DIBHeight(lpDIB);
	int *Color=new int[MAXNCOLOR];
	memset(Color,0,sizeof(Color));
	long lLineBytes = WIDTHBYTES(cxDIB * 8);

	//统计每个灰度等级对应的像素点数
	for(int i = 0; i < cyDIB; i++)
	{
		for(int j = 0; j < cxDIB; j++)
		{
			Color[*(lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j)]++;
		}
	}	

	//计算每个灰度等级对应的概率
	double *PerProbability=new double[MAXNCOLOR];
	double TotalPixelNumber=cxDIB*cyDIB*1.0;
	for(i=0;i<256;i++)
	{
		PerProbability[i]=Color[i]*1.0/TotalPixelNumber;
	}
    //计算每个灰度等级对应的累加概率
	double* AccuProbability=new double[MAXNCOLOR];
	AccuProbability[0]=PerProbability[0];
	Color[0]=(int)(AccuProbability[0]*255.0f+0.5f);
	for(i=1;i<256;i++)
	{
		AccuProbability[i]=AccuProbability[i-1]+PerProbability[i];
		Color[i]=(int)(AccuProbability[i]*255.0f);
	}
	
	//重新映射屏幕像素点灰度
	for(i = 0; i < cyDIB; i++)
	{
		for(int j = 0; j < cxDIB; j++)
		{
			unsigned char perpixel=*(lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j);
			*(lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j)=Color[perpixel];
			
		}
	}
	::GlobalUnlock((HGLOBAL) pDoc->m_hDIB);
	Invalidate(TRUE);
}



.基于单幅图像的快速去雾算法
/*************************************************
*功能:基于单幅图像的快速去雾算法
**************************************************/
void CMyDIPView::OnMenuitem32791() 
{
	unsigned char *lpSrc;
	CMyDIPDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if(pDoc->m_hDIB == NULL)
		return ;
	LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->m_hDIB);
	LPSTR lpDIBBits=::FindDIBBits (lpDIB);
	int cxDIB = (int) ::DIBWidth(lpDIB); 
	int cyDIB = (int) ::DIBHeight(lpDIB);  
	long lLineBytes = WIDTHBYTES(cxDIB * 8); 
	double sumMinColor=0;//所有颜色通道的累加和
	double aveMinColor=0;//所有颜色通道的平均值
	unsigned char minColor;//颜色通道最小值
	unsigned char maxColor=0;//所有颜色通道最大值
	int maxFlag=0;//标记颜色通道最大值权重
	int minFlag=0;//标记颜色通道最小值权重
	unsigned char *mNewPicture=new unsigned char[cxDIB*cyDIB];
	for(int i = 0; i < cyDIB; i++)
	{
		for(int j = 0; j < cxDIB; j++)
		{
			
			unsigned char perpixel=*(lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j);
			unsigned char red=perpixel/32;
			minFlag=32;
            minColor=red;
			if(maxColor<red)
			{
				maxColor=red;
				maxFlag=32;
			}
			perpixel%=32;
			unsigned char green=perpixel/8;
			if(minColor>green)
			{
				minColor=green;	
				minFlag=8;
			}
			if(maxColor<green)
			{
				maxColor=green;
				maxFlag=8;
			}
			
			unsigned char blue=perpixel%8;
			if(minColor>blue)
			{
				minFlag=1;
				minColor=blue;
			}
			if(maxColor<blue)
			{
				maxColor=blue;
				maxFlag=1;
			}
			mNewPicture[cxDIB * (cyDIB - 1 - i) + j]=minColor*minFlag;
			sumMinColor+=minColor*minFlag;
		}
	}
	aveMinColor=sumMinColor/(cxDIB*cyDIB);//颜色通道平均值
	maxColor*=maxFlag;
	double maxAveColor=0;//均值滤波后颜色通道平均值
	double *mAveNewPicture=new double[cxDIB*cyDIB];
	double xishu=1.0/100.0;
	int h=cyDIB,w=cxDIB;
	int tem_w=10,tem_h=10;
	int dw = cxDIB;
	double sum;
    for(i=0;i<h;i++)
    {  
		for(int j=0;j<w;j++)
		{   	
			sum=0;	
			if( j<((tem_w-1)/2) || j>(w-(tem_w+1)/2) || i<((tem_h-1)/2) || i>(h-(tem_h+1)/2) )
				mAveNewPicture[i*dw+j]=mNewPicture[i*dw+j];
			else 
			{ 	
				for(int m=i-((tem_h-1)/2);m<=i+((tem_h-1)/2);m++)
				{
					for(int n=j-((tem_w-1)/2);n<=j+((tem_w-1)/2);n++)
					sum+=mNewPicture[m*dw+n];

				}	
				sum=sum*xishu;sum = fabs(sum);	
				if(sum<0)     sum=0;	
				if(sum>255)sum=255;
				mAveNewPicture[i*dw+j]=sum;
			}
			if(maxAveColor<mAveNewPicture[i*dw+j])
				maxAveColor=mAveNewPicture[i*dw+j];
		}
	} 
	double *lNewPicture=new double[cxDIB*cyDIB];
	for(i = 0; i < cyDIB; i++)
	{
		for(int j = 0; j < cxDIB; j++)
		{
          lNewPicture[i*cxDIB+j]=min(min(aveMinColor*1.28,0.9)*mAveNewPicture[i*cxDIB+j],mNewPicture[i*cxDIB+j]);
		}
	}
	double A=(maxColor+maxAveColor)/2.0;
	for(i = 0; i < cyDIB; i++)
	{
		for(int j = 0; j < cxDIB; j++)
		{
			double H=*(lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j);
	        double L=lNewPicture[cxDIB * (cyDIB - 1 - i) + j];
			*(lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j)=(H-L)/(1-L/A);
		}
	}
	::GlobalUnlock((HGLOBAL) pDoc->m_hDIB);
	Invalidate(TRUE);
}


 

 5.程序运行结果

(2)、直方图灰度分布均衡化去雾算法

图像1

  去雾前

 

 

图像2

   去雾前:

 


图像3

 

 

    对于上面3张灰度图像,直方图灰度分布均衡化达到的去雾效果是不错的,但是对于彩色图像,却无法回避走样问题。下面给出的就是直方图灰度分布均衡化在处理彩色图像时遇到的问题。

图像4

   去雾前

 

   图像4在直方图灰度分布均衡化后景物形状保持了,但色彩却严重偏离了,关于原因,上面已有解释。



(2).基于单幅图像的快速去雾算法

图像5

 

 

图像6

  去雾前

 

 

图像7

  去雾前

 

 

6.编程中遇到的困难及解决方法

1)、选题

    由于徐老师没有要求具体做什么,这个长期习惯老师出题然后自己动手编程的我带来一定干扰。自主选题也是一种自主学习能力,结合自己的兴趣与能力选择适合自己的选题。由于之前做ACM,我认为自己有一定的解决问题能力,于是选择了较为前沿的去雾算法。

  

(2)、查资料

由于本次我的选题较为前沿,所以相关资料不好找,有用的思想、算法等都得通过最近几年的论文获得。之前没有读过多少论文,尤其是像这次这样理论性很强的论文,所以在这方面遇到一定的麻烦。最后,通过CSDN和博客园两个平台,我找的了相关论文和可供参考的博客(在此对大牛们表示感谢)。

 

(3)、关于bmp格式的256色位图的处理

在我看到的相关论文里讨论的都是较高格式的图像,而徐老师给的程序框架是基于bmp格式的256色位图。我首先想到的是修改老师的程序,使之变成具有处理较高格式图片的能力,但由于时间以及没有牢固的MFC编程基础,最终没能动手改。但通过仔细阅读相关论文发现算法是可以处理bmp格式的256色位图的。

 

(4)、直方图灰度分布均衡化去雾算法处理彩色图

开始我打算直接用直方图灰度分布均衡化去雾算法处理彩色图片,但总是达不到预期的效果。图像上景物的轮廓是保持了,但颜色却发生很大的变化,没有达到去雾的效果。在多次修改程序不见改善的情况下我选择了重新看课本,经过一番理论分析,我搞清楚了直接直方图均衡化能增强整幅图像的效果,但不能使彩色图像的黯淡部分在不走样的情况下变亮。当然后来看到博客园上专家Imageshop的

 《限制对比度自适应直方图均衡化算法原理、实现及效果》以及

 《局部自适应自动色阶/对比度算法在图像增强上的应用》文章发现用人工智能中自适应方法也可以使直方图均衡化具备处理彩色图像的能力。但自适应的相关理论对刚开始接触图像处理的我来说有难度,所以我只用直方图均衡化处理灰度图像。

 

(5)、获取bmp格式的256色位图的颜色通道

基于单幅图像的快速去雾算法有一个很重要的一点就是获取原图像空间坐标像素点处的颜色通道中的最小者。关于获取颜色通道,在24位存储格式时可以通过依次访问3个字节获取相应的颜色通,也可以通过GetRValueGetRValueGetRValue等函数直接取出红绿蓝3种颜色通道,等等,但这些都不能处理8位的图像,后来我在CSDN上论坛上问别人,有人说RGB在一个字节中分别占3,2,3个比特位,于是我选用想到位操作或求模两种方法。

 

(6)、均值滤波模板大小的设置

     关于这点,徐老师课堂上是可以结合实际情况自己设定。但当面对具体情况时,模板大小的设定很有技巧。均值滤波可以对图像进行模糊处理、平滑处理,在一定范围了随模板大小的增大而增大,当达到某个峰值之后随模板大小的增大而减小。上述是本次实验经验所得,可能不符合理论,但我的程序结果却支持这种结论。

 

(7)、ρ参数的大小设置

   ρ参数的大小控制了图像去雾能力的大小,越大,雾气越少,图像越显得暗,越小,图像偏白,雾气越浓。所以在合适的范围内参数ρ应该尽可能取得大点,实验中我去的是1.28

 

7.总结心得

     在本次写报告的过程中,我最大的感觉就是知识欠缺。在我目前接触的图像处理算法中,没有特别难编程实现的,大多可以通过基本的编程方法解决。但是,其中的指导思想却是很需要用心体会的。在编程时一定要上升到理论层次,多问几个为什么:为什么这么做,为什么会有这样的效果等等。

    在我看来,图像处理就是一个矩阵变换,变换的是矩阵中对应空间坐标的像素值。而变换过程中要用到很多模板、算子、算法等,这些是进行矩阵变换的依据。在理论工作完成以后,再进行动手编程,这样才能达到真正学习图像处理与分析的目的。有的理论看起来很简单,但却温含着丰富的专业知识,需要我们静下心来慢慢体会,仔细琢磨;有的理论看起来就很难,就像我选的《基于单幅图像的快速去雾算法》这篇论文,从头到尾都体现着丰富的专业知识、严密的逻辑推理能力与深厚的科学内涵,对于这样的理论,更是难得的思想启蒙,我们应该迎难而上,尽可能的读懂它。当然在编程的过程中,我们也要不断优化自己的程序,图像对象的数据量很大,稍不留神算法的时间或空间复杂度就会很高,即便常数级的优化也是很有必要的,能少开辟数组是就少开辟,能少用一层循环就少用一层循环。

有人的地方就会有审美需求,而图像处理就是一种美化过程。图像处理是指对图像信息进行加工,从而满足人类的心理、视觉或者应用需求的思想与技术。常用的图像处理方法有图像的采集与数字化、图像的编码、图像的增强、图像恢复、图像分割、图像分析等。在学习《图像处理与分析》课时要注重理论,多想想为什么;同时也应多动手,获得相应的编程体验。

 

 

 

8、参考文献

1.刘倩、陈茂银、周东华 《基于单幅图像的快速去雾算法》论文

 

2.CSDN博客兰专家laviewpbt博客《一种可实时处理 O(1)复杂度图像去雾算法的实现

 

3.何凯明 《Single Image Haze Removal Using Dark Channel Prior》论文

这是我图像处理与分析结课报告,参考了很多大牛的论文、博客,在此对他们表示感谢!文章和程序中可能有很多缺陷或错误,还请大牛斧正。


    如果觉得对你有所帮助,给几毛资助也是不错的想法!下面是博主的支付宝二维码,如果有一天收到你的资助,将无比欣慰!

                   

数字图像处理

阅读数 4263