本發(fā)明涉及圖像識別領(lǐng)域,尤其涉及的是一種Hog并行化設(shè)計方法及系統(tǒng)。
背景技術(shù):
方向梯度直方圖(Histogram of oriented gradient,Hog)特征是一種在計算機和圖像處理中用來進(jìn)行物體的特征描述子,Hog特征結(jié)合SVM分類器已經(jīng)被廣泛應(yīng)用于圖像識別中。
現(xiàn)有的Hog算法主要是使用C語言或cuda實現(xiàn),結(jié)合SVM分類器從輸入的灰度圖中檢測出目標(biāo),在現(xiàn)有的Hog并行化方案中,首先需要對輸入的數(shù)據(jù)進(jìn)行縮放,并將縮放后的數(shù)據(jù)開方后再傳輸給求幅度角度模塊,然后將所求得的幅度和角度傳遞給直方圖模塊求得直方圖,最后進(jìn)行歸一化直方圖處理和求SVM值;現(xiàn)有Hog方案的流程圖如圖1所示,每一個框圖都代表了一個并行化過程,每個并行化過程都是通過顯存進(jìn)行數(shù)據(jù)通信的;
然而在cuda應(yīng)用程序設(shè)計中,通過顯存進(jìn)行的數(shù)據(jù)的通信帶寬是很小的,以至于現(xiàn)有Hog并行化方案中,制約著系統(tǒng)性能的主要因素是存儲器的帶寬,并且由于Hog的程序結(jié)構(gòu)不合理,浪費了寶貴的計算資源;其次,部分程序結(jié)構(gòu)多次訪問存儲器空間也會導(dǎo)致圖像處理效率變低。
因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
技術(shù)實現(xiàn)要素:
鑒于上述現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種Hog并行化設(shè)計方法及系統(tǒng),旨在解決現(xiàn)有Hog并行化方案受限于存儲器的帶寬,并且現(xiàn)有Hog的程序結(jié)構(gòu)不合理,浪費了寶貴的計算資源;以及部分程序結(jié)構(gòu)多次訪問存儲器空間導(dǎo)致圖像處理效率低的問題。
本發(fā)明的技術(shù)方案如下:
一種Hog并行化設(shè)計改進(jìn)方法,其中,包括步驟:
A、對輸入的原始圖像進(jìn)行分塊得到多個圖像塊,并將所述多個圖像塊分配給相應(yīng)的線程塊;
B、對所述圖像塊的像素數(shù)據(jù)進(jìn)行開方處理,得到開方數(shù)據(jù);
C、將所述開方數(shù)據(jù)進(jìn)行縮放,并將縮放后的數(shù)據(jù)直接從數(shù)據(jù)源中映射并取出,進(jìn)行幅度和角度的計算,從而得到圖像塊的幅度數(shù)據(jù)和角度數(shù)據(jù);
D、根據(jù)所述圖像塊的幅度數(shù)據(jù)和角度數(shù)據(jù)進(jìn)行直方圖統(tǒng)計,得到各個圖像塊的直方圖;
E、對所述多個圖像塊的直方圖進(jìn)行歸一化處理,得到原始圖像的Hog特征值。
所述的Hog并行化設(shè)計改進(jìn)方法,其中,所述步驟A具體包括:
A1、對輸入的原始圖像進(jìn)行分塊,得到多個圖像塊;
A2、將所述多個圖像塊輸入到GPU中,對所述多個圖像塊分配執(zhí)行資源,從而將所述多個圖像塊分配給相應(yīng)的線程塊。
所述的Hog并行化設(shè)計改進(jìn)方法,其中,所述步驟B具體包括:
B1、對所述圖像塊的像素數(shù)據(jù)進(jìn)行灰度化處理,得到圖像塊的灰度值;
B2、對所述圖像塊的灰度值進(jìn)行開方校正,得到圖像塊的開方數(shù)據(jù)。
所述的Hog并行化設(shè)計改進(jìn)方法,其中,所述步驟C具體包括:
C1、對圖像塊的開方數(shù)據(jù)進(jìn)行縮放,縮放公式為:其中,fscale=1.06n,n∈[0,18),n為縮放次數(shù);wide為圖像塊的原始寬度,height為圖像塊的原始高度;wide’為圖像塊縮放后的寬度,height’為圖像塊縮放后的高度;
C2、所述幅度值的計算公式為:所述角度值的計算公式為:其中,I(x1+1,y1)-I(x1-1,y1)為圖像塊中像素點(x,y)處的水平方向梯度,I(x1,y1+1)-I(x1,y1-1)圖像塊中像素點(x,y)處的垂直方向梯度。
所述的Hog并行化設(shè)計改進(jìn)方法,其中,所述步驟D具體包括:
D1、將圖像塊分成4個cell權(quán)重矩陣,所述4個cell權(quán)重矩陣分別為cell0、cell1、cell2和cell3;
D2、分別計算圖像塊中與所述4個cell權(quán)重矩陣分量計算有關(guān)的值,得到4個對cell權(quán)重矩陣有影響的區(qū)域;
D3、將所述4個對cell權(quán)重矩陣有影響的區(qū)域分別投影到直方圖的長度范圍內(nèi),得到圖像塊的統(tǒng)計直方圖。
一種Hog并行化設(shè)計改進(jìn)系統(tǒng),其中,包括:
分塊模塊,用于對輸入的原始圖像進(jìn)行分塊得到多個圖像塊,并將所述多個圖像塊分配給相應(yīng)的線程塊;
開方模塊,用于對所述圖像塊的像素數(shù)據(jù)進(jìn)行開方處理,得到開方數(shù)據(jù);
數(shù)據(jù)計算模塊,用于將所述開方數(shù)據(jù)進(jìn)行縮放,并將縮放后的數(shù)據(jù)直接從數(shù)據(jù)源中映射并取出,進(jìn)行幅度和角度的計算,從而得到圖像塊的幅度數(shù)據(jù)和角度數(shù)據(jù);
統(tǒng)計模塊,用于根據(jù)所述圖像塊的幅度數(shù)據(jù)和角度數(shù)據(jù)進(jìn)行直方圖統(tǒng)計,得到各個圖像塊的直方圖;
歸一化模塊,用于對所述多個圖像塊的直方圖進(jìn)行歸一化處理,得到原始圖像的Hog特征值。
所述的Hog并行化設(shè)計改進(jìn)系統(tǒng),其中,所述分塊模塊具體包括:
分塊單元,用于對輸入的原始圖像進(jìn)行分塊,得到多個圖像塊;
分配單元,用于將所述多個圖像塊輸入到GPU中,對所述多個圖像塊分配執(zhí)行資源,從而將所述多個圖像塊分配給相應(yīng)的線程塊。
所述的Hog并行化設(shè)計改進(jìn)系統(tǒng),其中,所述開方模塊具體包括:
灰度處理單元,用于對所述圖像塊的像素數(shù)據(jù)進(jìn)行灰度化處理,得到圖像塊的灰度值;
開方校正單元,用于對所述圖像塊的灰度值進(jìn)行開方校正,得到圖像塊的開方數(shù)據(jù)。
所述的Hog并行化設(shè)計改進(jìn)系統(tǒng),其中,所述數(shù)據(jù)計算模塊具體包括:
縮放單元,用于對圖像塊的開方數(shù)據(jù)進(jìn)行縮放,縮放公式為:其中,fscale=1.06n,n∈[0,18),n為縮放次數(shù);wide為圖像塊的原始寬度,height為圖像塊的原始高度;wide’為圖像塊縮放后的寬度,height’為圖像塊縮放后的高度;
幅度及角度計算單元,用于計算圖像塊的幅度值和角度值,所述幅度值的計算公式為:所述角度值的計算公式為:其中,I(x1+1,y1)-I(x1-1,y1)為圖像塊中像素點(x,y)處的水平方向梯度,I(x1,y1+1)-I(x1,y1-1)為圖像塊中像素點(x,y)處的垂直方向梯度。
所述的Hog并行化設(shè)計改進(jìn)系統(tǒng),其中,所述統(tǒng)計模塊具體包括:
矩陣劃分單元,用于將圖像塊分成4個cell權(quán)重矩陣,所述4個cell權(quán)重矩陣分別為cell0、cell1、cell2和cell3;
區(qū)域計算單元,用于分別計算圖像塊中與所述4個cell權(quán)重矩陣分量計算有關(guān)的值,得到4個對cell權(quán)重矩陣有影響的區(qū)域;
投影單元,用于將所述4個對cell權(quán)重矩陣有影響的區(qū)域分別投影到直方圖的長度范圍內(nèi),得到圖像塊的統(tǒng)計直方圖。
有益效果:本發(fā)明相對于現(xiàn)有的Hog并行化設(shè)計,在運算效率上有明顯的提升,具體體現(xiàn)在以下幾個方面:
1、本發(fā)明先對圖像塊的灰度圖直接進(jìn)行一次開方處理,然后將開方后的數(shù)據(jù)作為數(shù)據(jù)源進(jìn)行n次縮放、幅度角度計算等后續(xù)操作;而現(xiàn)有的Hog設(shè)計在對灰度圖縮放n次的同時,也會進(jìn)行n次開方運算,因此,相對于現(xiàn)有的Hog設(shè)計,本發(fā)明的Hog設(shè)計減少了n-1次的開方運算,提高了運算效率;
2、本發(fā)明將縮放與求幅度角度值統(tǒng)一進(jìn)行,通過將縮放的數(shù)據(jù)直接從數(shù)據(jù)源中映射并取出,然后進(jìn)行幅度和角度的計算,縮放的過程在邏輯上是存在的,但是不會使用存儲器作為中間數(shù)據(jù)的存儲,因此,相對于現(xiàn)有的Hog設(shè)計,本發(fā)明減少了cuda核心對存儲器寬帶的依賴,提高了cuda核心的執(zhí)行效率;
3、本發(fā)明在直方圖統(tǒng)計過程中,通過計算對cell權(quán)重矩陣有影響的區(qū)域,并將所述區(qū)域投影到直方圖相應(yīng)的長度范圍內(nèi),可實現(xiàn)一個線程塊輸出兩個圖像塊的直方圖,相對于現(xiàn)有的Hog設(shè)計,本發(fā)明的其執(zhí)行效率更高。
附圖說明
圖1為現(xiàn)有技術(shù)中Hog并行化設(shè)計方法的流程示意圖。
圖2為本發(fā)明一種Hog并行化設(shè)計方法較佳實施例的流程圖。
圖3為本發(fā)明Hog并行化設(shè)計方法的流程示意圖。
圖4為本發(fā)明中對圖像塊進(jìn)行資源分配的示意圖。
圖5為本發(fā)明中cell與cell之間互相影響的區(qū)域示意圖。
圖6為本發(fā)明中圖像塊的投影示意圖。
圖7為本發(fā)明中線程塊內(nèi)部的計算分配方式示意圖。
具體實施方式
本發(fā)明提供一種Hog并行化設(shè)計方法及系統(tǒng),為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下參照附圖并舉實例對本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
請參閱圖2和圖3,圖2為本發(fā)明一種Hog并行化設(shè)計方法較佳實施例的流程圖,如圖所示,其包括步驟:
S100、對輸入的原始圖像進(jìn)行分塊得到多個圖像塊,并將所述多個圖像塊分配給相應(yīng)的線程塊;
具體地,在對圖像進(jìn)行Hog并行化設(shè)計之前,需要對輸入的圖像進(jìn)行分塊,圖像分塊有兩種方式,一種是分割出的圖像塊互相有交疊,另一種是分割出的圖像塊互相之間沒有交疊;本發(fā)明優(yōu)選沒有交疊的分塊方式。將分塊后的圖像輸入到GPU中,在并行化系統(tǒng)中對圖像塊分配執(zhí)行資源,如圖4所示。
進(jìn)一步,所述步驟S100具體包括:
S110、對輸入的原始圖像進(jìn)行分塊,得到多個圖像塊;
S120、將所述多個圖像塊輸入到GPU中,對所述多個圖像塊分配執(zhí)行資源,從而將所述多個圖像塊分配給相應(yīng)的線程塊。
具體地,在本發(fā)明中,當(dāng)原始圖像被分割成多個圖像塊之后,每個圖像塊均被分配給一個或多個線程塊執(zhí)行運算,如圖4所示,所述線程塊與線程塊之間是并行執(zhí)行的,所以從宏觀上看,一幅圖像被分割成了多個圖像塊,對其進(jìn)行GPU資源分配后,所述多個圖像塊是同時執(zhí)行運算處理的。
S200、對所述圖像塊的像素數(shù)據(jù)進(jìn)行開方處理,得到開方數(shù)據(jù),其具體包括:
S210、對所述圖像塊的像素數(shù)據(jù)進(jìn)行灰度化處理,得到圖像塊的灰度值;
具體地,可采用分量法對圖像塊的像素數(shù)據(jù)進(jìn)行灰度化處理,通過將彩色圖像中的三分量的亮度作為三個灰度圖像的灰度值,可根據(jù)應(yīng)用需要選取一種灰度圖像;通過灰度化處理可得到圖像塊的灰度值;
S220、對所述圖像塊的灰度值進(jìn)行開方校正,得到圖像塊的開方數(shù)據(jù);具體地,通過開方校正對輸入圖像進(jìn)行顏色空間的標(biāo)準(zhǔn)化(歸一化),目的是調(diào)節(jié)圖像的對比度,降低圖像局部的陰影和光照變化所造成的影響,同時還可以抑制噪音的干擾;開方主要是實現(xiàn)數(shù)據(jù)校正的運算方法,即將輸入的數(shù)據(jù)開平方后再寫入到原來的位置,示例如下:即開方校正后,數(shù)據(jù)由原來的整數(shù)變成了單精度浮點數(shù),后續(xù)的運算都是浮點數(shù)處理。
由于現(xiàn)有的Hog并行化是針對通用性考慮的,所以當(dāng)原始灰度圖進(jìn)入到現(xiàn)有Hog并行化系統(tǒng)后,先做縮放,縮放過后再由用戶選擇是否開方。而本發(fā)明的Hog并行化過程是先做開方運算,即當(dāng)原始灰度圖進(jìn)入到本專利的Hog并行化系統(tǒng)后,直接做開方,然后將開方后的數(shù)據(jù)又做為數(shù)據(jù)源給后續(xù)的操作。由于進(jìn)入系統(tǒng)的灰度圖會縮放n次,若選擇現(xiàn)有的Hog,那么在縮放n次的同時,也會進(jìn)行n次開方運算。而本發(fā)明對于一幅灰度只需要做一次開方運算,然后再縮放n次,相對于現(xiàn)有的Hog,減少了n-1次的開方運算,提高了運算效率。
S300、將所述開方數(shù)據(jù)進(jìn)行縮放,并將縮放后的數(shù)據(jù)直接從數(shù)據(jù)源中映射并取出,進(jìn)行幅度和角度的計算,從而得到圖像塊的幅度數(shù)據(jù)和角度數(shù)據(jù);
具體地,對數(shù)據(jù)進(jìn)行開方處理后,需要將得到的開方數(shù)據(jù)進(jìn)行縮放處理,wide和height分別表示縮放前的圖像塊的寬和高,在縮放過程中,每一層縮放后的wide’和height’的大小都是不一樣的,wide’和height’的計算是在CPU端進(jìn)行的,縮放后wide’和height’要保證是8的整數(shù)倍,計算公式如下所示:其中,fscale=1.06n,n∈[0,18),n為縮放次數(shù);wide為圖像塊的原始寬度,height為圖像塊的原始高度;wide’為圖像塊縮放后的寬度,height’為圖像塊縮放后的高度;進(jìn)一步,本發(fā)明優(yōu)選對開方數(shù)據(jù)進(jìn)行18層縮放。
進(jìn)一步,在進(jìn)行縮放過程中,需要從紋理存儲器(texRef)中讀取數(shù)據(jù),待縮放的矩陣texRef是(wide+2)*(height+2),且矩陣四周的邊界點都為0,這樣做的目的是在縮放時可以排除原矩陣wide*height在邊界點上的處理過程與非邊界點上的處理過程不一致的情況,在CUDA并行設(shè)計中可以消除if……else……語句。紋理存儲器自己提供一種邊界處理機制,超出矩陣的存儲空間大小后默認(rèn)為0或是其他值,這樣做的最大的好處是使紋理存儲器空間大小與現(xiàn)實數(shù)據(jù)的大小相匹配;
線程發(fā)射時,開啟的線程數(shù)正好與縮放后的矩陣大小wide’和height’相對應(yīng),網(wǎng)格維度和線程塊可以自己定,只要開啟了wide’*height’個線程都可以,在縮放過程中,就不存儲中間的縮放結(jié)果。
在進(jìn)行A和θ的計算之前,需要抽象的取出圖像塊的上下左右四個點。設(shè)縮放后的某一點為(x,y),x∈[0,wide′),y∈[0,height′)。由縮放后的點位置對應(yīng)到原點的位置公式L(x’,y’,z’),其中x’、y’、z’為變量:每個cuda核函數(shù)計算縮放后的一點,設(shè)index為當(dāng)前核函數(shù)對應(yīng)的線程號,此縮放后的某一點(x,y)的計算公式如下所示:index=blockIdx.x*blockDim.x+threadIdx.x;在當(dāng)前核函數(shù)內(nèi)部申請四個寄存器為fTop,fBottom,fLeft和fRight,分別對應(yīng)當(dāng)前縮放后的位置點(x,y-1)、(x,y+1)、(x-1,y)和(x+1,y)的值。因為texRef的邊界點都為0,所以為了能夠準(zhǔn)確的映射到原texRef的值,計算時應(yīng)該在橫向x和縱向y上都各自加1。這四個點的計算公式如下所示(其中text2D(texRef,x”,y”)表示從紋理存儲器texRef的位置(x”,y”)中拾取的值):fTop=text2D(texRef,L(x+1,wide,wide′),L(y,height,height′));fLeft=text2D(texRef,L(x,wide,wide′),L(y+1,height,height′));fRight=text2D(texRef,L(x+2,wide,wide′),L(y+1,height,height′));fBottom=text2D(texRef,L(x+1,wide,wide′),L(y+2,height,height′));
進(jìn)一步,當(dāng)輸入的縮放數(shù)據(jù)為m*n(m為寬,n為高)的矩陣,那么經(jīng)過此步驟后輸出可以看成是兩個m*n的矩陣,分別為幅度A矩陣和角度θ矩陣;設(shè)輸入矩陣為I,維度為m*n;輸出矩陣為O,維度為m*n;設(shè)矩陣I和矩陣O中任一位置為(x1,y1),x1∈[0,m-1],y1∈[0,n-1],對于矩陣之外位置時,為了方便計算,都設(shè)為0。
所述幅度值A(chǔ)的計算公式為:所述角度值θ的計算公式為:其中,I(x1+1,y1)-I(x1-1,y1)為圖像塊中像素點(x,y)處的水平方向梯度,I(x1,y1+1)-I(x1,y1-1)圖像塊中像素點(x,y)處的垂直方向梯度。經(jīng)過上述的求角度的θ的公式,求出的Oθ(x1,y1)是弧度表示的,范圍為將其轉(zhuǎn)換為角度的公式為Oθ(x1,y1)乘以后存入相應(yīng)位置。轉(zhuǎn)化成Oθ(x1,y1)角度表示后,若值是小于0的,那么再加上180,使其變成正的,公式為Oθ(x1,y1)=Oθ(x1,y1)+180;要限制Oθ(x1,y1)的取值范圍在[0,180]內(nèi)。
在現(xiàn)有的Hog方案中,縮放與求幅度和角度并行化模塊是分開的,若將縮放后的數(shù)據(jù)傳遞給后續(xù)模塊運行,需要通過存儲器做為數(shù)據(jù)傳輸?shù)耐ǖ?,存儲器訪問次數(shù)會增加,Hog并行化系統(tǒng)的效率在這里受到了存儲器帶寬的限制;而在本發(fā)明中,將縮放與求幅度角度統(tǒng)一計算,將縮放后的數(shù)據(jù)直接從數(shù)據(jù)源中映射并取出,然后進(jìn)行幅度和角度的計算,縮放的過程在邏輯上是存在的,但是不會使用存儲器做為中間數(shù)據(jù)的存儲,所以本發(fā)明相對于現(xiàn)有的hog,減少了cuda核心對存儲器帶寬的依賴,提高了cuda核心的執(zhí)行效率。
S400、根據(jù)所述圖像塊的幅度數(shù)據(jù)和角度數(shù)據(jù)進(jìn)行直方圖統(tǒng)計,得到各個圖像塊的直方圖,其具體包括:
S410、將圖像塊分成4個cell權(quán)重矩陣,所述4個cell權(quán)重矩陣分別為cell0、cell1、cell2和cell3;
S420、分別計算圖像塊中與所述4個cell權(quán)重矩陣分量計算有關(guān)的值,得到4個對cell權(quán)重矩陣有影響的區(qū)域;
S430、將所述4個對cell權(quán)重矩陣有影響的區(qū)域分別投影到直方圖的長度范圍內(nèi),得到圖像塊的統(tǒng)計直方圖。
具體來說,一個圖像塊(block)分成4個cell,block大小為8*8,cell大小為4*4;在現(xiàn)有Hog設(shè)計中,是假設(shè)一個cell中的所有數(shù)據(jù)對其他3個cell都有影響,這樣造成的問題是在并行化設(shè)計中不僅計算量大,而且共享存儲器也會被大量使用,為了避免出現(xiàn)共享存儲器內(nèi)數(shù)據(jù)不一致的情況,會額外增加大量的同步的操作,從而導(dǎo)致程序運行效率降低。
實際上,每個cell并不是所有的數(shù)據(jù)都對其他的cell有影響,cell與cell之間相互影響的結(jié)構(gòu)如圖5所述。在本發(fā)明中,每一個圖像塊內(nèi),每個點有四個cell權(quán)重矩陣,分別為cell0權(quán)重矩陣、cell1權(quán)重矩陣、cell2權(quán)重矩陣和cell3權(quán)重矩陣,每個cell權(quán)重矩陣的維度為6*6(與對cell有影響的區(qū)域大小相對應(yīng)),每個矩陣的初使化都為1;cell0權(quán)重矩陣與對cell0有影響的區(qū)域相乘后,得到圖像block的所有cell0分量計算有關(guān)的值。同理cell1權(quán)重矩陣與對cell1有影響的區(qū)域相乘后,得到圖像block的所有與cell1分量計算有關(guān)的值。cell2權(quán)重矩陣與對cell2有影響的區(qū)域相乘后,得到圖像block的所有與cell2分量計算有關(guān)的值。cell3權(quán)重矩陣與對cell3有影響的區(qū)域相乘后,得到圖像block的所有與cell3分量計算有關(guān)的值。
進(jìn)一步,將cell0及與cell0有影響的區(qū)域投影到直方圖的0-8范圍內(nèi);cell1及與cell1有影響的區(qū)域投影到直方圖的9-17范圍內(nèi);cell2及與cell2有影響的區(qū)域投影到直方圖的18-26范圍內(nèi);cell3及與cell3有影響的區(qū)域投影到直方圖的27-35范圍內(nèi);投影過程如圖6所示。
由于一個線程block中有64個線程,在本發(fā)明中,每個線程block可處理兩個圖像block,如圖7所示。也就是說,雖然本發(fā)明的線程塊維度也為8x8,在時間復(fù)雜度上與現(xiàn)有的Hog設(shè)計一樣,但是本發(fā)明中一個線程塊可以輸出兩個圖像塊的直方圖,所以相對于較現(xiàn)有的Hog并行化方案,本發(fā)明的執(zhí)行效率要高得多。
S500、對所述多個圖像塊的直方圖進(jìn)行歸一化處理,得到原始圖像的Hog特征值。
具體來說,由于局部光照的變化以及前景-背景對比度的變化,使得梯度強度的變化范圍非常大,因此需要對梯度強度做歸一化處理;較佳地,把各個cell單元組合成大的、空間上連通的區(qū)間。這樣,一個圖像塊內(nèi)所有cell的特征向量串聯(lián)起來便得到該圖像塊的Hog特征,將歸一化之后的圖像塊描述符(向量)就稱之為Hog特征值。
基于上述方法,本發(fā)明還提供一種Hog并行化設(shè)計改進(jìn)系統(tǒng),其中,包括:
分塊模塊100,用于對輸入的原始圖像進(jìn)行分塊得到多個圖像塊,并將所述多個圖像塊分配給相應(yīng)的線程塊;
開方模塊200,用于對所述圖像塊的像素數(shù)據(jù)進(jìn)行開方處理,得到開方數(shù)據(jù);
數(shù)據(jù)計算模塊300,用于將所述開方數(shù)據(jù)進(jìn)行縮放,并將縮放后的數(shù)據(jù)直接從數(shù)據(jù)源中映射并取出,進(jìn)行幅度和角度的計算,從而得到圖像塊的幅度數(shù)據(jù)和角度數(shù)據(jù);
統(tǒng)計模塊400,用于根據(jù)所述圖像塊的幅度數(shù)據(jù)和角度數(shù)據(jù)進(jìn)行直方圖統(tǒng)計,得到各個圖像塊的直方圖;
歸一化模塊500,用于對所述多個圖像塊的直方圖進(jìn)行歸一化處理,得到原始圖像的Hog特征值。
所述的Hog并行化設(shè)計改進(jìn)系統(tǒng),其中,所述分塊模塊100具體包括:
分塊單元,用于對輸入的原始圖像進(jìn)行分塊,得到多個圖像塊;
分配單元,用于將所述多個圖像塊輸入到GPU中,對所述多個圖像塊分配執(zhí)行資源,從而將所述多個圖像塊分配給相應(yīng)的線程塊。
所述的Hog并行化設(shè)計改進(jìn)系統(tǒng),其中,所述開方模塊200具體包括:
灰度處理單元,用于對所述圖像塊的像素數(shù)據(jù)進(jìn)行灰度化處理,得到圖像塊的灰度值;
開方校正單元,用于對所述圖像塊的灰度值進(jìn)行開方校正,得到圖像塊的開方數(shù)據(jù)。
所述的Hog并行化設(shè)計改進(jìn)系統(tǒng),其中,所述數(shù)據(jù)計算模塊300具體包括:
縮放單元,用于對圖像塊的開方數(shù)據(jù)進(jìn)行縮放,縮放公式為:其中,fscale=1.06n,n∈[0,18),n為縮放次數(shù);wide為圖像塊的原始寬度,height為圖像塊的原始高度;wide’為圖像塊縮放后的寬度,height’為圖像塊縮放后的高度;
幅度及角度計算單元,用于計算圖像塊的幅度值和角度值,所述幅度值的計算公式為:所述角度值的計算公式為:其中,I(x1+1,y1)-I(x1-1,y1)為圖像塊中像素點(x,y)處的水平方向梯度,I(x1,y1+1)-I(x1,y1-1)為圖像塊中像素點(x,y)處的垂直方向梯度。
所述的Hog并行化設(shè)計改進(jìn)系統(tǒng),其中,所述統(tǒng)計模塊400具體包括:
矩陣劃分單元,用于將圖像塊分成4個cell權(quán)重矩陣,所述4個cell權(quán)重矩陣分別為cell0、cell1、cell2和cell3;
區(qū)域計算單元,用于分別計算圖像塊中與所述4個cell權(quán)重矩陣分量計算有關(guān)的值,得到4個對cell權(quán)重矩陣有影響的區(qū)域;
投影單元,用于將所述4個對cell權(quán)重矩陣有影響的區(qū)域分別投影到直方圖的長度范圍內(nèi),得到圖像塊的統(tǒng)計直方圖。
綜上所述,本發(fā)明提供一種Hog并行化設(shè)計方法及系統(tǒng),相對于現(xiàn)有的Hog設(shè)計,本發(fā)明的Hog設(shè)計減少了n-1次的開方運算,提高了運算效率;減少了cuda核心對存儲器寬帶的依賴,提高了cuda核心的執(zhí)行效率;實現(xiàn)了一個線程塊輸出兩個圖像塊的直方圖,提高了執(zhí)行效率。
應(yīng)當(dāng)理解的是,本發(fā)明的應(yīng)用不限于上述的舉例,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進(jìn)或變換,例如,所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。