• 图像处理与识别

    2017-03-23 09:45:57
    数字图像处理是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。图像处理是信号处理在图像域上的一个应用。目前大多数的图像是以数字形式存储,因而图像处理很多情况下指数字图像处理。此外,...

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

    摄影及印刷 (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理论的建立,该理论不仅在严格的数学基础上圆满地回答了人工神经网络中出现的理论问题,而且导出了一种新的学习方法——支撑向量机。

     

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

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

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

    展开全文
  • 图像处理与识别学习小结 数字图像处理是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。图像处理是信号处理在图像域上的一个应用。目前大多数的图像是以数字形式存储,因而图像处理很多情况...

    图像处理与识别学习小结

     

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

    摄影及印刷 (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格式。

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

    ImageStoneGIMPCxImage等,虽然它们的功能没有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×35×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. 由于更多的直观性,频率滤波器设计往往作为空域滤波器设计的向导。

     

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

    高斯型高通滤波器

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

     

     

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

     

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

    图像复原模型可以用连续数学和离散数学处理,处理项的实现可在空间域卷积,或在频域相乘。 
    参考资料:
    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理论的建立,该理论不仅在严格的数学基础上圆满地回答了人工神经网络中出现的理论问题,而且导出了一种新的学习方法——支撑向量机。

     

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

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

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

     

     

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

    展开全文
  • 这些Python库提供了一种简单直观的方法来转换图像并理解底层数据。 今天的世界充满了数据,图像是这些数据的重要组成部分。但是,在使用它们之前,必须...Python是这些图像处理任务的绝佳选择,因为它作为一种科学...

    这些Python库提供了一种简单直观的方法来转换图像并理解底层数据。

    今天的世界充满了数据,图像是这些数据的重要组成部分。但是,在使用它们之前,必须对这些数字图像进行处理 - 分析和操作,以提高其质量或提取一些可以使用的信息。

    常见的图像处理任务包括显示; 基本操作如裁剪,翻转,旋转等;;图像分割,分类和特征提取;图像恢复;图像识别。Python是这些图像处理任务的绝佳选择,因为它作为一种科学编程语言日益普及,并且在其生态系统中免费提供许多最先进的图像处理工具。

    本文着眼于10个最常用的Python库,用于图像处理任务。这些库提供了一种简单直观的方法来转换图像并理解底层数据。

    1. scikit-image

    scikit-image是一个与NumPy数组一起使用的开源Python包。它实现了用于研究,教育和行业应用的算法和实用程序。它是一个相当简单直接的库,即使对那些不熟悉Python生态系统的人也是如此。代码质量高,经过同行评审,由一个活跃的志愿者社区编写。

    资源

    scikit-image文档丰富,有很多示例和实际使用方法。

    用法

    该包通过skimage导入,大多数功能可以在子模块中找到。

    图像过滤:

    使用match_template函数进行模板匹配:

    你可以在gallery中找到更多的例子。

    2. NumPy

    NumPy是Python编程中的核心库之一,并为数组提供支持。图像本质上是包含数据点像素的标准NumPy数组。因此,通过使用基本的NumPy操作(如slicing,masking和fancy indexing),您可以修改图像的像素值。可以使用 skimage加载图像并使用 Matplotlib显示。

    资源

    NumPy的官方文档页面提供了完整的资源和文档列表。

    用法

    使用Numpy来mask图片:

    3. SciPy

    SciPy是Python的另一个核心科学模块(如NumPy),可用于基本的图像操作和处理任务。特别是,子模块 scipy.ndimage(在SciPy v1.1.0中)提供了在n维NumPy数组上运行的函数。该软件包目前包括线性和非线性滤波,二进制形态,B样条插值和对象测量等功能。

    资源

    有关scipy.ndimage包所提供的完整功能列表,请参阅文档。

    用法

    使用SciPy通过高斯滤波器进行模糊

    4. PIL/Pillow

    PIL(Python Imaging Library)是一个免费的Python编程语言库,它增加了对打开,操作和保存许多不同图像格式的支持。然而,它的发展停滞不前,其最后一版发布于2009年。幸运的是,Pillow是一个积极开发的PIL分支,它更易于安装,可在所有主流操作系统上运行,并支持Python 3。该库包含基本图像处理功能,包括点操作,使用一组内置卷积内核进行过滤以及颜色空间转换。

    资源

    文档包含安装说明以及涵盖库的每个模块的示例。

    用法

    使用ImageFilter增强Pillow中的图像:

    5. OpenCV-Python

    OpenCV(Open Source Computer Vision Library)是计算机视觉应用中使用最广泛的库之一。OpenCV-Python是OpenCV的Python API。因为后台由C / C ++编写的代码组成,OpenCV-Python速度很快快,但它也很容易编码和部署(由于前端的Python包装器)。这使其成为执行计算密集型计算机视觉程序的绝佳选择。

    资源

    通过OpenCV2-Python-Guide可以很容易上手OpenCV-Python

    用法

    使用OpenCV-Python中的 Image Blending using Pyramids创建一个“Orapple”:

    6. SimpleCV

    SimpleCV是另一个用于构建计算机视觉应用程序的开源框架。它提供访问几个高性能计算机视觉库,如OpenCV,的接口,但无需了解位深度,文件格式,色彩空间等。它的学习曲线远小于OpenCV,并且(如其标语所示),“它令计算机视觉变得简单。”支持SimpleCV的一些观点是:

    即使是初学者也可以编写简单的机器视觉测试

    摄像机,视频文件,图像和视频流都可以互操作

    资源

    很容易按照官方文档的指导进行操作,并有大量的示例和用例可供遵循。

    用法

    7. Mahotas

    Mahotas是另一个用于Python的计算机视觉和图像处理库。它包含传统的图像处理功能,如过滤和形态操作,以及用于特征计算的更现代的计算机视觉功能,包括兴趣点检测和局部描述符。使用Python编写接口,适用于快速开发,但算法是用C ++实现的,并且针对速度进行了优化。Mahotas库运行快速,代码简约,依赖性小。阅读其官方文章以获得更多了解。

    资源

    文档包含安装说明,示例,甚至一些教程帮助您轻松开始使用Mahotas。

    用法

    Mahotas库依靠简单的代码来完成工作。例如,使用最少量的代码Finding Wally问题就可以很好地解决。

    解决Finding Wally问题:

    8. SimpleITK

    ITK(Insight Segmentation and Registration Toolkit)是一个“开源,跨平台系统,为开发人员提供了一套用于图像分析的广泛软件工具。SimpleITK是一个基于ITK构建的简化层,旨在促进其在快速原型设计,交易以及解释语言方面的应用。”它也是一个图像分析工具包,具有大量组件,支持一般过滤操作,图像分割和配准。SimpleITK是用C ++编写的,但它可用包括Python在内的大量编程语言进行操作。

    资源

    有大量的Jupyter Notebook说明了SimpleITK在教育和研究活动中的应用。Notebooks使用Python和R编程语言演示如何使用SimpleITK进行交互式图像分析。

    用法

    使用SimpleITK和Python创建可视化的严格CT / MR配准过程:

    9. pgmagick

    pgmagick是基于Python的GraphicsMagick库的包装器。GraphicsMagick图像处理系统,有时也被称为图像处理的瑞士军刀。其强大而高效的工具和库集合支持在超过88种主要格式(包括DPX,GIF,JPEG,JPEG-2000,PNG,PDF,PNM和TIFF)上读取,写入和操作图像。

    资源

    pgmagick的GitHub respository有安装说明和要求。还有一个详细的用户指南。

    用法

    图像缩放:

    边缘提取:

    10. Pycairo

    Pycairo是Cairo图形库的一组Python绑定。Cairo是一个用于绘制矢量图形的2D图形库。矢量图形很有趣,因为它们在调整大小或变换时不会失去清晰度。Pycairo可以从Python调用Cairo命令。

    资源

    Pycairo GitHub respository是一个很好的资源,包含有关安装和使用的详细说明。还有一个入门指南,有一个关于Pycairo的简短教程。

    用法

    用Pycairo绘制线条,基本形状和径向渐变:

    结论

    这些是Python中一些有用且免费提供的图像处理库。有些是众所周知的,有些可能对你来说是新的。尝试一下它们以了解更多关于它们的信息!

    展开全文
  • 在Android平台一般使用OpenGL ES进行图像处理。在OpenGL ES中编写算法,实现效果,最后将处理的结果传输给 CPU,然后生成最终的照片。直播中的美颜,对性能有很高的要求,无法使用特别复杂的算法。我们只能在算法和...

    在Android平台一般使用OpenGL ES进行图像处理。在OpenGL ES中编写算法,实现效果,最后将处理的结果传输给 CPU,然后生成最终的照片。

    直播中的美颜,对性能有很高的要求,无法使用特别复杂的算法。我们只能在算法和美颜效果之间找个平衡点。

    OpenGL ES - 嵌入式加速3D图像标准 http://cn.khronos.org/opengles

    OpenGL® ES是一个用于嵌入式系统全功能2D和3D图像的免版税、跨平台API—包括控制台、电话、家用电器和车辆。由桌面OpenGL定义明确的子合集组成,其创造了一个软件和图像加速之间灵活而有力的低水平接口。OpenGL ES包括浮点和定点系统配置文件以及本地窗口系统的便携式绑定EGL™规范。OpenGL ES 1.X用于固定功能硬件并提供加速、图像质量和性能。OpenGL ES 2.X实现3D图像的完全可编程。OpenGL SC是用于安全高要求市场。
    概览OpenGL ES API配置文件和版本
    OpenGL ES 1.X

    固定功能硬件: OpenGL ES 1.1是相对于 OpenGL 1.5 定义 的规范,着重强调API的硬件加速,但是对1.0完全实现向后兼容。其加强了功能性、改善图像质量并优化至更高的性能,同时降低内存带宽以节约能源。OpenGL ES 1.1扩展包是添加至OpenGL ES 1.1的一系列可选扩展项,降低可变性并带来图像质量和性能的巨大改进。 了解更多…
    OpenGL ES 2.X – 用于可编程硬件

    可编程硬件: OpenGL ES 2.0是相对于 OpenGL 2.0定义 的规范,着重强调可以创建着色程序和程序对象能力、用OpenGL ES着色语言编写着色程序顶点和碎片能力的可编程3D图像管线。OpenGL ES 2.0不支持OpenGL ES 1.x的固定功能转换和碎片管线。了解更多…

    OpenGL ES 2.0 规范、头文件和可选扩展规范
    OpenGL ES 2.0 在线手册页面
    OpenGL ES 2.0 快速参考卡

    更多OpenGL ES细节:
    免版税 2D/3D API,包括桌面OpenGL定义明确的子合集。

    OpenGL® ES是一个低水平、轻量级的API,用于使用OpenGL定义明确的子合集的高级嵌入式图像。其在软件应用程序和硬件或者软件图像引擎间提供了一个低水平应用程序界面(API)。

    此标准3D图像API用于嵌入式系统,使之更加简便和价格合理地提供各种高级3D图像和游戏,横跨所有主要的移动和嵌入式平台。因为OpenGL ES(OpenGL用于嵌入式系统)是基于OpenGL的,所以不需要新的技术。这确保了与到达和来自OpenGL桌面迁移路径的协同作用—最被广泛采用的跨平台图像API。

    开发者优势

    行业标准和免版税
    任何人都可以下载OpenGL ES规范并在OpenGL ES基础上执行并运行产品。凭借巨大的行业支持,OpenGL ES是唯一真正开放、厂商中立、多平台的嵌入式图像标准。其标准化更高水平的抽象意味着开发人员可以把更多的精力放在内容方面,而不是少数代码和平台的细节问题。
    占用空间小 & 低耗能
    嵌入式空间涵盖范围非常广,从配有64兆内存的400 Mhz的掌上电脑到配有1兆内存的50Mhz移动电话。OpenGL ES是为适应这些区别而设计的,通过最小化数据存储要求、最小化指令/数据通信、适应整体和浮点,以实现最低空间占用。对于使用者而言,这意味着更小的二进制下载,可以减少在设备上的存储空间占用。
    从软件到硬件渲染的无缝连接
    尽管OpenGL ES规范定义的是一个特殊图像处理管线,个别的要求可以在专用硬件上履行,在系统CPU上作为一个软件程序运行,或者作为专用硬件和软件程序的联合体运行。这意味着如今的软件开发者可以使用符合标准的软件3D引擎,实现应用程序和工具的无缝连接,将OpenGL ES用于更高耗能设备的硬件加速。
    可扩展 & 演变
    新的硬件创新可以通过OpenGL扩展机制的API进入OpenGL ES,同时API的更新十分简便。因为扩展性逐渐被广泛接受,也正在考虑被融入到核心OpenGL ES标准中。此处理使OpenGL ES可以演变为一种可控同时创新的方式。
    使用简单
    基于OpenGL,OpenGL ES拥有直观设计与逻辑指令的良好结构。
    文件管理有序
    因为OpenGL ES是以OpenGL为基础的,大量的相关示范代码使关于OpenGL ES的相关信息价格低廉同时方便查找。通过OpenGL ES的介绍,开发人员现在为从手机到超级计算机可以编写基本一样的代码。
    

    符合性测试

    规范每年要经过检查和修改。要被标注为OpenGL ES合格实施,其必须通过一套的符合性测试。该符合性测试的定义将作为OpenGL ES文件编制的一个独立部分进行维护。
    OpenGL ES 的2个轨迹路线图

    OpenGL ES路线图是专门为嵌入式行业的各种需求设计的,包括”1.X”和”2.X”规范路线的两个轨迹,并将同时开发。1.X路线图将继续为新一代固定功能3D加速器进行开发,同时2.X路线图将实现新兴可编程3D管线。该双轨迹路线图使OpenGL ES可以满足大量3D的图像要求,用于嵌入式市场的各种设备和平台,从低端的手机到高端的游戏控制器。Khronos致力于提供每个1.X 和2.X轨迹的各个API版本间的向后兼容性,以确保应用程序可以在各个版本间顺利地传输。
    Two Tracks for OpenGL ES
    OpenGL ES框架
    OpenGL ES Momentum

    这里写图片描述

    这里写图片描述

    配置文件:
    OpenGL ES规范包括许多配置文件的定义。每个配置文件是一个版本桌面OpenGL规范的子集以及一些其他的OpenGL ES特有扩展。OpenGL ES配置文件是整个OpenGL衍生应用程序界面庞大家族的一部分。同样地,这些配置文件分享了一个相似的处理管线、指令结构还有一样的OpenGL名字空间。必要的是,扩展性是为了扩大已有的桌面OpenGL功能。OpenGL ES专有的扩展性在OpenGL ES配置文件中扮演的角色就像是相对于OpenGL规范的OpenGL ARB扩展性作用。OpenGL ES专有扩展性既是计划未来融入核心配置文件修订版的功能的前驱,也是重要但非主流的功能的形式化。每个配置文件定义都意味着一个独特的头文件和链接/运行时间库,定义配置文件中的指令和符号。为简化维护一个单独的超集,可以用相应的假定预处理指令定义数据头,来控制符号和指令原型的可见性。在运行时间,一个应用程序可以决定哪个配置文件在用OpenGL版本字符串运行。
    
    公用配置文件是用于消费者娱乐和相关的设备,例如手机、掌上电脑、机顶盒、游戏控制器等等。其用于最广泛的市场范围,包括支持带有各种性能的平台。
        空间占用最小化,纹理绘图的全功能3D
        良好的游戏平台
        可用于手机设备
    安全高要求配置文件是用于将可靠性和可认证性作为主要约束条件的消费者和行业的应用程序。
        绝对最小化3D以确保安全认证
        用于航空电子设备和车载显示器
    扩展性:
    OpenGL ES执行可能包括添加新的特点到执行中的扩展性。一个OpenGL ES配置文件由两部分组成:一个全部OpenGL管线的子集和一些从一套OpenGL ES专业扩展性中提取至完整OpenGL规范的扩展功能。每个扩展性都会经过修剪,与指令子集匹配并添加到配置文件作为核心增加项或者配置文件扩展文件。核心增加项与配置文件扩展文件的区别在于指令和符号不包括在其名称到扩展后缀中。配置文件都扩展性被进一步分为要求(强制性的)和可选扩展性。要求扩展性必须作为符合执行的一部分进行,而可选扩展性的执行则取决于执行者的判断。
    本地平台图像接口层- EGL:
    OpenGL ES还包括一个普通平台接口层的规范,叫做EGL。这层是平台独立的,而且可以有选择性地被包括到厂商的OpenGL ES分布中。平台绑定也有一个关联符合性测试。或者,厂商可以选择定期他们自己的平台专有嵌入层。
    

    参考资料:
    http://blog.csdn.net/forest_world/article/details/53304218 Android平台OpenGL ES图像处理
    http://blog.csdn.net/peng_weida/article/details/45200241 一个简单的OpenGL ES 3.0 示例 (Android NDK jni)

    展开全文
  • OpenCV是学习数字图像处理的好工具,本专栏拟打算从对OpenCV源码的学习来研究数字图像处理中的基本操作。我开设本专栏不为别的,只希望能系统地学习OpenCV,并把我支离破碎的数字图像处理知识好好理一理。当然,最终...

    OpenCV是学习数字图像处理的好工具,本专栏拟打算从对OpenCV源码的学习来研究数字图像处理中的基本操作。我开设本专栏不为别的,只希望能系统地学习OpenCV,并把我支离破碎的数字图像处理知识好好理一理。当然,最终还是为了我的毕设啦!这是我大学的最后一个作品了,我希望能有一个好的结果。

    因此,本专栏的所有文章相当于我的学习笔记,内容仅供参考,也欢迎各位批评指正。

    OpenCV

    OpenCV是一个开源跨平台的计算机视觉函数库,它提供了各种图像处理的操作,我们可以不掌握数字图像处理的知识,就可以使用这个函数库,因此它为我们的编程提供了很大的便利。

    笔者在以前在安装OpenCV时吃了不少苦头,遇到过各种各样的问题,这里也略作总结:

    • 与VS的版本兼容问题

    由于OpenCV在更新,而VS也在更新,这就导致了二者很难保持一致。在OpenCV的路径中你会发现类似于这样的文件夹:

    opencv-vs

    其中“vc10”、“vc11”、“vc12”就分别对应VS的版本,即VS2010、VS2012、VS2013(vc14对应的是VS2015),倘若你下载的OpenCV中没有与你的VS对应版本的文件夹的话,那二者就不能兼容。

    • 程序的位数和编译模式问题

    其实这实际上是配置上的问题了。下面是VS的“Property Manager”的配置窗口:

    property-manager

    这个窗口的信息很直观,就是说你有四种配置方式:Debug编译模式+32位程序、Debug编译模式+64位程序、Release编译模式+32位程序、Release编译模式+64位程序。所以配置的时候,你需要注意选择合适的路径和动态链接库,如你想配置Debug编译模式+32位程序,你就需要选择x86的文件夹和后面带有d的动态链接库了。

    x86

    debug

    当然,配置正确了也不能保证万事大吉,你还需要在VS中设置编译模式:

    build-mode

    这里需要和前面的配置保持一致。

    上面我就总结了两种比较常见也比较致命的问题,其他细节问题这里就不赘述了。

    在本专栏中,我拟打算学习一下OpenCV中某些部分的源码,另外也会介绍一些函数的原理,当然这就很可能涉及到数字图像处理方面的知识了。

    数字图像处理

    关于数字图像处理的介绍可以参考经典的图像处理的图书,如冈萨雷斯的《数字图像处理》一书。其中这样介绍数字图像处理:

    数字图像处理是指借助于数字计算机来处理数字图像。注意,数字图像是由有限数量的元素组成,每个元素都有一个特定的位置和幅值。

    其中,对数字图像处理的历史、相关领域等做了详细的介绍,感兴趣的可以去看看。

    专栏图片

    专栏还需要上传一张图片,我不知道要选什么图片,就将OpenCV安装路径中的几个图片经过缩放、组合成了一张长图上传到了上面。

    // column_intro.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    #include <iostream>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/imgproc/imgproc.hpp>
    
    using namespace cv;
    using namespace std;
    
    int main(int argc, char **argv)
    {
        if (argc < 2)
        {
            cout << "No arguments found!" << endl;
            return -1;
        }
        //cout << argc << endl;
        float frame_wd = 1110, frame_hg = 170;
        Mat frame = Mat::zeros(frame_hg, frame_wd, CV_8U);
    
        Mat scale_mat = Mat::zeros(2, 3, CV_32FC1);
        float scale_factor;
        Mat img, rst;
        // the distance of every image move in loop
        float pitch = 0.0;
    
        for (int i = 0; i < argc - 1; i++)
        {
            img = imread(argv[i + 1], CV_LOAD_IMAGE_GRAYSCALE);
            // get scale factor
            scale_factor = frame_hg / img.size().height;
            // get scale matrix
            scale_mat.at<float>(0) = scale_factor;
            scale_mat.at<float>(4) = scale_factor;
            // get size of result
            Size sz(img.size().width * scale_factor,
                img.size().height * scale_factor);
            warpAffine(img, rst, scale_mat, sz);
    
            if (pitch + rst.size().width < frame.size().width)
            {
                rst.copyTo(frame(Rect(pitch, 0, rst.size().width, frame_hg)));
                pitch += rst.size().width;
            }
            else
            {
                rst(Rect(0, 0, frame_wd - pitch, frame_hg)).
                    copyTo(frame(Rect(pitch, 0, frame_wd - pitch, frame_hg)));
            }
        }
    
        // write the result into file
        imwrite("result.png", frame);
        return 0;
    }

    在我的github或者gitee里可以下载该代码。

    很久没有写博客了。作为我的2018年第一篇博客,内容可能有点儿仓促,后面我会根据实际需要进行适当改动。

    参考资料

    1. 数字图像处理,冈萨雷斯,电子工业出版社
    2. 维基百科:OpenCV
    展开全文
  • 也就是说,它实际提供的是各种图像处理算法。若需具体应用,需要组合其算法以实现某个功能。 OpenCV 的全称 Open Source Computer Vision Library,是一个基于BSD许可(开源)发行的跨平台计算机视觉库,又名 “开源...
  • 花了点时间整理了一下数字图像处理知识体系,从宏观上把握图像处理,使自己的学习思路就更加清晰。 1.本文大部分内容来自:http://blog.csdn.net/byxdaz/article/details/4375228 2.有些内容待添加,特别是opencv...
  • 开源图像处理软件

    2018-11-13 18:11:02
    要写好一个图像处理软件,仅靠自己看书是完全不够的,要多方面学习,借鉴前人的经验,要集思广益、多面出击。如今网络发达,图像学的资料其实也到处都是。只是往往个人能力或精力有限,在短时间内无法找到那些也许藏...
  • 关于图像处理的书籍

    2019-03-28 21:18:47
    2.《MATLAB图像处理实例详解》 3.网址:图像处理入门必看 - CSDN博客 https://blog.csdn.net/chensanwa/article/details/78650073 目录 笔记:深度学习—卷积神经网络从入门到精通 1.1 概念 ...
  • 本文主要介绍了一些简单易懂最常用的Python图像处理库 当今世界充满了各种数据,而图像是其中高的重要组成部分。然而,若想其有所应用,我们需要对这些图像进行处理。图像处理是分析和操纵数字图像的过程,旨在提高...
  • Marvin 是一个Java开发的可扩展的图像处理框架,该框架主要提供以下几方面的功能:基本图像操作;从视频中捕获帧;多线程的图像处理;通过GUI界面集成插件;插件性能分析;通过插件进行功能扩展。授权协议: GPL开发...
  • 图像处理开源软件

    2018-01-11 19:11:48
    要写好一个图像处理软件,仅靠自己看书是完全不够的,要多方面学习,借鉴前人的经验,要集思广益、多面出击。如今网络发达,图像学的资料其实也到处都是。只是往往个人能力或精力有限,在短时间内无法找到那些也许藏...
  • 图像处理知识框架

    2018-08-05 14:00:02
    花了点时间整理了一下数字图像处理知识体系,从宏观上把握图像处理,使自己的学习思路就更加清晰。 1.本文大部分内容来自:http://blog.csdn.net/byxdaz/article/details/4375228 2.有些内容待添加,特别是opencv...
  • 随着科技的发展,各个领域对图像处理要求越来越高,算法也越来越复杂,处理时间也会延长。...本文则利用Hadoop与OpenCV搭建集群化的图像处理平台,使图像的处理速度得到大幅度的提升。   1 相关技术   
  • 通用: VTK  VTK (the visualization toolkit)是一款免费开源的用于三维计算机图形学、图像处理以及可视化的... ITK是一个开源、跨平台的,提供了大量的图像处理功能的软件工具。可用于多维图像的分割与配准。 FSL
  • Java图像处理类库 Java Image Filters Java Image Filters 是由 Jhlabs 开发的一组用来处理 Java 图像的类库,提供各种常用的图像处理效果,例如反转色、扭曲、水波纹、凹凸、黑白效果等等数十种效果,如...
1 2 3 4 5 ... 20
收藏数 43,858
精华内容 17,543