圖像的矩

圖像的矩

分類: C++ 數學 2110人閱讀 評論(0) 收藏 舉報

 

圖像的矩
一幅圖像的矩,是通過一定的公式計算出來的。明白這個公式背後的原理,對於初學者來說,有一定的困難。
這裏,對圖像的矩進行講解。
------------------------------若轉載本文,請註明出自: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、高階矩具有旋轉不變性,尺度不變性,變換不變性等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章