郭宇航
(國家新聞出版廣電總局無線電臺(tái)管理局,北京 100045)
圖像匹配和目標(biāo)檢測技術(shù)是現(xiàn)代圖像處理的重要問題。進(jìn)行圖像匹配和目標(biāo)檢測通常的思路是提取圖像中目標(biāo)的特征,然后在其他圖像中尋找這些特征。幾何矩是圖像中目標(biāo)的重要特征,其形式簡單,一般只需要一個(gè)數(shù)字就可以表達(dá),所以常常被用來做一些粗略的區(qū)分。具有平移不變性的中心矩就是最常用的幾何矩之一。但是由于光照、攝像頭投影變形、拍攝角度、背景噪聲等原因使同一個(gè)目標(biāo)物體在圖像中也會(huì)有很大變化,從而造成圖像中目標(biāo)的很多特征發(fā)生了改變。因此如果能尋找到圖像中目標(biāo)的一些特征,這些特征具有平移、旋轉(zhuǎn)、灰度、尺度等的不變性,就可以根據(jù)目標(biāo)的這些特征,在其他圖像中尋找具有這些特征的區(qū)域圖像進(jìn)行匹配,進(jìn)行可靠的圖像匹配和目標(biāo)檢驗(yàn)。
圖像的不變矩就是具有這些特點(diǎn)的一種濃縮的特征。1962年Hu.M.K提出了7個(gè)由幾何矩生成的圖像不變矩,圖像平移、伸縮和旋轉(zhuǎn)后,這些不變矩的值保持恒定[1]。由于Hu矩在很多畸變情況下的不變性,所以可以用Hu矩匹配進(jìn)行目標(biāo)的檢測或快速的預(yù)處理,提取出目標(biāo)可能的區(qū)域以進(jìn)行下一步的處理。因?yàn)槟繕?biāo)在圖像中的大小、位置均未知,進(jìn)行識(shí)別時(shí),需要求出圖像中不同位置和不同尺度的區(qū)域的Hu矩,然后和目標(biāo)的Hu矩進(jìn)行匹配。計(jì)算單一區(qū)域Hu矩比較復(fù)雜,如果針對圖像中不同位置和不同尺度的區(qū)域,每個(gè)都求一遍Hu矩用來比較的話會(huì)使復(fù)雜度提升很多。
為了減少重復(fù)計(jì)算的復(fù)雜度、提高運(yùn)算效率,采用積分圖快速計(jì)算圖像中任意位置和任意尺度矩形區(qū)域的灰度和的方法被提出[2]?;驹硎菆D像中任意一點(diǎn)的積分圖的值定義為圖像原點(diǎn)到該點(diǎn)所形成矩形區(qū)內(nèi)各像點(diǎn)灰度之和。這樣,原始圖像中任意矩形區(qū)的灰度值之和就可以通過四個(gè)邊界頂點(diǎn)的積分圖值的加減法獲得。當(dāng)需要遍歷某個(gè)圖像中任意位置和任意尺度矩形區(qū)域的灰度和之值時(shí),如果提前建立好積分圖,然后通過積分圖中四個(gè)頂點(diǎn)值的加減運(yùn)算,會(huì)極大節(jié)省計(jì)算時(shí)間。
因?yàn)榉e分圖的方法是將積分求值轉(zhuǎn)化為四個(gè)頂點(diǎn)積分值的加減運(yùn)算,所以比較適合化簡一些圖像像素的灰度值通過加減運(yùn)算組合生成值的計(jì)算。但是圖像中心距和Hu矩的值并不是簡單地由圖像像素的灰度值通過加減運(yùn)算組合生成的,所以無法直接使用積分圖來進(jìn)行化簡計(jì)算。本文對積分圖的方法進(jìn)行擴(kuò)展,提出了一種積分圖多項(xiàng)式的算法,可以用來化簡遍歷圖像中任意位置和任意尺度矩形區(qū)域中心矩和Hu矩的計(jì)算。
f(x,y)是二階連續(xù)函數(shù),p,q為非零整數(shù):0,1,2,3,…
f(x,y)的(p+q)階原點(diǎn)矩m定義為:
f(x,y)的(p+q)階中心矩μ定義為:
其中xˉ,yˉ和連續(xù)時(shí)同樣定義
圖1 積分圖方法求某個(gè)矩形區(qū)域所有像素灰度值之和
如圖1所示,在積分圖中,左上方所有像素灰度值之和存儲(chǔ)在每個(gè)點(diǎn)中:S其中圖像(x,y)位置的像素灰度值用f(x,y)表示。積分圖可以采用增量的方式生成:
初始條件:SAT(-1,y)=SAT(x,-1)=SAT(-1,-1)=0。所以為了求積分圖,只需要對整張圖像遍歷一遍。有了積分圖后,求圖像矩形區(qū)域像素灰度值之和就簡化為積分圖中幾個(gè)點(diǎn)數(shù)值的加減運(yùn)算:
由2.1中Hu矩的定義可知,Hu無法表示成像素灰度值的加減,但是可以用積分圖多項(xiàng)式來表示。用積分圖多項(xiàng)式求Hu分為3步:
(1)用積分圖多項(xiàng)式來求原點(diǎn)矩
所以用mpnqf(x,y)作為每個(gè)像素對應(yīng)的值。用增量的方法可以生成積分圖用來快速計(jì)算原點(diǎn)矩:
初始條件:SAT'(-1,y)=SAT'(x,-1)=SAT'(-1,-1)=0
(2)用積分圖多項(xiàng)式求中心矩
矩形區(qū)域[x-1,y-1,x+w-1,y+h-1]的(p+q)階中心矩:可以用積分圖方法來計(jì)算。C(m,n)為從m個(gè)元素中任取n個(gè)元素的函數(shù):
(3)用積分圖多項(xiàng)式求Hu矩
用積分圖多項(xiàng)式的方法計(jì)算下列各式:
求得上述中心矩后,可以用本文公式(5)至(12)的方法計(jì)算Hu矩。
圖2 原始圖像
圖3檢測圖像
實(shí)驗(yàn)?zāi)康臑樵趫D3中檢測圖2中的圖像是否存在。方法為先求出圖2的Hu矩,然后求圖3中任意位置和任意尺度矩形區(qū)域的Hu矩。設(shè)定一個(gè)的閾值,如果圖3中某個(gè)矩形區(qū)域的Hu矩和圖2的Hu矩差別小于閾值的,則在圖3中檢測到圖2的目標(biāo)。遍歷任意位置和任意尺度矩形區(qū)域采用枚舉的方法,區(qū)域的寬度從2個(gè)像素到圖片的寬度,區(qū)域的長度從2個(gè)像素到圖片的長度,區(qū)域的起始位置也是從(0,0)開始,直到區(qū)域的邊緣與圖片的邊緣重合。
求Hu矩采用兩種方法進(jìn)行對比:
方法1:傳統(tǒng)方法,確定區(qū)域位置和尺度后,用公式(3)至(5)的方法計(jì)算歸一化中心矩,用公式(6)至(12)的方法求Hu矩。
方法2:積分圖多項(xiàng)式方法,先用公式(13)和(14)的方法建立廣義積分圖,確定區(qū)域位置和尺度后,用公式(15)至(32)的方法計(jì)算歸一化中心矩,用公式(6)至(12)的方法求Hu矩。
實(shí)驗(yàn)采用的硬件:CPU為Intel i77700HQ,內(nèi)存為16GB;采用的軟件:操作系統(tǒng)為win10家庭版64位,程序運(yùn)行環(huán)境為python2.7。
實(shí)驗(yàn)結(jié)果如表1所示,實(shí)驗(yàn)結(jié)果表明,方法2比方法1減少了很多計(jì)算時(shí)間,而且圖片越大,方法2比方法1節(jié)約的時(shí)間越多。
表1 實(shí)驗(yàn)結(jié)果
由以上可知,利用積分圖多項(xiàng)式的方法求圖像中任意矩形區(qū)域的中心矩和Hu矩可以很大地減少計(jì)算時(shí)間,提高計(jì)算速度。此方法也可以在均值濾波、直方圖均衡化等圖像處理操作中進(jìn)行推廣。
參考文獻(xiàn):
[1]Hu M.Visual pattern recognition by moment invariants[J]. IRE Transactions on Information Theory,1962(8):179-187.
[2]Viola P,Jones M.Rapid object detection using a boosted cascade of simple features,2001.CVPR 2001.Proceedings of the 2001 IEEE Computer Society Conference on.IEEE,2001,1:I-511-I-518 vol.1.