HOG代碼的一些解釋_第1頁
HOG代碼的一些解釋_第2頁
HOG代碼的一些解釋_第3頁
HOG代碼的一些解釋_第4頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、HOG 代碼 的一些解釋關(guān)于計算梯度方向角的:首先用 -1,0,1 梯度算子對原圖像做卷積運(yùn)算,得到 x 方向(水平方向, 以向右為正方向)的梯度分量gradscalx,然后用 1,0,-1 梯度算子對原圖像做卷積運(yùn)算,得到 y 方向(豎直方向,以向上為正方向)的梯度分量gradscaly。然后當(dāng)gradscalx>=0, gradscaly>=0時,說明梯度方向是朝向第一象限的, 當(dāng) gradscalx>=0,gradscaly<0時,說明梯度方向是朝向第二象限的,諸如此類,結(jié)合象限信息,就可以利用反正切函數(shù)atan求出在 signed 和 unsigned各自情況下

2、正確的梯度角度 .關(guān)于掃描循環(huán)(四層for 循環(huán) 有沒有快一點的?有!但是我功力不夠。當(dāng)時沒編出來,就只好還是來四層for):假設(shè)檢測窗為 64(列 )*128( 行)大小, block 為 16*16 大小,每個 block 劃分為 4 個cell,block 每次滑動 8 個像素 (也就是一個 cell 的寬 ),以及梯度方向劃分為9 個區(qū)間,在 0180 度范圍內(nèi)統(tǒng)計,以下的說明都以上述假設(shè)為例 .btly 與 btlx 分別表示 block 所在位置左上角點處的坐標(biāo)。對于前述假設(shè),一個檢測窗內(nèi)會有 105 個 block 存在,因此第一個block 左上角的坐標(biāo)是 (1,1),第二個是

3、(9,1) ,此行最后一個是block 的左上角坐標(biāo)是 (49,1),然后下一個 block 就需要向下滑動 8 個像素,并回到最左邊 ,此時的 block 左上角坐標(biāo)為 (1,9),接著 block 重新開始新的橫向滑動 如此這般 ,在檢測窗內(nèi)最后一個block 的坐標(biāo)就是 (49,113).block 每滑動到一個新的位置,就需要停下來計算它內(nèi)部的那四個cell 中的梯度方向直方圖 .(bj,bi)就是來存儲 cell 左上角的坐標(biāo)的(cell 的坐標(biāo)以 block 左上角為原點) .(j,i) 就表示 cell 中的像素在整個檢測窗(64*128 的圖像)中的坐標(biāo) .另外,我在程序里有個

4、 jorbj 與 iorbi ,這在 Localinterpolate 的情況下(也就是標(biāo)準(zhǔn)的原始HOG情況),就是 bj 與 bi.關(guān)于 hist3dbig:這是一個三維的矩陣,用來存儲三維直方圖。最常見的一維的直方圖是這個樣子,二維直方圖呢?是這個樣子,一個一個的柱子是一個統(tǒng)計bin,柱子的高低代表統(tǒng)計值的大小三維直方圖呢?是這個樣子, 立體的一個一個的小格子, 每個小格子是一個統(tǒng)計bin, 小格子用來裝統(tǒng)計值。以上面的例子,那么對一個block 來說,它的直方圖是下面這樣的:再來說線性插值, 線性插值時,一個統(tǒng)計值需被 “按一定比例分配 ”到這個統(tǒng)計點最鄰近的區(qū)間中去, 下面的圖顯示了一

5、維直方圖時,落在虛線標(biāo)記范圍內(nèi)的統(tǒng)計點,它最近鄰的區(qū)間就是標(biāo)有紅色圓點的兩個區(qū)間若是二維直方圖, 那落在如下虛線矩形中的統(tǒng)計點, 周圍的這四個統(tǒng)計區(qū)間就是它最近鄰的區(qū)間。這個虛線矩形由四個統(tǒng)計區(qū)間各自的 1/4 組成。三維直方圖,對一個統(tǒng)計點來說,它的最近鄰的區(qū)間有八個,如下圖,可以想象一下,只有當(dāng)這個統(tǒng)計點落在由如下八個統(tǒng)計區(qū)間各自的1/8 組成的一個立方體內(nèi)內(nèi)時,這八個區(qū)間才是對統(tǒng)計點最近鄰的。統(tǒng)計時如何分配權(quán)重呢?以一維直方圖簡單說一下線性插值的意思,對于下面綠色小方點 (x)的統(tǒng)計值來說,假設(shè)標(biāo)紅點的兩個bin 的中心位置分別為x1,x2,那么對于 x,它的分配權(quán)重為左邊bin: 1-

6、(x-x1)/s, 即 1-a/s = b/s, 右邊 bin:1-(x2-x)/s, 即 1-b/s = a/s.類似,那么對三維直方圖來說,統(tǒng)計時的累積式(從是:Dalal 的論文里截來的)就上面,w 就是準(zhǔn)備被分配的統(tǒng)計值。 (x1,y1,z1)共八個點表示八個統(tǒng)計區(qū)間的中心位置坐標(biāo), 上式用 h(x1,y1,z1)這樣的標(biāo)記來表示所要累積的統(tǒng)計區(qū)間。我在編程時就使用的這個式子,只不過我用bin 的下標(biāo)號來表示 bin 塊,就像前面三維直方圖示意中 (binx=1,biny=2,bi n =9),不過在程序中軸是用 z 軸表示了。binx1 = floor(jorbj-1+cellpw/

7、2)/cellpw) + 1;biny1 = floor(iorbi-1+cellph/2)/cellph) + 1;binz1 = floor(go+(or*pi/nthet)/2)/(or*pi/nthet) + 1;binx2 = binx1 + 1;biny2 = biny1 + 1;binz2 = binz1 + 1;這幾句,就是用來計算八個統(tǒng)計區(qū)間中心點的坐標(biāo)的。在計算前面所講的統(tǒng)計區(qū)間的中心坐標(biāo),分配權(quán)值之前, 我為了處理邊緣時程序簡潔點,就給那個2*2*9 的立體直方圖外邊又包了一層,形成了一個4*4*11 的三維直方圖 (示意圖如下 ),原來的 2*2*9 直方圖就是被包在中

8、間的部分。這樣,在原來直方圖里坐標(biāo)為 (binx=1,biny=2,binz=9) 的 bin,在新的直方圖里坐標(biāo)為(binx=2,biny=3,binz=10) 。對上面的 4*4*11 的直方圖來個與xoy 平面平行的剖面圖:粗實線框就是原三維直方圖的剖面,也就是一個block,對于像落在粗實線框與粗虛線框之間的點, 其最近鄰區(qū)間是不夠8 個的,我為了寫程序時省點腦力。 。,就用外擴(kuò)了的這一圈bin,這樣落在粗實線框與粗虛線框之間的統(tǒng)計點有了8 個區(qū)間,用 matlab 編程時,那個四層 for 循環(huán)中的部分就只用把那八個累積公式寫上,也不用判斷是不是在落在像上面粗實線框與粗虛線框之間的那

9、種區(qū)域。在程序中 2*2*9 的直方圖為 hist3d,4*4*11 的直方圖為 hist3dbig.當(dāng)在這個 hist3dbig中計算都結(jié)束后,我把外層這一圈剝?nèi)?,就是hist3d 了。有了這些準(zhǔn)備,我就可以計算出當(dāng)前像素點的梯度方向幅值應(yīng)該往hist3dbig 中的哪八個 bin 塊累積了。binx1,biny1,binz1 在這里就是那個八個bin 塊之中離當(dāng)前要統(tǒng)計的像素點在直方圖中對應(yīng)的位置最接近的 bin 塊的下標(biāo)。binx2,biny2,binz2 對應(yīng)就是最遠(yuǎn)的bin 塊的下標(biāo)了。 x1,y1,z1 就是 bin 塊 (binx1,biny1,binz1)中心點對應(yīng)的實際像素所

10、在的位置(x1,y1)與梯度方向的角度 (z1). 我仍然以原block(即沒擴(kuò)前的 block)左上角處作為 x1,y1 的原點,因為 matlab 以 1 作為圖像像素索引的開始,我把原點就認(rèn)為是(1,1),那(1,1)左邊外擴(kuò)出來的部分,就給以0,-1, -2,-3這樣的坐標(biāo) ,向上也類似,如下圖所示,(1,1)位置為紅點所示,藍(lán)點處坐標(biāo)就是 (-3,1).擴(kuò)展出來的綠塊的下標(biāo)是(binx=1,biny=1,binz1=1),由于像素坐標(biāo)在紅點處為(1,1),而黃塊才是 block 的第一個 cell,對應(yīng) bin 塊的下標(biāo) (2,2).因為下標(biāo)設(shè)計的原因,我在求 x1,y1,z1 時減

11、了 1.5 而非 0.5.x1 = (binx1-1.5)*cellpw + 0.5;y1 = (biny1-1.5)*cellph + 0.5;z1 = (binz1-1.5)*(or*pi/nthet);上面的式子中 x1,y1 還加了 0.5,因為像素坐標(biāo)是離散的, 而第一個坐標(biāo)總是從1 開始,這樣對如圖中第一個cell的中心(黑點)處應(yīng)該是4.5. z1 沒加 0.5,是因為角度值是從0 開始的,并且是連續(xù)的。在 signed(即梯度方向從 0 度到 360 度)情況下,因為實際上角度的投票區(qū)間是首尾相接環(huán)形的,若統(tǒng)計間隔是 40 度,那么 0-40 度和 320-360 度就是相鄰區(qū)間,那么在 4*4*11 的直方圖中,投給 binz=11 區(qū)間 (相當(dāng)于 360-380 度)的值應(yīng)該返給 binz=2(0-40 度),投給 binz=1 區(qū)間的值應(yīng)該返

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論