图像处理中心距_图像中心距 - CSDN
精华内容
参与话题
  • 矩-图像处理中的

    千次阅读 2017-08-28 09:01:01
    数学中的矩 维基百科关于 Moment (mathematics) 的介绍: In mathematics, a moment is a specific quantitative measure, used in both mechanics and statistics, of the shape of a set of points....

    数学中的矩

    维基百科关于 Moment (mathematics) 的介绍:

    In mathematics, a moment is a specific quantitative measure, used in both mechanics and statistics, of the shape of a set of points. If the points represent mass, then the zeroth moment is the total mass, the first moment divided by the total mass is the center of mass, and the second moment is the rotational inertia. If the points represent probability density, then the zeroth moment is the total probability (i.e. one), the first moment is the mean, the second central moment is the variance, the third moment is the skewness, and the fourth moment (with normalization and shift) is the kurtosis. The mathematical concept is closely related to the concept of moment in physics.For a bounded distribution of mass or probability, the collection of all the moments (of all orders, from 0 to ∞) uniquely determines the distribution.

    设 X 和 Y 是随机变量,c 为常数,k 为正整数, 
    如果 E(|Xc|k) 存在,则称 E(|Xc|k) 为 X 关于点 c 的 k 阶矩。

    • c = 0 时, 称为 k 阶原点矩;
    • c = E(x) 时,称为 k 阶中心矩。

    如果 E(|Xc1|p|Yc2|q) 存在,则称其为 X,Y 关于 c 点 p+q 阶矩。


    图像的矩

    零阶矩:

    M00=IJV(i,j)

    这里的图像是单通道图像,Vij 表示图像在 (i,j) 点上的灰度值。 
    我们可以发现,当图像为二值图时,M00 就是这个图像上白色区域的总和,因此,M00 可以用来求二值图像(轮廓,连通域)的面积。

    一阶矩:

    M10=IJiV(i,j)M10=IJjV(i,j)

    当图像为二值图时,V(i,j) 只有 0(黑),1(白)两个值。M10 就是图像上所以白色区域 x 坐标值的累加。因此,一阶矩可以用来求二值图像的重心: 
    xc=M10M00,yc=M01M00

    二阶矩

    M20=IJi2V(i,j)M02=IJj2V(i,j)M11=IJijV(i,j)

    二阶矩可以用来求物体形状的方向。 
    θ=12fastAtan2(2b,ac)

    其中:a=M20M00x2c,b=M11M00xcycc=M02M00y2c

    fastAtan2()为OpenCV的函数,输入向量,返回一个0-360的角度。


    这里修改一下,我之前在看二阶矩求物体形状方向的时候,有公式是这么写的: 

    θ=12arctan(2bac)

    我当时很奇怪,arctan的范围是(π2,π2),再除以2就只有(π4,π4),但是物体形状的方向肯定不止这个范围,而且我在测试的时候也感觉不对,因此就写成了上面那个用opencv函数表示的公式。 
    其实,这个公式是对的,只不过需要再根据分子分母的正负性来判断一下象限范围,而fastAtan2()已经加入了这个功能。 
    顺便说一下 math.h 中atan()求出来的是弧度,而fastAtan2()求出来的是角度。


    利用矩求图像的重心,方向

    Mat image = imread(imagename, 0);//读入灰度图
    Mat binary;
    //二值,椭圆是黑色的,所以反色下
    threshold(image, binary, 200, 255, CV_THRESH_BINARY_INV);
    Moments m = moments(binary, true);//moments()函数计算出三阶及一下的矩
    Point2d center(m.m10 / m.m00, m.m01 / m.m00);//此为重心
    //计算方向
    double a = m.m20 / m.m00 - center.x*center.x;
    double b = m.m11 / m.m00 - center.x*center.y;
    double c = m.m02 / m.m00 - center.y*center.y;
    double theta = fastAtan2(2*b,(a - c))/2;//此为形状的方向
    
    
    
    

    矩是描述图像特征的算子,如今矩技术已广泛应用于图像检索和识别 、图像匹配 、图像重建 、数字压缩 、数字水印及运动图像序列分析等领域。常见的矩描述子可以分为以下几种:几何矩、正交矩、复数矩和旋转矩。

            其中几何矩提出的时间最早且形式简单,对它的研究最为充分。几何矩对简单图像有一定的描述能力,他虽然在区分度上不如其他三种矩,但与其他几种算子比较起来,他极其的简单,一般只需用一个数字就可表达。所以,一般我们是用来做大粒度的区分,用来过滤显然不相关的文档。

    1. 数学中的矩

    2. 图像的几何矩


         补充一点,懂的请无视:

          可能有人会问,为什么像素点的值表示的是概率?meanshift算法里用到的反向投影图就是概率图。什么又是反向投影图呢?举个例子。

        (1)例如灰度图像如下

          Image=

          0 1 2 3

          4 5 6 7

          8 9 10 11

          8 9 14 15

        (2)该灰度图的直方图为(bin指定的区间为[0,4),[4,7),[7,12),[12,16))

          Histogram=

          4 3 7 2

        (3)反向投影图

          Back_Projection=

          4 4 4 4

          3 3 3 7

          7 7 7 7

          7 7 2 2

          可见,反向投影图就是反应了颜色分布的概率图。

    3. 几个图像的不变矩

    HU矩


           这7个不变矩构成一组特征量,Hu.M.K在1962年证明了他们具有旋转,缩放和平移不变性。实际上,在对图片中物体的识别过程中,只有M1和M2不变性保持的比较好,其他的几个不变矩带来的误差比较大,有学者认为只有基于二阶矩的不变矩对二维物体的描述才是真正的具有旋转、缩放和平移不变性(M1和M2刚好都是由二阶矩组成的)。

           由Hu矩组成的特征量对图片进行识别,优点就是速度很快,缺点是识别率比较低。Hu不变矩一般用来识别图像中大的物体,对于物体的形状描述得比较好,图像的纹理特征不能太复杂,像识别水果的形状,或者对于车牌中的简单字符的识别效果会相对好一些。

     

      其他常见的图像矩

            连续正交矩:Zernike矩和Legendre矩

           离散正交矩:Tchebichef矩、Krawtchouk矩、Hahn矩、Racah矩等。

           虽然非正交矩形式简单 、计算快、易于实现,但抗噪性差、基函数非正交 ,且具有较大的信息冗余。连续正交矩的基函数正交,不仅其矩变换可逆 ,且易于图像重建 , 由于其各阶矩相互独立,故具有最小的信息冗余。其不足之处是该矩的基函数只在特定范围内是正交的。

     

    4. OpenCV先关函数

          由OpenCV提供计算中心距、归一化中心距和hu矩的函数为:

    void cvMoments(const CvArr*image,CvMoments*moments,int isBinary=0)

    double cvGetCentralMoment(CvMoments*moments,intx_order,int y_order)

    doublecvGetNormalizedCentralMoment(CvMoments*moments,int x_order,int y_order);

    voidcvGetHuMoments(CvMoments*moments,CvHuMoments*HuMoments);

         其中cvMoments和上面的cvContourMoments是同一个函数。

         同时opencv还提供了输入图像直接进行hu矩匹配的函数是

    double cvMatchShapes(constvoid*object1,const void*object2,int method,double parameter=0);

     

    5. 小结

            图像的矩通常描述了该图像形状的全局特征,并被广泛的应用在各种图像处理、计算机视觉机器人技术领域的目标识别与方位估计中。一阶矩与形状有关,二阶矩显示曲线围绕直线平均值的扩展程度,三阶矩则是关于平均值的对称性的测量。不变矩是图像的统计特性,满足平移、伸缩、旋转均不变的不变性。

            如果把图像看成是一块质量密度不均匀的薄板,其图像的灰度分布函数f(x,y)就是薄板的密度分布函数,则其各阶矩有着不同的含义,如零阶矩表示它的总质量;一阶矩表示它的质心;二阶矩又叫惯性矩,表示图像的大小和方向。事实上,如果仅考虑阶次为2的矩集,则原始图像等同于一个具有确定的大小、方向和离心率,以图像质心为中心且具有恒定辐射率的椭圆。

            由三阶矩以下矩构成的七个矩不变量具有平移、旋转和尺度不变性等等。当密度分布函数发生改变时,图像的实质没有改变,仍然可以看做一个薄板,只是密度分布有所改变。虽然此时各阶矩的值可能发生变化,但由各阶矩计算出的不变矩仍具有平移、旋转和尺度不变性。通过这个思想,可对图像进行简化处理,保留最能反映目标特性的信息,再用简化后的图像计算不变矩特征,可减少计算量。

            研究表明,只有基于二阶矩的不变矩对二维物体的描述才是真正的与旋转、平移和尺度无关的。较高阶的矩对于成像过程中的误差,微小的变形等因素非常敏感,所以相应的不变矩基本上不能用于有效的物体识别。即使是基于二阶矩的不变矩也只能用来识别外形相差特别大的物理,否则他们的不变矩会因为很相似而不能识别。

    展开全文
  • 图像处理与识别学习小结

    万次阅读 热门讨论 2009-08-31 23:14:00
    图像处理与识别学习小结 数字图像处理是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。图像处理是信号处理在图像域上的一个应用。目前大多数的图像是以数字形式存储,因而图像处理很多情况...

    图像处理与识别学习小结

     

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

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

     

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

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

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

     

     

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

    展开全文
  • 数字图像处理第六章数字图像处理---彩色图像处理(五) 彩色图像的空间滤波5.1 彩色图像的平滑处理5.2 彩色图像的锐化处理(六) 直接在 RGB 矢量空间中 处理6.1 使用梯度的彩色边缘检测6.2 在 RGB向量空间中分割...

    数字图像处理—彩色图像处理

    (五) 彩色图像的空间滤波

    彩色图像滤波的目标就是同时达到三个目的:削弱噪声,保护色调和保护边缘或细节信息。下面主要讨论的就是彩色图像的平滑处理和锐化处理。

    5.1 彩色图像的平滑处理

    平滑单色图像的一种方法是定义相应的系数是 1 的模板,用空间模板的系数去乘所有像素的值,并用模板中元素的总数去除。用空间掩膜平滑来处理彩色图像,该处理用处理灰度图像的相同方法来表达,只是代替单个像素。

    令 Sxy表示彩色图像中以(x,y)为中心的邻域的一组坐标。在该邻域中,RGB向量的平均值是:
    在这里插入图片描述
    其中,K 是邻域中像素点的数量。附加向量的特性是:
    在这里插入图片描述
    该向量的每个分量都作为将要得到的结果,结果是用每个分量图像执 邻域平均获得的,使用的是上边提到的滤波器模板。因此,得出这样的结论:用邻域平均的平滑可以在每个图像平面的基础上执行。如果邻域平均直接在彩色向量空间执行,那么结果是相同的

    概念上,平滑 RGB彩色图像fc时,线性空间滤波由下面的步骤组成

    1.抽取 3 个分量图像:

    fR= I(:,:,1);
    fG = I(:,:,2);
    fB = I(:,:,3);

    2.分别过滤每个分量图像。例如,令w = fspecial(‘average’, 25)表示用fspecial产生的平滑滤波器,平滑分量图像:

    fR_filtered = imfilter(fR, w, ‘replicate’);
    fG__filtered = imfilter(fG, w, ‘replicate’);
    fB_filtered = imfilter(fB, w, ‘replicate’);

    也可以对这三个图像分量一起处理:

    fc_filtered = imfilter(I, w, ‘replicate’);

    3.重建滤波过的 RGB图像:

    fc_filtered = cat(3, fR_filtered, fG_filtered, fB_filtered)

    因为可以在 MATLAB中使用与单色图像相同的语法来执行 RGB图像的线性滤波, 所以可以把前三步合并为一步:

    fc_filtered = imfilter(fc, w, ‘replicate’);

    编写代码:

    rgb_image=imread('D:\数字图像处理\第六章学习\flower6.tif');       %加载彩色图像
    fR = rgb_image(:, :, 1);       %提取R通道分量图像
    fG = rgb_image(:, :, 2);       %提取G通道分量图像
    fB = rgb_image(:, :, 3);       %提取B通道分量图像
    subplot(2, 2, 1), imshow(rgb_image);title('(a)原图像');
    subplot(2, 2, 2), imshow(fR);title('(b)红色分量图');
    subplot(2, 2, 3), imshow(fG);title('(c) 绿色分量图');
    subplot(2, 2, 4), imshow(fB) ;title('(d)蓝色分量图');  
    

    代码运行效果如下:

    接下来,用尺寸为 25×25 像素的相同滤波器滤波亮度分量。平均滤波器已足够大,可以产生有意义的模糊度。选择这个尺寸的滤波器,是为了演示在 RGB 空间中进行平滑处理的效果,与在 RGB 空间被变换到 HSI 空间后,只使用图像的亮度分量达到类似结果之间的不同之处。

    编写代码:

    rgb_image=imread('D:\数字图像处理\第六章学习\flower6.tif');
    fR = rgb_image(:, :, 1);
    fG = rgb_image(:, :, 2);
    fB = rgb_image(:, :, 3);
    w = fspecial('average', 25);
    fR_filtered = imfilter(fR, w, 'replicate');      %平滑红色分量图像
    fG_filtered = imfilter(fG, w, 'replicate');      %平滑绿色分量图像 
    fB_filtered = imfilter(fB, w, 'replicate');      %平滑蓝色分量图像
    fc_filtered = cat(3,fR_filtered,fG_filtered,fB_filtered);   %将这四个句子可以改为:fc_filtered = imfilter(f, w, 'replicate');
    subplot(1,2,1);imshow(rgb_image);title('(a)RGB图像');
    subplot(1,2,2);imshow(fc_filtered,'Border','tight');title('(b)平滑 R、G、B 图像平面得到的 RGB 图像');
    

    代码运行效果如下:

    编写代码:

    fc=imread('D:\数字图像处理\第六章学习\flower6.tif');
    h = rgb2hsi(fc);
    H = h(:, :, 1);
    S = h(:, :, 2);
    I = h(:, :, 3);
    w = fspecial('average', 25);
    I_filtered = imfilter(I, w, 'replicate');
    h=cat(3,H,S,I_filtered);      %cat函数是拼接数组的函数,这里将在第3维上进行拼接。
    f=hsi2rgb(h);                      
    subplot(1,2,1);imshow(fc);title('(c)RGB图像');
    subplot(1,2,2);imshow(f);title('(d)仅对HIS相等图像的亮度分量进行平滑的结果');
    

    代码运行效果如下:


    编写代码:

    fc=imread('D:\数字图像处理\第六章学习\flower6.tif');
    h = rgb2hsi(fc);
    H = h(:, :, 1);
    S = h(:, :, 2);
    I = h(:, :, 3);
    w = fspecial('average', 25);
    H_filtered = imfilter(H, w, 'replicate');
    S_filtered = imfilter(S, w, 'replicate');
    I_filtered = imfilter(I, w, 'replicate');
    h=cat(3,H_filtered,S_filtered,I_filtered);   %构造多维数组,即合并3分量图像为一副彩色图像
    f=hsi2rgb(h);
    subplot(1,2,1);imshow(fc);title('(e)RGB图像');
    subplot(1,2,2);imshow(f);title('(f)平滑所有三个 HIS 分量的结果 ');
    

    代码运行效果如下:


    实验总结

    显然,滤波后的两种结果不同。例如,除图像有点模糊以外,图 (d)中花朵顶部出现模糊的绿色边缘。原因是通过平滑处理,亮度分量值的变化减少了,但色调和饱和度分量没有变化。合乎逻辑的情况是用相同的滤波器去平滑所有的三个 HSI 分量,然而,这将改变色调和饱和度值之间的相对关系,这样会产生无意义的结果,如图 (f)所示。特别是在这幅图像中,图像中围绕着花朵的较亮绿色边缘,还有围绕着中心黄色区域的边界,这个效果也是十分明显的。 一般来说,当模板的尺寸减小时,对 RGB 分量图像进行滤波和对同一图像的 HSI 亮度分量进行滤波时,得到的差别也减少了,这一点可以从小女孩图像看出。

    5.2 彩色图像的锐化处理

    在图像增强中,平滑是为了消除图像中噪声的干扰,或者降低对比度,与之相反,有时为了强调图像的边缘和细节,需要对图像进行锐化,提高对比度。

    预备知识

    拉普拉斯锐化图像是根据图像某个像素的周围像素到此像素的突变程度有关,也就是说它的依据是图像像素的变化程度。当邻域中心像素灰度于它所在的领域内其它像素的平均灰度时,此中心像素的灰度应被进一步降低,当邻域中心像素灰度于它所在的邻域内其它像素的平均灰度时,此中心像素的灰度应被进一步提高,以此实现图像的锐化处理。

    一个函数的一阶微分描述了函数图像是朝哪里变化的,即增长或者降低;而二阶微分描述的则是图像变化的速度,急剧增长下降还是平缓的增长下降。那么据此我们可以猜测出依据二阶微分能够找到图像的色素的过渡程度,例如白色到黑色的过渡就是比较急剧的。

    首先推导二阶微分与像素的关系,先看一阶偏微分和推出的二元函数微分:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    一阶微分法能够用来检测边缘是否存在。那么二阶微分法,也就是拉普拉斯算子就可以确定边缘的位置。

    这样可以找到一个模板矩阵:
    在这里插入图片描述
    这个四邻域对应上面的二阶微分法
    在这里插入图片描述
    八领域的表示法为:
    在这里插入图片描述
    从上面的两种模板中就可以看出,如果一个黑色平面中有一个白点,那么模板矩阵可以使这个白点更亮。由于图像边缘就是灰度发生跳变的区域,所以拉普拉斯模板对边缘检测很有用。

    将算得的值替换原(x,y)处的像素值,可以得到类似边界的地方,然后根据下式得到锐化图像:
    在这里插入图片描述
    编写代码:

    %拉普拉斯算子锐化图像,用二阶微分
    %四邻接g(x,y)=[f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)]-4f(x,y)
    I1=imread('D:\数字图像处理\第六章学习\jimei2.png');
    I=im2double(I1);
    [m,n,c]=size(I);
    A=zeros(m,n,c);
    %分别处理R、G、B
    %先对R进行处理
    for i=2:m-1
        for j=2:n-1
            A(i,j,1)=I(i+1,j,1)+I(i-1,j,1)+I(i,j+1,1)+I(i,j-1,1)-4*I(i,j,1);
        end
    end
    
    %再对G进行处理
    for i=2:m-1
        for j=2:n-1
            A(i,j,2)=I(i+1,j,2)+I(i-1,j,2)+I(i,j+1,2)+I(i,j-1,2)-4*I(i,j,2);
        end
    end
    
    %最后对B进行处理
    for i=2:m-1
        for j=2:n-1
            A(i,j,3)=I(i+1,j,3)+I(i-1,j,3)+I(i,j+1,3)+I(i,j-1,3)-4*I(i,j,3);
        end
    end
    B=I-A;
    
     imwrite(B,'jimei3.png','png');
     imshow('D:\数字图像处理\第六章学习\jimei2.png');title('不清晰图像');figure
     imshow('jimei3.png');title('得到的清晰图像')
    

    代码运行效果如下:

    实验总结

    从图像可以看出,拉普拉斯锐化模板在边缘检测中很有用,图像边缘变得非常清晰,对比度明显,细节部分有所增强,不管是荷叶,建筑物,小亭子,蓝色的天空背景都比原图要更亮一点,可以验证拉普拉斯锐化图像原理,当邻域中心像素灰度低于它所在的领域内其它像素的平均灰度时,此中心像素的灰度应被进一步降低,当邻域中心像素灰度高于它所在的邻域内其它像素的平均灰度时,此中心像素的灰度应被进一步提高,以此实现图像的锐化处理。

    根据课本,从向量分析中,知道向量的拉普拉斯被定义为矢量,它们的分量等于输入向量的分量的拉普拉斯。在 RGB彩色系统中,引入的矢量 c 的拉普拉斯是:
    在这里插入图片描述
    这说明,可以通过分别计算每个分量图像的拉普拉斯来计算全彩图像的拉普拉斯。

    编写代码:

    fb=imread('D:\数字图像处理\第六章学习\flower7.tif');
    lapmask = [1 1 1;1 -8 1;1 1 1];    %拉普拉斯算子
    fb = tofloat(fb);
    fen = fb - imfilter(fb, lapmask, 'replicate');
    subplot(2, 2, 1), imshow(fb);title('(a)模糊图像');
    subplot(2, 2, 2), imshow(fen);title('(b)用拉普拉斯增强图像');
    

    代码运行效果如下:

    图(a)显示了稍微有点模糊的图,为了锐化这幅图像,使用拉普拉斯滤波模板,对RGB 图像直接用imfilter滤波,图 (b)显示了结果,图像在锐度特性上的显著加强,比如水滴、叶子上的纹路、花朵黄色的中心和前景中明显的绿色植物。

    (六) 直接在 RGB 矢量空间中处理

    基于单独彩色平面的处理不等于直接在 RGB矢量空间中进行的计算。下面通过考虑彩色图像处理的两个重要应用来说明矢量处理:彩色边缘检测和区域分割。

    6.1 使用梯度的彩色边缘检测

    2D函数 f(x,y)的梯度定义为如下矢量:
    在这里插入图片描述
    这个矢量的大小是:
    在这里插入图片描述
    通常,这个数量用绝对值来近似:
    在这里插入图片描述
    这个近似值避免了平方和开方计算,但是仍然具有推导过的特性(例如在常数区域为 0,在 像素值变化的区域,幅度与变化程度成比例)。在通常的应用中,把梯度的幅值简单地作为梯度。

    梯度向量的基本特性是在 f 坐标(x, y)处指向最大变化率的方向。最大变化率发生的角度是:
    在这里插入图片描述
    按照惯例,这个导数用在一幅图像中某个小邻域内像素值的差来近似。下图显示了 3×3 大小的邻域,这里的 z 代表亮度值。在区域中心点 x方向上(垂直)的偏微分的近似由下边的差给出:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    类似的,y 方向上的微分由下面的差近似:
    在这里插入图片描述
    此刻,主要讨论是在 RGB 彩色空间中计算梯度。然而,刚刚推导的方法可应用于 2D空间,但是不能扩展到高维空间。将之运用到 RGB图像的唯一方法是计算每个彩色图像分量的梯度,然后合并结果。遗憾的是,这与直接在 RGB向量空间中计算边缘是不同的。问题是定义过的向量 c 的梯度。下面是可选的各种方法之一,在这里,梯度的概念可延伸到向量函数。

    令r、g和b是 RGB彩色空间沿 R、G、B 轴的单位矢量,定义矢量:
    在这里插入图片描述

    在这里插入图片描述
    根据这些矢量的点积,定义 gxx、gyy和 gxy:
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    记住 R、G 和 B,因而 g 是 x 和 y 的函数。使用这种符号,可以说明——c(x,y)的最大变化率方向将作为(x,y)函数由角度给出:
    在这里插入图片描述
    并且在该方向上,由 θ(x,y)给出的变化率的值(例如梯度值)由下式给出:

    数组θ(x,y)和FθF_θ(x,y)是与输入图像尺寸相同的图像。θ(x,y)的元素是用于计算梯度的每个
    点的角度,并且FθF_θ(x,y)是梯度图像。

    使用梯度的彩色边缘检测,目的是标识数字图像中亮度变化明显的点。下面的函数用来计算彩色图像的梯度:

    [VG,A,PPG] = colorgrad(f,T)

    其中, f是 RGB图像, T是[0,1]范围内的阈值选项(默认为 0);VG是 RGB向量梯度 Fθ(x, y); A 是以弧度计的角度 θ(x, y),并且 PPG 是由单独彩色平面的 2D 梯度之和形成的梯度图像。

    代码编写:

    fc=imread('D:\数字图像处理\第六章学习\sun.jpg');
    [VG,A,PPG]=colorgrad(fc,0.5);%VG为向量梯度,A为向量角度,PPG为计算每一维梯度后合成  
    subplot(2, 2, 1), imshow(fc);title('(a)原图像');
    subplot(2, 2, 2), imshow(VG);title('(b)T=0.5,在rgb空间计算梯度图像');
    subplot(2, 2, 3), imshow(PPG);title('(c)T=0.5,分别在rgb计算梯度然后相加');
    subplot(2, 2, 4), imshow(abs(VG-PPG),[]);title('(d)T=0.5,2种梯度的绝对值');   
    

    代码运行效果如下:

    向日葵图像分别在T=0,T=0.5,T=1时的图像:


    夜晚建筑物图像分别在T=0,T=0.5,T=1时的图像:


    带亮点小孩人脸图像分别在T=0,T=0.5,T=1时的图像:


    实验总结

    对于同一张图的不同处理,T值越小能够检测的边线越多,越容易从图像中挑出不相关信息;T越大,会丢失细的或者短的线条,当T=0时检测的边线最多,当T=1时,几乎检测不到边线,图像为纯黑色。通过合并单独彩色平面的梯度来计算彩色图像的梯度,与直接在 RGB 向量空间中计算梯度得到的效果也是不同的;直接在 RGB 向量空间中计算梯度得到的图像效果要好一点,边线更多;两种梯度的绝对差检测的边线最少。对于不同的图像,在同样的T值情况下,图像清晰,边缘界限明显,颜色对比度大的图像检测到的边线会更多(例如向日葵图像),图像整体偏暗,边缘分界线不明显的图像检测到的边线相对少一点(例如夜晚建筑物图像),当T值越来越大时,所有图像检测的边线会越来越少,但是图像中含有明显黑白对比度大的部分,白色部分边线会更清晰的检测出来,算法在这方面优势更明显(例如小孩头发上的亮点线)。

    6.2 在 RGB向量空间中分割图像

    分割的目的是对图像中的每个 RGB 像素进行分类,使之在指定的范围内有或没有一种颜色。为了执行这 一比较,拥有相似性度量是必要的。最简单的度量之一是欧几里德距离。令 z表示 RGB空间的任意点。如果它们之间的距离小于指定的阈值 T,那么 z 相似于 m。z 和 m 之间的欧几里德距 离由下式给出:
    在这里插入图片描述
    在这里,||.||是参量的范数,并且下标 R、G、B 表示向量 m 和 z 的 RGB 分量。点的轨迹 D(z,m)≤T是半径为 T的球,根据定义,包括在球的内部或表面 的点满足特定的彩色准则,球外部的点则不满足。在图像中对这两组点编码,比如黑的和白的, 将会产生分割的二值图像。上述方程的有用归纳是距离度量形式:
    在这里插入图片描述
    在刚才描述的方法中,分割通过函数colorseg实现,语法如下:

    S = colorseg(method, f, T, parameters)

    在这里,method 不是’euclidean’就是’mahalanobis’,f 是待分割的 RGB 彩色图
    像, T是前边描述的阈值。如果选择’eucliden’,输入参量将是m,如果选择’mahalanobis’, 将是m和c。参数m是均值 m, c是协方差矩阵 C。输出S 是二值图像(和原始图像的大小相同), 包括 0s。阈值测试失败的点为 0,通过阈值测试的点为 1。1 表示基于彩色内容从f 分割出的区域。

    预备知识

    马氏距离:马氏距离(Mahalanobis distance)表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是,它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的),并且是尺度无关的,即独立于测量尺度
    对于一个均值为在这里插入图片描述协方差矩阵为∑的多变量向量在这里插入图片描述其马氏距离为
    在这里插入图片描述
    马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量x与y的差异程度:
    在这里插入图片描述
    如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧式距离,如果协方差矩阵为对角阵,则其也可称为正规化的欧氏距离’.
    在这里插入图片描述
    欧式距离:最常见的两点之间或多点之间的距离表示法,又称之为欧几里得度量,它定义于欧几里得空间中,如点 x = (x1,…,xn) 和 y = (y1,…,yn) 之间的距离为:
    在这里插入图片描述
    欧氏距离虽然很有用,但也有明显的缺点。它将样品的不同属性(即各指标或各变量量纲)之间的差别等同看待,这一点有时不能满足实际要求。例如,在教育研究中,经常遇到对人的分析和判别,个体的不同属性对于区分个体有着不同的重要性。因此,欧氏距离适用于向量各分量的度量标准统一的情况。

    RGB彩色图像分割

    编写代码:

    f = imread('D:\数字图像处理\第六章学习\sun.jpg');
    imshow(f);
    title('原图像');
    figure,mask=roipoly(f);%roipoly为选择感兴趣的多边形
    red=immultiply(mask,f(:,:,1));%immultipy函数为2幅图像对应的元素相乘
    green=immultiply(mask,f(:,:,2));
    blue=immultiply(mask,f(:,:,3));
    g=cat(3,red,green,blue);%将对应的3个分量重新组合
    figure,imshow(g);title('用函数roipoly交互式地提取感兴趣的区域');
    

    代码运行效果如下:

    编写代码:

    f = imread('D:\数字图像处理\第六章学习\girl.png');
    imshow(f);
    title('原图像');
    figure,mask=roipoly(f);%roipoly为选择感兴趣的多边形
    red=immultiply(mask,f(:,:,1));%immultipy函数为2幅图像对应的元素相乘
    green=immultiply(mask,f(:,:,2));
    blue=immultiply(mask,f(:,:,3));
    g=cat(3,red,green,blue);%将对应的3个分量重新组合
    figure,imshow(g);title('用函数roipoly交互式地提取感兴趣的区域');
    [M,N,K]=size(g);%这里k为3
    I=reshape(g,M*N,3);%I为M*N行,3列的数组
    idx=find(mask);
    I=double(I(idx,1:3));
    [C,m]=covmatrix(I);%计算出协方差矩阵C和均值m
    d=diag(C);%方差
    sd=sqrt(d);%标准差
    
    E25=colorseg('euclidean',f,25,m);%使用欧式距离进行彩色分割
    figure,subplot(2,2,1),imshow(E25);
    title('(a)使用euclidean,T=25分割效果');
    
    E50=colorseg('euclidean',f,50,m);
    subplot(2,2,2),imshow(E50);
    title('(b)使用euclidean,T=50分割效果');
    
    E75=colorseg('euclidean',f,75,m);
    subplot(2,2,3),imshow(E75);
    title('(c)使用euclidean,T=75分割效果');
    
    E100=colorseg('euclidean',f,100,m);
    subplot(2,2,4),imshow(E100);
    title('(d)使用euclidean,T=100分割效果');
    
    M25=colorseg('mahalanobis',f,25,m,C);%使用马氏距离分割
    figure,subplot(2,2,1),imshow(M25);
    title('(e)使用mahalanobis,T=25分割效果');
    
    
    M50=colorseg('mahalanobis',f,50,m,C);
    subplot(2,2,2),imshow(M50);
    title('(f)使用mahalanobis,T=50分割效果');
    
    
    M75=colorseg('mahalanobis',f,75,m,C);
    subplot(2,2,3),imshow(M75);
    title('(g)使用mahalanobis,T=75分割效果');
    
    
    M100=colorseg('mahalanobis',f,100,m,C);
    subplot(2,2,4),imshow(M100);
    title('(h)使用mahalanobis,T=100分割效果');
    
    

    代码运行效果如下:




    过程分析

    由上图可以看出,用函数roipoly交互式地提取感兴趣的区域,得到的结果图像就是想要的区域,而使用’mahalanobis’选项获得的结果与使用’Euclidean’选项获得的结果都与感兴趣的区域有差异,只能得出T越大,分割的图像越明显的结论,但是目前根据这两幅图,确实分析不到为什么结果图与理想结果图差距这么大的原因。

    考虑马氏距离与欧式距离特性:马氏距离考虑到各种特性之间的联系,欧式距离将样品的不同属性(即各指标或各变量量纲)之间的差别等同看待,做出是否存在匹配原因的猜想,换一张图继续实验。



    实验总结

    图像选取的向日葵图像,但是这次并没有选择分割图像主要部分向日葵,选择分割绿叶,因为从最上面的小女孩图像的分割,可以看出使用’mahalanobis’选项分割图像中唯一人像小女孩,结果图为空白,猜想是否存在匹配原因,mahalanobis会识别图像的类似部分分割,而小女孩图像中只有一个小女孩,所以它匹配不到图像中的相似部分,这也可以解释为什么建筑物图像使用’mahalanobis’选项会出现图像而不是空白,而建筑物图像中截取了建筑物的一小部分,所以会匹配到建筑物的其他部分显示出来,这也可以解释为什么刚好截取的那部分建筑物片段并没有显示出来(小女孩也没有显示出来)。但是截取的绿叶部分竟然在’mahalanobis’选项图中出现,证明我的猜想存在漏洞,后面学习更多知识后再来解释,也希望有其他猜想的博主一起讨论

    'Euclidean’选项分割图像随着T值越大,分割的范围也越大,会把图像中颜色相近的部分都分割掉,可以观察当T为75,100的时候,几乎把所有的绿叶都分割掉,不管是浅绿色还是深绿色,而颜色接近的黄色到最后都被分割掉,可以解释欧式距离将样品的不同属性(即各指标或各变量量纲)之间的差别等同看待

    但是使用’mahalanobis’选项分割图像具有一定的原则,截取的浅绿色叶子,不管是后来的T=50,75,100,都会选择范围内的浅绿色叶子截取,所以相对而言如果追求分割的准确度使用马氏距离彩色分割算法优势明显

    该原理应该可以不止用在图像分割,图像匹配,人脸识别各种应该也能用到,百度后发现很早就有基于马氏距离的半监督鉴别分析及人脸识别等,慢慢再深入学习吧。

    展开全文
  • 图像处理——矩

    千次阅读 2018-01-31 20:29:19
    本文转自:https://www.cnblogs.com/ronny/p/3985810.html 本文转自:http://blog.csdn.net/gdfsg/article/details/51015066 1. 矩的概念 2. Hu矩 ...open

    本文转自:https://www.cnblogs.com/ronny/p/3985810.html

    本文转自:http://blog.csdn.net/gdfsg/article/details/51015066

    1. 矩的概念


    2. Hu矩






    3. 利用OPENCV计算Hu矩


    opencv里对Hu矩的计算有直接的API,它分为了两个函数:moments()函数用于计算中心矩,HuMoments函数用于由中心矩计算Hu矩。

    Moments moments(InputArray array, bool binaryImage=false )

    参数说明

    • 输入参数:array是一幅单通道,8-bits的图像,或一个二维浮点数组(Point of Point2f)。binaryImage用来指示输出图像是否为一幅二值图像,如果是二值图像,则图像中所有非0像素看作为1进行计算。
    • 输出参数:moments是一个类:
    class Moments
    {
    public:
        Moments();
        Moments(double m00, double m10, double m01, double m20, double m11,
                double m02, double m30, double m21, double m12, double m03 );
        Moments( const CvMoments& moments );
        operator CvMoments() const;
    }

    里面保存了图像的2阶与3阶中心矩的值。

    void HuMoments(const Moments& moments, double* hu)

    参数说明:

    • 输入参数:moments即为上面一个函数计算得到的moments类型。
    • 输出参数:hu是一个含有7个数的数组。
    int main(int argc, char** argv) 
    { 
        Mat image = imread(argv[1]);  
        cvtColor(image, image, CV_BGR2GRAY); 
        Moments mts = moments(image); 
        double hu[7]; 
        HuMoments(mts, hu); 
        for (int i=0; i<7; i++) 
        { 
            cout << log(abs(hu[i])) <<endl; 
        } 
       return 0; 
    }


    4. Zernike矩

    Hu矩在图像描述上有广泛的应用,但是其低阶几何矩与图像整体特征有关,不包含太多的图像细节信息,而高阶几何矩易受噪声影响,因此很难利用几何矩恢复图像。

    Zernike矩能够很容易地构造图像的任意高阶矩,并能够使用较少的矩来重建图像。Zernike矩是基于Zernike多项式的正交化函数,虽然其计算比较复杂,但是Zernide矩在图像旋转和低噪声敏感度方面具有较大的优越性。由于Zernike矩具有图像旋转不变性,而且可以构造任意高阶矩,所以被广泛应用对目标进行识别中。

    4.1 Zernike矩多项式


    4.2 Zernike矩的定义



    4.3 Zernike矩的计算




    5. 总结

    不变矩的应用过程一般包括:

    1. 选择合适的不变矩类型;
    2. 选择分类器(如神经网络、最短距离等);
    3. 如果是神经网络分类器,则需要计算学习样例的不变矩去训练神经网络;
    4. 计算待识别对象的不变矩,输入神经网络就可得到待识别对象的类型,或者计算待识别对象不变矩与类别对象不变矩之间的距离,选择最短距离的类别作为待识别对象的类别。

    可以看出,不变矩作用主要目的是描述事物(图像)的特征。人眼识别图像的特征往往又表现为“求和”的形式,因此不变矩是对图像元素进行了积分操作。

    不变矩能够描述图像整体特征就是因为它具有平移不变形、比例不变性和旋转不变性等性质。

    然而,另一方面图像的各阶不变矩究竟代表的什么特征很难进行直观的物理解释。


    1. 数学中的矩


    2. 图像的几何矩



         补充一点,懂的请无视:

          可能有人会问,为什么像素点的值表示的是概率?meanshift算法里用到的反向投影图就是概率图。什么又是反向投影图呢?举个例子。

        (1)例如灰度图像如下

          Image=

          0 1 2 3

          4 5 6 7

          8 9 10 11

          8 9 14 15

        (2)该灰度图的直方图为(bin指定的区间为[0,4),[4,7),[7,12),[12,16))

          Histogram=

          4 3 7 2

        (3)反向投影图

          Back_Projection=

          4 4 4 4

          3 3 3 7

          7 7 7 7

          7 7 2 2

          可见,反向投影图就是反应了颜色分布的概率图。


    3. 几个图像的不变矩

    HU矩




           这7个不变矩构成一组特征量,Hu.M.K在1962年证明了他们具有旋转,缩放和平移不变性。实际上,在对图片中物体的识别过程中,只有M1和M2不变性保持的比较好,其他的几个不变矩带来的误差比较大,有学者认为只有基于二阶矩的不变矩对二维物体的描述才是真正的具有旋转、缩放和平移不变性(M1和M2刚好都是由二阶矩组成的)。

           由Hu矩组成的特征量对图片进行识别,优点就是速度很快,缺点是识别率比较低。Hu不变矩一般用来识别图像中大的物体,对于物体的形状描述得比较好,图像的纹理特征不能太复杂,像识别水果的形状,或者对于车牌中的简单字符的识别效果会相对好一些。

     

      其他常见的图像矩

            连续正交矩:Zernike矩和Legendre矩

           离散正交矩:Tchebichef矩、Krawtchouk矩、Hahn矩、Racah矩等。

           虽然非正交矩形式简单 、计算快、易于实现,但抗噪性差、基函数非正交 ,且具有较大的信息冗余。连续正交矩的基函数正交,不仅其矩变换可逆 ,且易于图像重建 , 由于其各阶矩相互独立,故具有最小的信息冗余。其不足之处是该矩的基函数只在特定范围内是正交的。

     

    4. OpenCV先关函数

          由OPENCV提供计算中心距、归一化中心距和hu矩的函数为:

    void cvMoments(const CvArr*image,CvMoments*moments,int isBinary=0)

    double cvGetCentralMoment(CvMoments*moments,intx_order,int y_order)

    doublecvGetNormalizedCentralMoment(CvMoments*moments,int x_order,int y_order);

    voidcvGetHuMoments(CvMoments*moments,CvHuMoments*HuMoments);

         其中cvMoments和上面的cvContourMoments是同一个函数。

         同时OPENCV还提供了输入图像直接进行hu矩匹配的函数是

    double cvMatchShapes(constvoid*object1,const void*object2,int method,double parameter=0);

     

    5. 小结

            图像的矩通常描述了该图像形状的全局特征,并被广泛的应用在各种图像处理、计算机视觉和机器人技术领域的目标识别与方位估计中。一阶矩与形状有关,二阶矩显示曲线围绕直线平均值的扩展程度,三阶矩则是关于平均值的对称性的测量。不变矩是图像的统计特性,满足平移、伸缩、旋转均不变的不变性。

            如果把图像看成是一块质量密度不均匀的薄板,其图像的灰度分布函数f(x,y)就是薄板的密度分布函数,则其各阶矩有着不同的含义,如零阶矩表示它的总质量;一阶矩表示它的质心;二阶矩又叫惯性矩,表示图像的大小和方向。事实上,如果仅考虑阶次为2的矩集,则原始图像等同于一个具有确定的大小、方向和离心率,以图像质心为中心且具有恒定辐射率的椭圆。

            由三阶矩以下矩构成的七个矩不变量具有平移、旋转和尺度不变性等等。当密度分布函数发生改变时,图像的实质没有改变,仍然可以看做一个薄板,只是密度分布有所改变。虽然此时各阶矩的值可能发生变化,但由各阶矩计算出的不变矩仍具有平移、旋转和尺度不变性。通过这个思想,可对图像进行简化处理,保留最能反映目标特性的信息,再用简化后的图像计算不变矩特征,可减少计算量。

            研究表明,只有基于二阶矩的不变矩对二维物体的描述才是真正的与旋转、平移和尺度无关的。较高阶的矩对于成像过程中的误差,微小的变形等因素非常敏感,所以相应的不变矩基本上不能用于有效的物体识别。即使是基于二阶矩的不变矩也只能用来识别外形相差特别大的物理,否则他们的不变矩会因为很相似而不能识别。




    展开全文
  • 图像处理与识别

    千次阅读 多人点赞 2017-03-23 09:45:57
    数字图像处理是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。图像处理是信号处理在图像域上的一个应用。目前大多数的图像是以数字形式存储,因而图像处理很多情况下指数字图像处理。此外,...
  • 本文主要讲解图像傅里叶变换的相关内容,在数字图像处理中,有两个经典的变换被广泛应用——傅里叶变换和霍夫变换。其中,傅里叶变换主要是将时间域上的信号转变为频率域上的信号,用来进行图像除噪、图像增强等处理...
  • 图像处理七:图像矩

    2018-12-10 10:00:49
    一、图像 图像:对应矩阵,每个位置的元素就是该处的像素; 图像矩:一个从数字图形中计算出来的矩集,通常描述了该图像全局特征,并提出了大量的关于该...通过二阶矩计算图像中心:python import imutils impo...
  • 彩色图像处理1 彩色模型1.1 RGB彩色模型1.2 HSI彩色模型2 彩色空间之间的转换2.1 NTSC彩色空间2.2 YCbCr彩色空间2.3 CMY和CMYK彩色空间2.4 HSI彩色空间 在图像处理中,彩色的运用主要受两个因素的推动。第一,彩色是...
  • 图像处理之高斯混合模型

    千次阅读 2017-05-26 17:15:22
    图像处理之高斯混合模型 一:概述高斯混合模型(GMM)在图像分割、对象识别、视频分析等方面均有应用,对于任意给定的数据样本集合,根据其分布概率, 可以计算每个样本数据向量的概率分布,从而根据概率分布对其进行...
  • 什么是数字图像处理 一副图像可以定义为一个二维函数f(x,y)f(x,y)f(x,y),x和y是平面空间坐标,在任何一对空间坐标(x,y)(x,y)(x,y)处的幅值fff称为图像在该点的强度或灰度。当x,y和灰度值f为有限的离散数值时,称该...
  • 图像处理之距离变换

    万次阅读 2013-05-15 21:43:50
    图像处理之距离变换 概述 距离变换是二值图像处理与操作中常用手段,在骨架提取,图像窄化中常有应用。距离 变换的结果是得到一张与输入图像类似的灰度图像,但是灰度值只出现在前景区域。并 且越远离背景边缘的...
  • 数字图像处理知识体系小结

    万次阅读 多人点赞 2012-12-13 21:26:22
    花了点时间整理了一下数字图像处理知识体系,从宏观上把握图像处理,使自己的学习思路就更加清晰。 1.本文大部分内容来自:http://blog.csdn.net/byxdaz/article/details/4375228 2.有些内容待添加,特别是opencv...
  • 数字图像处理实验

    2020-09-06 15:43:46
    数字图像处理实验 一、图像处理示例 实验一:matlab中surf()函数的使用 I=imread('E:\桌面\数字图像处理\图片\lena2.jpg'); F=double(I(100:200,100:200))/255; subplot(131),imshow(I); subplot(132),surf(F); ...
  • 图像处理知识框架

    千次阅读 2018-08-05 14:00:02
    花了点时间整理了一下数字图像处理知识体系,从宏观上把握图像处理,使自己的学习思路就更加清晰。 1.本文大部分内容来自:http://blog.csdn.net/byxdaz/article/details/4375228 2.有些内容待添加,特别是opencv...
  • 基于GUI的简易图像处理系统设计与实现

    千次阅读 热门讨论 2015-11-26 21:46:33
    自定义简易图像处理系统:综合此前内容得出该系统,系统功能包括:图像简单处理、图像的灰度变换、图像直方图均衡化和比特平面分层、空间域滤波、频率域滤波、彩色图像的空间域滤波。界面如图1: 图 1 ...
1 2 3 4 5 ... 20
收藏数 5,640
精华内容 2,256
关键字:

图像处理中心距