在圖像處理、計算機視覺等領域,圖像矩定義為:對圖像像素點的灰階值進行的一種特殊權重方式。
幾何矩
幾何矩,又稱為标準矩。它的定義是:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyROBlL5IDO4ADN0AjMxAjMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
各階的實體意義是:
0階矩(即 M 00 M_{00} M00):表示目标區域的灰階和,可看成品質或面積;
1階矩(即 M 01 M_{01} M01、 M 10 M_{10} M10):{ M 10 M 00 \frac {M_{10}}{M_{00}} M00M10, M 01 M 00 \frac {M_{01}}{M_{00}} M00M01}表示目标區域的質心坐标;
2階矩(即 M 02 M_{02} M02、 M 20 M_{20} M20、 M 11 M_{11} M11):表示目标區域的旋轉;
3階矩(即 M 03 M_{03} M03、 M 12 M_{12} M12、 M 21 M_{21} M21、 M 30 M_{30} M30):表示目标區域的方位和斜度,反應目标的扭曲;
由于圖像經常會伴随着空間變換(平移,尺度,旋轉),标準矩通常會因為這些變換而發生變化。
接下來,會依次介紹幾種特殊矩的定義,它們具有或平移、或尺度、或旋轉等的不變性。但需注意的是,這種不變性僅在連續情形下是成立的,對于離散情形,僅僅是近似成立。
中心矩
中心矩的定義如下:
中心矩具有平移不變性的特點。由于我們選擇了目标區域的質心為中心建構中心矩,那麼矩的計算永遠是目标區域中的點相對于目标區域的質心,而與目标區域的位置無關,故中心矩具備了平移不變性。
歸一化中心矩
歸一化中心矩的定義如下:
歸一化中心矩具備平移不變性和尺度不變性。由上文可知, μ 00 = M 00 \mu_{00}=M_{00} μ00=M00,表示目标區域的品質或面積,那麼當目标區域的尺度發生變化,顯然 μ 00 \mu_{00} μ00也會相應變小,進而使得矩具備尺度不變性。
Hu矩
Hu矩的定義如下:
Hu矩具備平移不變性、尺度不變性和旋轉不變性。前面也提過,Hu矩的不變性僅在連續情形是成立的,對于離散情形的數字圖像,實際上隻有 I 1 I_1 I1、 I 2 I_2 I2的不變性保持的比較好。
Hu矩可應用于物體識别上。由Hu矩組成的特征量對圖像進行識别時,優點是速度很快,缺點是識别率比較低,對于紋理比較豐富的圖像,識别率就更低了。這一部分原因是因為,Hu矩的不變性隻在低階矩時成立(最多到三階矩),對于圖像的細節不能很好的描述出來,導緻對圖像的描述不夠完整。
總的來說,Hu矩一般用來識别圖像中的大物體,對于物體的形狀描述得比較好,圖像的問題不能太複雜,比如說對于車牌中的簡單字元的識别效果會好一些。
OpenCV中的相關函數
- 計算标準矩:cv2.moments
- 計算Hu矩:cv2.HuMoments
- 形狀比對:cv2.matchShape,根據Hu矩來計算兩個形狀或輪廓的相似度,傳回值越小,比對得越好
函數的進一步說明參考OpenCV的API文檔,在這裡。
參考資料
(1)https://en.wikipedia.org/wiki/Image_moment
(2)https://blog.csdn.net/chaipp0607/article/details/70256892#commentBox
(3)https://blog.csdn.net/wrj19860202/article/details/6327094#commentBox