基于多核處理器的哈里斯特征點(diǎn)檢測(cè)并行實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種圖像并行處理技術(shù)的方法,特別涉及基于多核處理器的哈里斯(Harris)特征點(diǎn)檢測(cè)并行實(shí)現(xiàn)方法。
技術(shù)背景
[0002]從處理器誕生時(shí)代直到21世紀(jì)初,處理器性能可以不斷提高的原因,主要基于兩個(gè)方面:一是半導(dǎo)體工藝的逐漸進(jìn)步;二是處理器體系結(jié)構(gòu)的不斷發(fā)展。它們相輔相成,互相促進(jìn)彼此的發(fā)展,但由于工藝技術(shù)的限制,半導(dǎo)體工藝已經(jīng)達(dá)到了物理極限,處理器的頻率也就很難再有所提高,如此,各處理器廠商轉(zhuǎn)而向單個(gè)芯片上集成多個(gè)處理器內(nèi)核,即所謂的多核處理器誕生了。多核處理器誕生后,并行計(jì)算得到的關(guān)注度越來越多,所謂的并行計(jì)算是指,由運(yùn)行在多個(gè)部件上的分任務(wù)合作來求解一個(gè)規(guī)模很大的問題的一種計(jì)算方法,它可以降低單個(gè)問題的求解時(shí)間、增加問題的求解規(guī)模、提高問題的求解精度、具有更高的容錯(cuò)性、可用性及系統(tǒng)吞吐率等。
[0003]隨著計(jì)算機(jī)技術(shù)的發(fā)展,如今人們所使用的計(jì)算機(jī)多為雙核乃至4核處理器,且4核處理器已逐漸成為主流。多核時(shí)代的來臨使得高性能計(jì)算的并行編程成為主要研宄方向。傳統(tǒng)程序在執(zhí)行時(shí)只運(yùn)行一個(gè)線程,這些程序在多核處理器平臺(tái)上不能有效地利用多核處理器資源,所以必須使用多線程編寫程序才能讓各個(gè)處理器內(nèi)核得到充分利用。早在單核處理器時(shí)代,應(yīng)用程序已經(jīng)能夠支持多線程技術(shù),但是不同的是,單核內(nèi)的多線程運(yùn)行是串行的,多個(gè)線程交替執(zhí)行,在同一時(shí)刻只能有一個(gè)線程執(zhí)行;而多核處理器是通過增加計(jì)算機(jī)中物理處理器的數(shù)量,它能夠有效利用線程實(shí)現(xiàn)并行性,因此多核處理器系統(tǒng)支持真正意義上的并行執(zhí)行,表現(xiàn)出多個(gè)線程能夠在多個(gè)處理器內(nèi)核上同時(shí)執(zhí)行。
[0004]OpenMP用于共享內(nèi)存并行系統(tǒng)的多線程程序設(shè)計(jì)的一套指導(dǎo)性編譯處理方案,常用于多核處理器環(huán)境下的多線程并行程序設(shè)計(jì)。通過在原串行程序的基礎(chǔ)上增加編譯制導(dǎo)語句,顯示地實(shí)現(xiàn)串行程序的并行化;且OpenMP提供了對(duì)并行算法高層的抽象描述,通過在源代碼中加入專用的pragma來指明意圖,由此編譯器可以自動(dòng)將程序并行化,并在必要之處加入同步互斥以及通信。當(dāng)選擇忽略這些pragma語句,或者編譯器不支持OpenMP時(shí),程序又可以退化為串行程序,代碼仍然可以正常運(yùn)作,只是不能利用多線程來加速程序執(zhí)行。
[0005]Harris特征點(diǎn)檢測(cè)作為基于圖像灰度信息的檢測(cè)方法被廣泛使用。其是通過泰勒級(jí)數(shù)展開法擴(kuò)展了思路,計(jì)算窗口沿著任何方向移動(dòng)后的灰度變化情況,利用數(shù)學(xué)解析式來進(jìn)一步確定特征點(diǎn),定位精度高。同時(shí)引入了平滑因子,增強(qiáng)了該算法的魯棒性。整個(gè)算法是受到信號(hào)處理中自相關(guān)函數(shù)的啟發(fā),引入與自相關(guān)函數(shù)相聯(lián)系的矩陣M。矩陣M的特征值可以表示某一點(diǎn)的圖像灰度自相關(guān)函數(shù)的極值曲率,如果兩個(gè)曲率極值都高,那么就取該像素點(diǎn)為特征點(diǎn)。Harris特征點(diǎn)檢測(cè)算法原理參考圖1,其中λ?和λ 2是矩陣M的兩個(gè)特征值。雖然Harris特征點(diǎn)定位準(zhǔn)確,但由于涉及到卷積運(yùn)算,計(jì)算量較大,時(shí)間復(fù)雜度高,影響后續(xù)諸如場(chǎng)景分析、目標(biāo)識(shí)別、圖像配準(zhǔn)等一系列的圖像處理應(yīng)用。
【發(fā)明內(nèi)容】
[0006]為克服現(xiàn)有技術(shù)的不足,本發(fā)明旨在提出一種基于多核處理器的Harris特征點(diǎn)檢測(cè)并行實(shí)現(xiàn)方法。該方法在當(dāng)今多核處理器的應(yīng)用前景下,大大提高Harris特征點(diǎn)檢測(cè)算法的運(yùn)算速度,增加其實(shí)用性。為此,本發(fā)明采取的技術(shù)方案是,基于多核處理器的哈里斯特征點(diǎn)檢測(cè)并行實(shí)現(xiàn)方法,包括如下步驟:
[0007]步驟一:并行梯度計(jì)算:將輸入圖像的梯度計(jì)算分配給不同的線程以實(shí)現(xiàn)并行計(jì)算;
[0008]步驟二:并行高斯濾波步驟:將1x2梯度圖像、Iy2梯度圖像和Ixy梯度圖像的高斯濾波操作分配給不同的線程以實(shí)現(xiàn)并行計(jì)算;
[0009]步驟三:并行特征點(diǎn)響應(yīng)函數(shù)計(jì)算步驟:將自相關(guān)矩陣圖像的特征點(diǎn)響應(yīng)函數(shù)計(jì)算分配給不同的線程以實(shí)現(xiàn)并行計(jì)算;
[0010]步驟四:并行非極大值抑制步驟:將特征點(diǎn)響應(yīng)函數(shù)圖像的非極大值抑制操作分配給不同的線程以實(shí)現(xiàn)并行計(jì)算。
[0011]并行梯度計(jì)算步驟進(jìn)一步具體為:將輸入圖像劃分為NXN的圖像塊,即每塊含N行,每行含N個(gè)像素點(diǎn);將每個(gè)圖像塊分配給不同的線程,即需要N2個(gè)線程;每個(gè)線程并行計(jì)算每個(gè)圖像塊的水平梯度Ix和垂直梯度Iy ;每個(gè)線程并行計(jì)算每個(gè)圖像塊的水平梯度的平方1x2、垂直梯度的平方y(tǒng)2和水平梯度與垂直梯度的乘積Ixy ;其中,Ix和Iy分別表示圖像在水平和垂直方向上的梯度,1x2表示圖像在水平方向上梯度的平方;Iy2表示圖像在垂直方向上梯度的平方;Ixy表示圖像在水平和垂直方向上梯度的乘積,N為正整數(shù)。
[0012]并行高斯濾波步驟進(jìn)一步具體為:將1x2梯度圖像、Iy2梯度圖像和Ixy梯度圖像劃分為NXN的圖像塊,即每塊含N行,每行含N個(gè)梯度值;將每個(gè)圖像塊分配給不同的線程,即需要N2個(gè)線程;每個(gè)線程并行計(jì)算每個(gè)圖像塊的自相關(guān)矩陣中的元素A、B和C ;其中,A由對(duì)1x2梯度圖像進(jìn)行高斯濾波而得;B由對(duì)Iy2梯度圖像進(jìn)行高斯濾波而得;C由對(duì)Ixy梯度圖像進(jìn)行高斯濾波而得。
[0013]并行特征點(diǎn)響應(yīng)函數(shù)計(jì)算步驟進(jìn)一步具體為:將自相關(guān)矩陣圖像劃分為NXN的圖像塊,即每塊含N行,每行含N個(gè)自相關(guān)矩陣;將每個(gè)圖像塊分配給不同的線程,即需要N2個(gè)線程;每個(gè)線程并行計(jì)算每個(gè)圖像塊的特征點(diǎn)響應(yīng)函數(shù)。
[0014]并行非極大值抑制步驟進(jìn)一步具體為:將特征點(diǎn)響應(yīng)函數(shù)圖像劃分為NXN的圖像塊,即每塊含N行,每行含N個(gè)特征點(diǎn)響應(yīng)函數(shù);將每個(gè)圖像塊分配給不同的線程,即需要N2個(gè)線程;每個(gè)線程并行計(jì)算每個(gè)圖像塊的最終特征點(diǎn)。
[0015]與已有技術(shù)相比,本發(fā)明的技術(shù)特點(diǎn)與效果:
[0016]與傳統(tǒng)Harris特征點(diǎn)檢測(cè)算法相比,本發(fā)明將算法中4個(gè)關(guān)鍵步驟:梯度計(jì)算、高斯濾波、特征點(diǎn)響應(yīng)函數(shù)計(jì)算、非極大值抑制,在多核處理器環(huán)境下利用多線程并行編程實(shí)現(xiàn)了并行程序設(shè)計(jì)。在任務(wù)劃分過程中,每個(gè)線程具有相近的工作量,保證以相同繁忙程度來工作;并且任務(wù)劃分的粒度要遠(yuǎn)大于線程開銷時(shí)間,在總的處理器時(shí)間中所占的比重很大,因此大大提高了運(yùn)算速度。
[0017]而且本發(fā)明具有極好的可擴(kuò)展性和適用性,將N設(shè)置成不同的數(shù)值即可適用于不同處理器核數(shù)環(huán)境下的并行程序設(shè)計(jì)。
【附圖說明】
[0018]圖1是Harris特征點(diǎn)檢測(cè)算法原理示意圖。
[0019]圖2是本發(fā)明的流程圖。
[0020]圖3是并行梯度計(jì)算步驟劃分與計(jì)算過程。
[0021]圖4是并行高斯濾波步驟劃分與計(jì)算過程。
[0022]圖5是并行特征點(diǎn)響應(yīng)函數(shù)計(jì)算步驟劃分與計(jì)算過程。
[0023]圖6是并行非極大值抑制步驟劃分與計(jì)算過程。
【具體實(shí)施方式】
[0024]本發(fā)明包括下列步驟:并行梯度計(jì)算步驟;并行高斯濾波步驟;并行特征點(diǎn)響應(yīng)函數(shù)計(jì)算步驟;并行非極大值抑制步驟。本發(fā)明的流程圖參考圖2。根據(jù)目前圖像處理中實(shí)際的應(yīng)用需求,所述的特征點(diǎn)檢測(cè)方法中各個(gè)步驟所處理的圖像區(qū)域均為除最外圍5行5列的區(qū)域。
[0025]步驟一:并行梯度計(jì)算:將輸入圖像的梯度計(jì)算分配給不同的線程以實(shí)現(xiàn)并行計(jì)笪并ο
[0026]并行梯度計(jì)算步驟進(jìn)一步具體為:將輸入圖像劃分為NXN的圖像塊,即每塊含N行,每行含N個(gè)像素點(diǎn);將每個(gè)圖像塊分配給不同的線程,即需要N2個(gè)線程;每個(gè)線程并行計(jì)算每個(gè)圖像塊的水平梯度Ix和垂直梯度Iy ;每個(gè)線程并行計(jì)算每個(gè)圖像塊的水平梯度的平方x2、垂直梯度的平方Iy2和水平梯度與垂直梯度的乘積Ixy。
[0027]其中,Ix和Iy分別表示圖像在水平和垂直方向上的梯度。1x2表示圖像在水平方向上梯度的平方;Iy2表示圖像在垂直方向上梯度的平方;Ixy表示圖像在水平和垂直方向上梯度的乘積。N為正整數(shù)。
[0028]步驟二:并行高斯濾波步驟:將1x2梯度圖像、Iy2梯度圖像和Ixy梯度圖像的高斯濾波操作分配給不同的線程以實(shí)現(xiàn)并行計(jì)算。
[0029]并行高斯濾波步驟進(jìn)一步具體為:將1x2梯度圖像、Iy2梯度圖像和Ixy梯度圖像劃分為NXN的圖像塊,即每塊含N行,每行含N個(gè)梯度值;將每個(gè)圖像塊分配給不同的線程,即需要N2個(gè)線程;每個(gè)線程并行計(jì)算每個(gè)圖像塊的自相關(guān)矩陣中的元素A、B和C。
[0030]其中,A由對(duì)1x2梯度圖像進(jìn)行高斯濾波而得;B由對(duì)Iy2梯度圖像進(jìn)行高斯濾波而得;C由對(duì)Ixy梯度圖像進(jìn)行高斯濾波而得。
[0031]步驟三:并行特征點(diǎn)響應(yīng)函數(shù)計(jì)算步驟:將自相關(guān)矩陣圖像的特征點(diǎn)響應(yīng)函數(shù)計(jì)算分配給不同的線程以實(shí)現(xiàn)并行計(jì)算。
[0032]并行特征點(diǎn)響應(yīng)函數(shù)計(jì)算步驟進(jìn)一步具體為:將自相關(guān)矩陣圖像劃分為NXN的圖像塊,即每塊含N行,每行含N個(gè)自相關(guān)矩陣;將每個(gè)圖像塊分配給不同的線程,即需要N2個(gè)線程;每個(gè)線程并行計(jì)算每個(gè)圖像塊的特征點(diǎn)響應(yīng)函數(shù)。
[0033]步驟四:并行非極大值抑制步驟:將特征點(diǎn)響應(yīng)函數(shù)圖像的非極大值抑制操作分配給不同的線程以實(shí)現(xiàn)并行計(jì)算。
[0034]并行非極大值抑制步驟進(jìn)一步具體為:將特征點(diǎn)響應(yīng)函數(shù)圖像劃分為NXN的圖像塊,即每塊含N行,每行含N個(gè)特征點(diǎn)響應(yīng)函數(shù);將每個(gè)圖像塊分配給不同的線程,即需要N2個(gè)線程;每個(gè)線程并行計(jì)算每個(gè)圖像塊的最終特征點(diǎn)。
[0035]下面結(jié)合附圖及實(shí)例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。
[0036]應(yīng)該指出,此處所描述的具體實(shí)施實(shí)例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本實(shí)例在以本發(fā)明技術(shù)方案為前提下進(jìn)行實(shí)施,給出了詳細(xì)的實(shí)施方式和具體的操作過程,但本發(fā)明的保護(hù)范圍不限于下述的實(shí)例。
[0037]Harris特征點(diǎn)檢測(cè)算法計(jì)算流程共有4個(gè)步驟:梯度計(jì)算、高斯濾波、特征點(diǎn)響應(yīng)函數(shù)計(jì)算、非極大值抑制。通過對(duì)每個(gè)步驟進(jìn)行并行設(shè)計(jì),即可實(shí)現(xiàn)整體算法的并行化。根據(jù)目前圖像處理中實(shí)際的應(yīng)用需求,在算法的并行程序設(shè)計(jì)中各個(gè)步驟所處理的圖像區(qū)域均為除最外圍5行5列的區(qū)域