本發(fā)明涉及圖像融合
技術(shù)領(lǐng)域:
,尤其涉及一種基于cuda圖像融合并行計算的方法。
背景技術(shù):
:多源圖像融合是以圖像為研究對象的信息融合技術(shù),它把對同一目標或場景使用不同傳感器所獲得的不同圖像融合為一幅圖像,在融合后的圖像中能反映多重原始圖像的信息,從而協(xié)同利用多源圖像信息,使得不同形式的信息相互補充,達到對同一目標或場景的綜合描述目的,使之更適合視覺感知或計算機處理。圖像融合技術(shù)已經(jīng)被廣泛應(yīng)用到目標檢測、跟蹤和識別以及情景感知等領(lǐng)域,常見的有紅外圖像與可見光圖像的融合、遙感圖像融合等。如圖1所示,圖像融合過程首先是將原定義在圖像空間的圖像通過圖像變換算法轉(zhuǎn)化到另一些空間,然后利用這些空間的特有性質(zhì)進行處理,最后再轉(zhuǎn)換回圖像空間以得到所需的效果,對圖像變換域系數(shù)進行的一定的處理即為融合規(guī)則;如圖2所示,基于nsct算法的圖像融合時,分別對圖像進行分解(decompose),然后對變換后的子帶系數(shù)進行融合,最后利用nsct逆變換重構(gòu)(reconstruction)得到融合圖像。目前用于圖像融合的主流圖像變換算法包括基于小波分析的變換算法、基于多分辨率非下采樣理論的變換算法等,但由于包含大量的二維卷積以及大量迭代計算等,普遍存在計算效率較低、融合過程耗時長等問題,該問題也已經(jīng)成為圖像融合在實際使用中的主要制約因素之一。以小波變換為代表的多分辨率分析方法主要是利用人眼對局部對比度的變換比較敏感這一特性,根據(jù)一定的融合規(guī)則,在多幅原圖像中選擇出最顯著的特征,如邊緣、線段等,并將這些特征保留在最終的合成圖像中,該類算法盡管具有良好的時頻局部化特性,但由于需要通過卷積完成,計算復雜度高,而且不具備平移不變性,容易導致重構(gòu)圖像出現(xiàn)明顯的gibbs現(xiàn)象;為彌補上述缺點提出的多分辨率非下采樣的變換算法,如非下采樣輪廓波變換算法(nsct)等,是將圖像變換分為多尺度分解和方向分解兩步完成,每一步由特定的濾波器完成,但由于在運算過程中引入了大量的二維卷積計算,使得融合過程耗時過長。此外,不同融合規(guī)則的融合效果也不同,對于如基于耦合脈沖神經(jīng)網(wǎng)絡(luò)(pcnn)以及非負矩陣分解(nmf)等融合規(guī)則,具有較好處理效果,但是包含大量的迭代操作,進一步制約了圖像融合的性能。具體對于兩幅像素為256*256的圖像的融合,典型的如基于非下采樣輪廓波變換算法(nsct)以及非負矩陣分解(nmf)的融合框架的耗時長將達188.23s,這嚴重制約了圖像融合技術(shù)的實際使用。為了實現(xiàn)對圖像融合過程的加速,一種方法是降低算法的復雜性,但同時也會導致融合效果變差;另一種方法是將算法以并行的方式實現(xiàn),如采用dsp、fpga以及gpu等專門的硬件設(shè)備,其中g(shù)pu擁有優(yōu)秀的并行計算能力以及更高的存儲帶寬,計算能力遠高于cpu;cuda(computerunifieddevicearchitecture,統(tǒng)一計算設(shè)備架構(gòu))是在傳統(tǒng)gpgpu的基礎(chǔ)上推出的一種將gpu作為數(shù)據(jù)并行設(shè)備的軟硬件體系,可以借助c、c++等通用語言進行開發(fā),使得gpu的開發(fā)難度大大降低,同時利用gpu的并行計算能力獲得非??捎^的加速性能。但是目前基于gpu的圖像融合框架對算法本身要求較高,且通常融合效果差,僅能夠使用于特定的框架進行加速,即加速過程局限于單一算法,很難形成統(tǒng)一的對所有算法都適用的加速手段,這增加了開發(fā)的工作量以及復雜度,在實際使用中受限較多。中國專利申請cn105245841a公開一種利用cuda實現(xiàn)全景視頻監(jiān)控系統(tǒng),通過對多個視頻流進行拼接形成全景視頻,但該方法僅局限于同類傳感器獲得的視頻,不涉及多類傳感器圖像的融合處理,且是針對算法復雜度較低的拼接算法,復雜度遠小于圖像融合的計算復雜度。技術(shù)實現(xiàn)要素:本發(fā)明要解決的技術(shù)問題就在于:針對現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明提供一種實現(xiàn)方法簡單、融合效率高且融合效果好的基于cuda圖像融合并行計算的方法。為解決上述技術(shù)問題,本發(fā)明提出的技術(shù)方案為:一種基于cuda圖像融合并行計算的方法,步驟包括:s1.圖像分割:獲取待融合的源圖像并分別進行分割,得到分割后的多個子圖像;s2.并行融合:將各源圖像的子圖像分別一一對應(yīng)構(gòu)成多組待融合子圖像,各組所述待融合子圖像分別通過不同cuda核心并行進行圖像融合處理,得到多組融合后子圖像;s3.圖像拼接:將所述步驟s2得到的各組融合后子圖像進行拼接,得到最終的融合后圖像。作為本發(fā)明的進一步改進:所述步驟s1中進行分割時,具體使得相鄰子圖像之間具有指定大小的數(shù)據(jù)重疊;所述步驟s3中進行拼接前,去除所述數(shù)據(jù)重疊。作為本發(fā)明的進一步改進:所述步驟s1中進行分割時,具體將m*n大小的源圖像等分分割為多個(m/a+1)*(n/a+1)大小的子圖像,其中a為等分的數(shù)量。作為本發(fā)明的進一步改進:述步驟s1進行分割前還包括對源圖像進行包括配準的預(yù)處理步驟。作為本發(fā)明的進一步改進,所述步驟s2中進行圖像融合處理的具體步驟為:s21.將各組所述待融合子圖像的數(shù)據(jù)存儲在cuda的全局存儲器中;s22.將所述全局存儲器中各組待融合子圖像的數(shù)據(jù)分別傳輸至cuda的不同線程塊中;s23.各個所述線程塊并行對接收到的所述待融合子圖像進行包括圖像變換、系數(shù)融合的圖像融合處理。作為本發(fā)明的進一步改進:所述步驟s23中圖像變換、系數(shù)融合時,具體將指定計算過程通過并行執(zhí)行。作為本發(fā)明的進一步改進:所述步驟s23中圖像變換、系數(shù)融合時,具體將二維卷積的計算過程、圖像區(qū)域能量計算過程、矩陣分解計算過程中一種或多種計算過程通過并行執(zhí)行。作為本發(fā)明的進一步改進:所述圖像變換具體采用非下采樣輪廓波變換算法;所述系數(shù)融合具體采用非負矩陣分解算法。作為本發(fā)明的進一步改進:所述待融合的源圖像分別通過不同類型的傳感器采集獲得。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:1)本發(fā)明基于cuda圖像融合并行計算的方法,利用圖像融合中原始數(shù)據(jù)相關(guān)性小、計算密集度高等特性,充分發(fā)揮cuda的并行計算優(yōu)勢,通過首先對輸入源圖像進行分割,可有效的降低融合過程中的計算復雜度,再結(jié)合cuda的并行能力來并行執(zhí)行分割后各子圖像的圖像融合,將各組融合后子圖像進行拼接即得到最終的融合后圖像,實現(xiàn)方法簡單,能夠?qū)崿F(xiàn)圖像融合計算的加速,有效提高融合性能;2)本發(fā)明基于cuda圖像融合并行計算的方法,通過首先對源圖像進行分割,能夠大大減少后續(xù)融合計算的計算復雜度,同時分割過程與具體的融合算法無關(guān),能夠降低對使用融合算法的要求,使得融合過程中不需要局限于特定的單一融合框架,能夠適用于各種圖像變換算法以及融合規(guī)則,通用性強;3)本發(fā)明基于cuda圖像融合并行計算的方法,基于gpu的硬件特點,將cuda并行計算在gpu中完成,每一組待融合子圖像的融合過程為一個并行函數(shù),在不同的線程塊中進行處理,不同線程塊之間是并行執(zhí)行,從而實現(xiàn)子圖像之間的并行處理,提高圖像融合效率;進一步利用多個線程來實現(xiàn)融合算法的并行,通過算法本身的并行性進一步提高融合性能。附圖說明圖1是傳統(tǒng)的圖像融合方法的實現(xiàn)流程示意圖。圖2是傳統(tǒng)的基于nsct算法的圖像融合方法實現(xiàn)原理示意圖。圖3是本實施例基于cuda圖像融合并行計算的方法的實現(xiàn)流程示意圖。圖4是本實施例執(zhí)行圖像分割的實現(xiàn)原理示意圖。圖5是本發(fā)明具體實施例中對一副輸入源圖像進行分割的過程示意圖。圖6是本實施例基于cuda執(zhí)行圖像融合的實現(xiàn)原理示意圖。圖7是本實施例基于cuda并行計算的具體實現(xiàn)原理示意圖。圖8是本發(fā)明具體實施例中采用nsct變換算法的實現(xiàn)原理示意圖。圖9是本發(fā)明具體實施例中對紅外圖像與可見光圖像融合得到的處理結(jié)果示意圖。具體實施方式以下結(jié)合說明書附圖和具體優(yōu)選的實施例對本發(fā)明作進一步描述,但并不因此而限制本發(fā)明的保護范圍。以下對兩幅圖像進行融合為例對本發(fā)明基于cuda圖像融合并行計算的方法進行具體說明,兩幅以上圖像融合處理時具有與本實施例相同的原理。如圖3所示,本實施例基于cuda圖像融合并行計算的方法,步驟包括:s1.圖像分割:獲取待融合的源圖像并分別進行分割,得到分割后的多個子圖像;s2.并行融合:將各源圖像的子圖像分別一一對應(yīng)構(gòu)成多組待融合子圖像,各組待融合子圖像分別通過不同cuda核心并行進行圖像融合處理,得到多組融合后子圖像;s3.圖像拼接:將所述步驟s2得到的各組融合后子圖像進行拼接,得到最終的融合后圖像。本實施例利用圖像融合中原始數(shù)據(jù)相關(guān)性小、計算密集度高等特性,充分發(fā)揮cuda的并行計算優(yōu)勢,通過首先對輸入源圖像進行分割,可有效的降低融合過程中的計算復雜度,再結(jié)合cuda的并行能力來并行執(zhí)行分割后各子圖像的圖像融合,將各組融合后子圖像進行拼接即得到最終的融合后圖像,實現(xiàn)方法簡單,能夠?qū)崿F(xiàn)圖像融合計算的加速,有效提高融合性能;另外基于cuda并行技術(shù)實現(xiàn)并行圖像融合,無需額外的硬件設(shè)備,支持c/c++等高級語言,圖像融合框架易于實現(xiàn),且相比于用如matlab語言等語言的融合算法,本實施例基于cuda的圖像融合性能更高。由于原始數(shù)據(jù)相關(guān)性較小,如圖4所示,本實施例在對源圖像進行具體的圖像變換之前,首先對源圖像進行分割,即將輸入的高維圖像數(shù)據(jù)分割成若干個低維的子圖像(g1,g2,……,gi,……,gn),其中g(shù)i為分割得到的第i個子圖像,圖像分割完成后再執(zhí)行后續(xù)的并行計算。傳統(tǒng)的圖像融合框架都包含大量的二維卷積計算及迭代計算,且傳統(tǒng)的基于cuda加速的圖像融合中是直接對源圖像進行圖像變換相比,本實施例通過對源圖像進行圖像分割,能夠大大減少后續(xù)融合計算的計算復雜度,且分割過程與具體的融合算法無關(guān),因而相比于傳統(tǒng)的基于cuda的加速方法,還能夠降低對使用融合算法的要求,使得融合過程中不需要局限于單一的特定融合框架,能夠適用于現(xiàn)有的各種圖像變換算法以及融合規(guī)則,通用性強。本實施例中,步驟s1中進行分割時,進一步使得相鄰子圖像之間具有指定大小的數(shù)據(jù)重疊。如圖4所示,相鄰子圖像數(shù)據(jù)gi之間有部分數(shù)據(jù)重疊,即每一組數(shù)據(jù)gi的開始處都包含其前一組數(shù)據(jù)gi-1的若干個值(圖中陰影部分),在末尾處包含后一組數(shù)據(jù)gi+1的若干個值。通過在分割過程中保證相鄰子圖像的邊緣處有足夠的數(shù)據(jù)重疊,能夠消除圖像尺寸分割可能引起的對融合效果的影響。子圖像尺寸中的+1即表示分割邊緣的數(shù)據(jù)重疊(此處以二維卷積計算模板的尺寸為3*3為例)。本實施例中,步驟s1中進行分割時,具體將m*n大小的源圖像等分分割為多個(m/a+1)*(n/a+1)大小的子圖像,其中a為等分的數(shù)量。以對m*n大小的源圖像進行分割為例,假設(shè)融合過程中用到的模板大小為3*3,對于m*n大小的源圖像的行、列分別進行a等分得到共a2個尺寸相同的子圖像,引入分割邊緣重疊后,得到每個子圖像為(m/a+1)*(n/a+1)大小的矩陣。二維卷積的計算復雜度可以表示為o(m*n*size),其中,m、n分別為待處理的圖像的像素,size為計算二維卷積用到的計算模板的大小,size的典型值為3*3,以二維卷積計算模板的尺寸為3*3為例,本實施例通過將源圖像分割成a2個大小為(m/a+1)*(n/a+1)的子圖像進行計算,將分割后子圖像的像素帶入二維卷積的復雜度計算公式并與未分割時比較,可以獲得o(a2)的速度提升,子圖像尺寸中的+1即表示分割邊緣的數(shù)據(jù)重疊。如圖5為本發(fā)明具體實施例中對一副輸入源圖像進行分割的過程,其中圖(a)為輸入源圖像,具體像素為512*512,采用上述分割方法對原始圖像行、列分別進行二等分,可以獲得4個相同大小的子圖像,引入邊緣重疊機理后,每個子圖像的尺寸為257*257,后續(xù)將該4個子圖像傳入到gpu的不同線程塊中進行并行計算。本實施例中,待融合的源圖像具體分別通過不同傳感器采集得到,步驟s1進行分割前還包括對源圖像進行包括配準的預(yù)處理步驟,再對各配準后的源圖像執(zhí)行上述空間尺寸的分割,可以實現(xiàn)多類傳感器圖像的融合處理。本實施例通過步驟s1將各源圖像分割為多個子圖像后,再通過步驟s2將步驟s1得到的各子圖像在gpu的并行運算單元進行處理,以執(zhí)行圖像融合并行計算?;赾uda的流計算模型可以分為三個層次,即線程格、線程塊以及線程,頂層為線程格(grid),每個線程格是由若干個線程塊組成,每個線程塊又由若干個線程構(gòu)成,線程作為最小的計算單元,線程塊中的所有線程可以同時執(zhí)行,且每個線程都有屬于自己的私有寄存器,同時線程塊內(nèi)提供共享寄存器供該線程塊內(nèi)的所有線程使用,同一線程格內(nèi)部的線程塊之間可以實現(xiàn)并行計算。本實施例中,步驟s2中進行圖像融合處理的具體步驟為:s21.將各組待融合子圖像的數(shù)據(jù)存儲在cuda的全局存儲器中;s22.將全局存儲器中各組待融合子圖像的數(shù)據(jù)分別傳輸至cuda的不同線程塊中;s23.各個線程塊并行對接收到的所述待融合子圖像進行包括圖像變換、系數(shù)融合的圖像融合處理。本實施例將步驟s1分割得到的所有的子圖像數(shù)據(jù)都存儲在gpu的全局存儲器(globalmemory)中,全局存儲器中的圖像數(shù)據(jù)再以多個kernal函數(shù)的形式在不同的cuda計算核心進行計算,在每個并行運算單元內(nèi)具體執(zhí)行包括圖像變換算法以及對圖像變換系數(shù)的處理(融合規(guī)則的實現(xiàn)),實現(xiàn)不同子圖像之間的并行計算。本實施例中,圖像變換具體采用nsct非下采樣輪廓波變換算法,系數(shù)融合具體采用nmf基于非負矩陣分解。采用上述圖像變換算法以及融合規(guī)則,實現(xiàn)簡單且所得到的融合效果好,當然還可以根據(jù)實際需求選擇其他圖像變換算法以及融合規(guī)則。如圖6、7所示,本實施例以融合兩幅圖像image1、image2為例,通過主機(host)設(shè)備以及計算設(shè)備(gpu)實現(xiàn)圖像融合并行計算,其中cuda并行計算在gpu中完成,且運行的cuda并行計算函數(shù)稱為kernal函數(shù);將步驟1)中得到的各源圖像的子圖像分別一一對應(yīng)構(gòu)成多組待融合子圖像,如image1、image2的子圖像g1構(gòu)成第一組待融合子圖像,image1、image2的子圖像g2構(gòu)成第二組待融合子圖像,依此類推,image1、image2的子圖像gn構(gòu)成第n組待融合子圖像,各組待融合子圖像分別發(fā)送給gup中不同線程塊,每組待融合子圖像作為一個kernal函數(shù)在gpu的并行運算單元進行處理,將各組待融合子圖像數(shù)據(jù)以多個kernal函數(shù)的形式在不同的cuda計算核心進行計算,即各組待融合子圖像對應(yīng)的kernal函數(shù)分別在不同的線程塊中進行處理,不同線程塊之間并行執(zhí)行,實現(xiàn)了子圖像之間的并行融合處理。本實施例充分考慮所采用的圖像融合數(shù)據(jù)自身特性以及cuda硬件結(jié)構(gòu)的特點,結(jié)合圖像分割,基于cuda并行計算的方式來實現(xiàn)融合過程的加速,可以大大減少計算復雜度,同時提高融合效率。本實施例中,步驟s23中圖像變換、系數(shù)融合時,進一步將圖像變換算法、融合規(guī)則中指定計算過程通過并行執(zhí)行,即在對單個子圖像進行處理時引入算法的并行。在各線程塊內(nèi)部,由于各線程之間存在私有寄存器以及共享寄存器,本實施例進一步利用多個線程來實現(xiàn)融合算法的并行;步驟s1中對圖像的分割處理同時還能夠支持其它可行的并行執(zhí)行,通過在gup各個并行計算單元內(nèi)部將具體算法并行實現(xiàn),可以進一步提高圖像融合的整體并行性能,從而進一步提高融合速度。本實施例中,步驟s23中圖像變換、系數(shù)融合時,具體將nsct圖像變換算法中二維卷積的計算過程、圖像re區(qū)域能量計算過程、基于非負矩陣分解nmf的系數(shù)融合算法中矩陣nmf分解過程中一種或多種過程通過并行執(zhí)行,當然還可以將圖像變換算法、融合規(guī)則中其他可行的計算過程并行執(zhí)行。本實施例將所有源圖像的第i個子圖像在經(jīng)過上述并行融合后,通過步驟s3將得到的所有子圖像進行拼接,最終得到完整的融合圖像。本實施例在拼接過程中,對分割邊緣進行一定的處理,包括去除s1步驟中引入的重疊數(shù)據(jù)。具體的以矩陣形式表現(xiàn)為,經(jīng)s2步驟處理得到的融合后子圖像的像素為(m/a+1)*(n/a+1),去除重疊數(shù)據(jù)后,融合子圖像像素為(m/a)*(n/a),再進行子圖像的拼接,最終得到并行融合后的完整融合圖像。如圖8所示為本發(fā)明具體實施例中采用nsct變換算法的實現(xiàn)過程,其中圖(a)為nsct變換算法的實現(xiàn)原理,圖(b)為nsct中方向分解算法(nsdfb)的原理。分析方向分解算法可知,其計算過程中包含大量的二維卷積計算,同時對于變換系數(shù)的處理過程中包含大量的迭代計算,兩種計算過程的共同特點都是數(shù)據(jù)相關(guān)性較小,但對數(shù)據(jù)量的大小十分敏感。nsct對圖像變換的過程可以分為圖像的多尺度分解以及方向分解兩步完成,多尺度分解利用非下采樣拉普拉斯濾波器(nlp)實現(xiàn),方向分解利用非下采樣方向濾波器組實現(xiàn)。如圖(b)所示,對于方向分解算法(nsdfb),計算過程中包含大量的二維卷積操作,需要大量的矩陣卷積運算;在構(gòu)造二維nsdfb時,一種高效的途徑是對一維濾波器以mapping的方式進行提升,具體的表現(xiàn)為如下的lifting結(jié)構(gòu):其中p、q分別為一維低通濾波器和一維高通濾波器。在通過mapping方式構(gòu)造二維nsdfb后,對圖像數(shù)據(jù)進行方向分解的過程以如下二維卷積的形式實現(xiàn):其中mr,mc,nr,nc分別為矩陣a、b的行數(shù)和列數(shù)。從上述二維卷積的計算公式可以看出,計算量與矩陣的行數(shù)與列數(shù)的乘積成正比,采用本實施例上述圖像融合并行計算方法,通過對源圖像進行分割后,當圖像等分成a份后,通過并行計算的方式至少可以獲得o(a2)的性能提升,即可以有效的降低計算量,進一步驗證了本實施例上述基于cuda圖像融合并行計算的方法的可行性及性能。對于系數(shù)融合的系數(shù)處理規(guī)則,如pcnn、nmf等,具有如上所述相同的加速機理。如圖9所示為本發(fā)明具體實施例中采用上述方法對紅外圖像與可見光圖像融合得到的處理結(jié)果,其中(a)圖為紅外傳感器采集到的圖像,(b)圖為可見光傳感器采集到的圖像,(c)圖為未對源圖像分割時獲得的圖像融合效果圖,(d)圖為對源圖像進行四等分后最終獲得的融合圖像,(e)圖為(c)圖與(d)的差圖,從(e)圖可以看出源圖像分割對融合效果影響極小,即本實施例上述方法能夠基于cuda實現(xiàn)有效融合加速,同時能夠保證融合效果。為進一步驗證本實施例上述方法的有效性,在基于matlab平臺上分別進行了未對源圖像做分割處理的融合、對源圖像進行四等分時的融合以及對源圖像進行四等分時的融合試驗,輸入源圖像為經(jīng)配準后的可見光圖像和紅外圖像,像素為512*128。如下表1示出了對于同一融合算法采取不同分割方式時耗時、熵的對比試驗結(jié)果,包括未對源圖像做分割處理的融合用時、對源圖像進行四等分時的融合用時以及對源圖像進行十六等分時的融合用時,以及不同處理方式得到的融合圖像的圖像熵,由試驗結(jié)果可知,在不降低融合效果的同時,本實施例上述方法還可以明顯提高圖像融合的速度。表1:同一融合算法不同分割方式的對比表。處理方式未分割四等分十六等分耗時(s)14.0615.12熵6.53766.53736.5373上述只是本發(fā)明的較佳實施例,并非對本發(fā)明作任何形式上的限制。雖然本發(fā)明已以較佳實施例揭露如上,然而并非用以限定本發(fā)明。因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明技術(shù)實質(zhì)對以上實施例所做的任何簡單修改、等同變化及修飾,均應(yīng)落在本發(fā)明技術(shù)方案保護的范圍內(nèi)。當前第1頁12