• 二值图像相似性[转]


    图像的矩
    一幅图像的矩,是通过一定的公式计算出来的。明白这个公式背后的原理,对于初学者来说,有一定的困难。
    这里,对图像的矩进行讲解。
    ------------------------------若转载本文,请注明出自:www.opencvchina.com----------------------------------
    (1)数学公式
    在纯数学理论上,关于某一个点的第n阶矩,定义为:
    图像的矩
    在这个定义中,函数里只有一个独立变量。而,图像是二维的,所以,需要2个独立变量。那么公式变成:
    公式2.png
    这里,f(x,y)是一幅图像,并且,其值是连续的。但,在实际应用中,图像的像素值是离散的。所以,我们需要一种
    离散的方式来描述图像的矩
    那么公式为:
    图像的矩
    使用求和代替积分运算。矩的阶 使用m+n表示,通常,我们求关于(0,0)的矩,所以,可以忽略常量cx,cy
    (2)计算面积(如图1所示)
    图1
    图像的矩
    计算一幅二值化图像的白色区域的面积,其实是计算它的0阶矩:
    图像的矩
    公式中x0和y0,不起作用,可以删除:
    图像的矩
    现在,在一幅二值化的图像中,一个像素点的值要么是0,要么是1;所以,对于每一个白色像素点,
    一个‘1’被加到矩中。(这是一种高效的计算二值化图像中白色点个数的方法)。另外,需要注意的是,
    只有一个0阶矩。
    (3)计算物体的质心(或者是重心)(如图2)
    图2:
    图像的矩
    计算一幅二值化图像的质心,需要计算两个坐标
    图像的矩
    怎么计算呢?看看图像的一阶矩:
    图像的矩
    公式中的两个求和符号 可以用一个for循环实现。即,把所以白色像素点处(即f(x,y)=1)的x坐标加起来。
    同样的方法,我们可以计算所有白色像素点的y坐标的和:
    图像的矩
    到此,我们得到了白色像素点的x坐标的和、y坐标的和。由于是一个和,所以,我们需要得到其均值,即通过除以白色像素点的个数。白色像素点的个数可以通过(2)计算面积中的公式实现,即图像的0阶矩,所以,得到:
    图像的矩图像的矩
    这种计算物体质心的方法,它的一个优点是,对噪声不敏感。当,有外部噪声干扰的时候,计算出的质心不会有太大的偏离。
    从数学的角度来看,这种方法是计算一个连通域的质心,或者说,是计算一个团块(blob)的质心。如果,你的图像中有两个连通域,即有两个blob,那么,就需要把两个blob提取出来,分别计算它们的质心。
    (4)中心矩
    这种除法很常见-- 一个矩除以其0阶矩。由于很常见,所以,它有个专用的术语,称之为-- 中心矩。
    所以,计算质心,也说为:计算一阶中心矩。
    (5)高阶矩
    计算高阶矩,就更复杂。有3个2阶矩,4个3阶矩,。。。。你可以把这些矩结合成一个向量特征,这样的特征具有旋转不变性,尺度不变性,变换不变性等优良特点。
    关于图像的矩,在模式识别中有非常重要的地位,甚至有一整本书来介绍它在模式识别中的使用。
    这本书的名字就是--《Moments and Moment Invariants in Pattern Recognition》
    http://www.amazon.com/gp/product ... ie=UTF8&tag=aish04-
    20&linkCode=as2&camp=217145&creative=399373&creativeASIN=0470699876
    (6)总结
    1、在数学领域,矩 非常的常见
    2、在计算机视觉中,使用2维离散形式的矩计算方法
    3、使用矩,可以计算物体的面积,物体的质心等。
    4、中心矩的计算方法是:某个矩除以0阶矩
    5、高阶矩具有旋转不变性,尺度不变性,变换不变性等。

  • 相关阅读:
    traceroute工具
    tcpdump抓包
    Linux 信号表 signals
    Bloom Filter (海量数据处理)
    socks v5 协议解析
    Vim插件推荐
    建堆复杂度O(n)证明
    使用Vundle管理Vim插件
    VB调用C# dll
    域PC脱域
  • 原文地址:https://www.cnblogs.com/freedesert/p/2657799.html
Copyright © 2020-2023  润新知