本發(fā)明涉及一種紅外圖像細(xì)節(jié)增強(qiáng)方法和一種紅外圖像細(xì)節(jié)增強(qiáng)裝置,屬于紅外圖像處理領(lǐng)域。
背景技術(shù):
紅外圖像采集設(shè)備的一大特點(diǎn)是有著很高的動(dòng)態(tài)范圍(如地面與天空),而某些目標(biāo)與其背景或者目標(biāo)局部的溫差卻相對(duì)較小。因此為了能以足夠高的精度來(lái)量化大動(dòng)態(tài)紅外場(chǎng)景,高性能熱成像系統(tǒng)通常都采用14bits或更高精度的AD對(duì)探測(cè)器輸出信號(hào)進(jìn)行采樣和量化。而通常的顯示設(shè)備或快速處理只要求8bits數(shù)據(jù)寬度,所以14bits的高精度數(shù)據(jù)需要經(jīng)過(guò)壓縮處理。
目前,常用的線性映射(如AGC)或者非線性映射(如直方圖均衡)等壓縮方法,都不能很好的解決探測(cè)到的大動(dòng)態(tài)圖像信息顯示問(wèn)題,因而大動(dòng)態(tài)圖像壓縮可能會(huì)造成原有信息丟失,在顯示圖像中表現(xiàn)為圖像細(xì)節(jié)的損失,使得這些方法在大動(dòng)態(tài)圖像的壓縮中普遍存在這種缺陷。圖像細(xì)節(jié)增強(qiáng)(DDE)技術(shù)是一種高級(jí)非線性圖像增強(qiáng)處理算法,可以保留高動(dòng)態(tài)范圍圖像中的細(xì)節(jié),解決在高動(dòng)態(tài)范圍場(chǎng)景中定位低對(duì)比度目標(biāo)的難題。
相比于傳統(tǒng)的圖像線性和非線性映射壓縮方法,DDE能最大程度保留紅外圖像的細(xì)節(jié),圖像對(duì)比度高,局部細(xì)節(jié)清晰?;谏鲜鲂阅芴匦?,DDE技術(shù)讓設(shè)備操作員在溫度變化十分顯著的場(chǎng)景中,也能夠看清紅外圖像細(xì)節(jié)。在對(duì)紅外探測(cè)器采集的14bits圖像數(shù)據(jù)進(jìn)行DDE處理時(shí),通常利用FPGA或DSP架構(gòu)實(shí)現(xiàn),但是這種實(shí)現(xiàn)方式的處理效率較低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種紅外圖像細(xì)節(jié)增強(qiáng)方法和一種紅外圖像細(xì)節(jié)增強(qiáng)裝置,用以解決在現(xiàn)有的DDE方法處理效率較低的問(wèn)題。
為實(shí)現(xiàn)上述目的,本發(fā)明的方案包括一種紅外圖像細(xì)節(jié)增強(qiáng)方法,利用SOC架構(gòu)對(duì)紅外圖像進(jìn)行處理,該紅外圖像細(xì)節(jié)增強(qiáng)方法為:
利用SOC架構(gòu)中的ARM進(jìn)行以下操作:
對(duì)圖像數(shù)據(jù)依次按照濾波預(yù)算法進(jìn)行濾波處理和按照灰度拉伸算法進(jìn)行灰度處理,得到第一處理圖像;
對(duì)所述第一處理圖像依次按照限制對(duì)比度均衡算法進(jìn)行對(duì)比度處理和按照局部直方圖雙線性插值算法進(jìn)行直方圖插值處理,得到第二處理圖像;
利用SOC架構(gòu)中的GPU進(jìn)行以下操作:
對(duì)所述第二處理圖像按照高頻銳化算法進(jìn)行銳化處理,得到第三處理圖像;將所述第三處理圖像與第一處理圖像按照局部直方圖融合算法進(jìn)行融合處理,處理后的圖像數(shù)據(jù)即是得到圖像細(xì)節(jié)增強(qiáng)處理后的紅外圖像。
ARM與GPU之間的數(shù)據(jù)傳輸方式為:ARM將數(shù)據(jù)發(fā)送至預(yù)先建立的緩沖隊(duì)列,GPU從所述預(yù)先建立的緩沖隊(duì)列異步獲取數(shù)據(jù)。
實(shí)現(xiàn)對(duì)所述第二處理圖像按照高頻銳化算法進(jìn)行銳化處理的手段為:將第二處理圖像分為若干個(gè)圖像塊,并為所述第二處理圖像分配與所述圖像塊個(gè)數(shù)相同的線程束,圖像塊與線程束一一對(duì)應(yīng),以線程束為處理單位對(duì)所述第二處理圖像的每個(gè)圖像塊進(jìn)行銳化處理。
一種紅外圖像細(xì)節(jié)增強(qiáng)裝置,包括ARM和GPU,
所述ARM執(zhí)行以下處理模塊:
濾波處理模塊,用于對(duì)圖像數(shù)據(jù)按照濾波預(yù)算法進(jìn)行濾波處理;
灰度處理模塊,用于對(duì)經(jīng)所述濾波處理后的圖像數(shù)據(jù)按照灰度拉伸算法進(jìn)行灰度處理;
對(duì)比度處理模塊,用于對(duì)經(jīng)所述灰度處理后的圖像數(shù)據(jù)按照限制對(duì)比度均衡算法進(jìn)行對(duì)比度處理;
直方圖插值處理模塊,用于對(duì)經(jīng)對(duì)比度處理后的圖像數(shù)據(jù)按照局部直方圖雙線性插值算法進(jìn)行直方圖插值處理;
所述GPU執(zhí)行以下處理模塊:
銳化處理模塊,用于對(duì)經(jīng)所述直方圖插值處理后的圖像數(shù)據(jù)按照高頻銳化算法進(jìn)行銳化處理;
直方圖融合模塊,用于將經(jīng)所述灰度處理后的圖像數(shù)據(jù)與經(jīng)所述銳化處理后的圖像數(shù)據(jù)進(jìn)行按照局部直方圖融合算法進(jìn)行融合處理,處理后的圖像數(shù)據(jù)即是得到圖像細(xì)節(jié)增強(qiáng)處理后的紅外圖像。
ARM與GPU之間的數(shù)據(jù)傳輸方式為:ARM將數(shù)據(jù)發(fā)送至預(yù)先建立的緩沖隊(duì)列,GPU從所述預(yù)先建立的緩沖隊(duì)列異步獲取數(shù)據(jù)。
所述銳化處理模塊實(shí)現(xiàn)對(duì)經(jīng)所述灰度處理后的圖像數(shù)據(jù)進(jìn)行銳化處理的手段是:將經(jīng)所述灰度處理后的圖像數(shù)據(jù)分為若干個(gè)圖像塊,為所述經(jīng)所述灰度處理后的圖像數(shù)據(jù)分配與所述圖像塊個(gè)數(shù)相同的線程束,圖像塊與線程束一一對(duì)應(yīng),以線程束為處理單位對(duì)所述經(jīng)所述灰度處理后的圖像數(shù)據(jù)的每個(gè)圖像塊進(jìn)行銳化處理。
首先,本發(fā)明提供的紅外圖像細(xì)節(jié)增強(qiáng)方法中,通過(guò)對(duì)圖像數(shù)據(jù)進(jìn)行濾波處理、灰度處理、對(duì)比度處理、直方圖插值處理、銳化處理以及直方圖融合處理后,得到圖像細(xì)節(jié)增強(qiáng)處理后的紅外圖像。該方法能夠最大程度保留紅外圖像的細(xì)節(jié),圖像對(duì)比度高,局部細(xì)節(jié)清晰;而且讓設(shè)備操作員在溫度變化十分顯著的場(chǎng)景中,也能夠看清紅外圖像細(xì)節(jié)。所以,該增強(qiáng)方法可以保留高動(dòng)態(tài)范圍圖像中的細(xì)節(jié),解決在高動(dòng)態(tài)范圍場(chǎng)景中定位低對(duì)比度目標(biāo)的難題。
并且,本發(fā)明的紅外圖像細(xì)節(jié)增強(qiáng)方式是利用SOC架構(gòu)實(shí)現(xiàn)的,利用SOC架構(gòu)中的ARM和GPU,兩者相互合作來(lái)共同實(shí)施該圖像增強(qiáng)方法,ARM進(jìn)行下一幀的濾波預(yù)處理、灰度拉伸、限制對(duì)比度均衡、局部直方圖雙線性插值處理,將高頻銳化和局部直方圖融合部分由GPU執(zhí)行,從而充分利用的空閑的GPU資源,將可并行的部分使用合適的方式由GPU執(zhí)行,充分利用GPU計(jì)算單元多、并行度高的優(yōu)點(diǎn),規(guī)避GPU不善于處理分支多、相關(guān)性高的運(yùn)算的弱點(diǎn),充分利用計(jì)算資源,從而實(shí)現(xiàn)了ARM、GPU的負(fù)載均衡。這種逐幀異構(gòu)計(jì)算設(shè)計(jì)減輕了ARM的負(fù)荷,提高了執(zhí)行效率,另一方面,增加系統(tǒng)的總體吞吐率,將最主要的計(jì)算放到GPU上實(shí)現(xiàn),更加容易地提高性能。所以,該圖像增強(qiáng)方式能夠極大地提升圖像處理的效率。
附圖說(shuō)明
圖1是該圖像增強(qiáng)方法的整體流程圖;
圖2是基于ARM和GPU的增強(qiáng)裝置與外部設(shè)備的連接示意圖;
圖3是ARM線程分配與濾波預(yù)處理的流程示意圖;
圖4是ARM線程分配與變?cè)鲆婢€性拉伸的流程示意圖;
圖5是ARM線程分配與限值局部直方圖均衡的流程示意圖;
圖6是使用GPU優(yōu)化高頻銳化的線程映射關(guān)系示意圖;
圖7是ARM線程分配與局部直方圖雙線性插值的流程示意圖;
圖8是GPU線程分配與高頻銳化及疊加融合的流程示意圖;
圖9是GPU上傳、下載、執(zhí)行時(shí)間的重疊方式示意圖。
具體實(shí)施方式
本發(fā)明提供的方法基于配置有ARM和GPU的嵌入式SOC架構(gòu)電子設(shè)備,即利用SOC架構(gòu)來(lái)實(shí)現(xiàn)本發(fā)明提供的DDE方法。在實(shí)際應(yīng)用中,本發(fā)明提供的方法可用于高性能熱成像實(shí)時(shí)采集傳輸顯示領(lǐng)域,例如監(jiān)控、遙感、測(cè)繪、軍事偵察等;特別在夜間溫度變化十分顯著的場(chǎng)景中,能夠最大程度保留圖像細(xì)節(jié),有效提高圖像對(duì)比度。
如圖1所示,本發(fā)明提供的一種基于ARM和GPU的紅外DDE方法,應(yīng)用于配置有中央處理器ARM和圖形處理器GPU的嵌入式SOC架構(gòu)電子設(shè)備,如圖1所示,該方法包括以下步驟:
首先,接收?qǐng)D像數(shù)據(jù),其中圖像數(shù)據(jù)為經(jīng)過(guò)紅外探測(cè)器采集的14bits圖像數(shù)據(jù);
然后,利用SOC架構(gòu)中的中央處理器ARM進(jìn)行以下操作:
對(duì)接收到的圖像數(shù)據(jù)依次按照濾波預(yù)算法進(jìn)行濾波處理和按照灰度拉伸算法進(jìn)行灰度處理,得到第一處理結(jié)果;
對(duì)第一處理圖像依次按照限制對(duì)比度均衡算法進(jìn)行對(duì)比度處理和按照局部直方圖雙線性插值算法進(jìn)行直方圖插值處理,得到第二處理結(jié)果;
利用SOC架構(gòu)中的圖形處理器GPU進(jìn)行以下操作:
對(duì)第二處理結(jié)果按照高頻銳化算法進(jìn)行銳化處理,得到第三處理結(jié)果;將第三處理結(jié)果與第一處理結(jié)果按照局部直方圖融合算法進(jìn)行融合處理,處理后的圖像數(shù)據(jù)即是得到圖像細(xì)節(jié)增強(qiáng)處理后的紅外圖像。
所以,由于上述圖像處理過(guò)程是根據(jù)中央處理器ARM或圖形處理器GPU中設(shè)置的軟件程序來(lái)進(jìn)行的,所以該紅外DDE方法可以描述為:調(diào)用電子設(shè)備的ARM對(duì)圖像數(shù)據(jù)順序進(jìn)行濾波預(yù)算法處理、灰度拉伸算法處理,得到第一處理結(jié)果,再順序進(jìn)行限制對(duì)比度均衡算法和局部直方圖雙線性插值算法處理,得到第二處理結(jié)果;調(diào)用電子設(shè)備的GPU對(duì)第二處理結(jié)果進(jìn)行高頻銳化算法處理,得到第三處理結(jié)果,將第三處理結(jié)果與第一處理結(jié)果進(jìn)行局部直方圖融合算法處理,得到DDE處理后的紅外圖像。
為了便于直觀理解,結(jié)合圖1對(duì)本發(fā)明方法的執(zhí)行流程進(jìn)行說(shuō)明,圖1以及后面的附圖中涉及到的CPU均是處理器ARM,如圖1所示,ARM對(duì)圖像數(shù)據(jù)順序進(jìn)行均值濾波、中值濾波預(yù)處理和14位到10位灰度線性拉伸處理,得到第一處理結(jié)果;再對(duì)第一處理結(jié)果順序進(jìn)行限制對(duì)比度均衡算法和局部直方圖雙線性插值算法處理。
如圖2-8所示為該圖像增強(qiáng)方法的每個(gè)步驟的流程示意圖,下面結(jié)合附圖對(duì)該方法中的每個(gè)步驟進(jìn)行詳細(xì)地說(shuō)明。
在本實(shí)施例中,針對(duì)于配置有多核ARM的嵌入式SOC架構(gòu)電子設(shè)備,本發(fā)明可以同時(shí)多線程處理圖像數(shù)據(jù),并根據(jù)數(shù)據(jù)并行度和系統(tǒng)硬件性能為各路圖像數(shù)據(jù)分配ARM內(nèi)核,以使得ARM等硬件資源得到充分利用,避免出現(xiàn)過(guò)分空閑的情況,提高整體數(shù)據(jù)吞吐率;此外,本發(fā)明可以構(gòu)建多通道圖像并行ARM和GPU逐幀異構(gòu)框架,實(shí)時(shí)處理圖像數(shù)據(jù),更符合實(shí)際應(yīng)用的場(chǎng)景,如圖2所示。
如圖3所示,ARM對(duì)圖像數(shù)據(jù)順序進(jìn)行均值濾波和中值濾波預(yù)處理之后得到濾波預(yù)處理圖像數(shù)據(jù)。其中,“椒鹽”描述的是噪聲的形式,“椒”為黑點(diǎn),“鹽”為白點(diǎn),“椒鹽噪聲”就是在圖像上隨機(jī)出現(xiàn)黑色白色的像素點(diǎn)噪聲。
緊接著,如圖4所示,ARM對(duì)濾波預(yù)處理圖像數(shù)據(jù)進(jìn)行14位到10位灰度線性拉伸處理,得到第一處理結(jié)果。
如圖5和6所示,為ARM根據(jù)第一處理結(jié)果進(jìn)行相應(yīng)地處理之后獲取得到第二處理結(jié)果的流程圖,具體為:對(duì)第一處理圖像依次按照限制對(duì)比度均衡算法進(jìn)行對(duì)比度處理和按照局部直方圖雙線性插值算法進(jìn)行直方圖插值處理,得到第二處理結(jié)果。
所以,通過(guò)ARM能夠最終獲取根據(jù)局部直方圖雙線性插值算法進(jìn)行直方圖插值處理而得到的處理結(jié)果。
經(jīng)過(guò)ARM處理后得到的第二處理結(jié)果輸出給GPU,ARM與GPU之間的數(shù)據(jù)傳遞方式可以為:ARM將數(shù)據(jù)發(fā)送至預(yù)先建立的緩沖隊(duì)列,GPU從預(yù)先建立的緩沖隊(duì)列異步獲取數(shù)據(jù)?;谇笆鰯?shù)據(jù)傳遞方式,ARM、GPU各個(gè)步驟可以完全異步執(zhí)行,而且耦合很低,使得擴(kuò)展通過(guò)GPU個(gè)數(shù)、ARM核心數(shù)、緩沖隊(duì)列長(zhǎng)度來(lái)提高計(jì)算能力簡(jiǎn)單易行。
由于在并行規(guī)模小的低分辨率圖像解碼中,高頻銳化環(huán)節(jié)的GPU處理并不快于串行的ARM處理,但是在高分辨率圖像的解碼中將高頻銳化環(huán)節(jié)的GPU處理速度與ARM接近,將計(jì)算任務(wù)分配到GPU,因此,可以根據(jù)圖像的分辨率值,在不影響解碼速度的前提下,決定將高頻銳化環(huán)節(jié)調(diào)度到GPU上,GPU對(duì)ARM輸送的第二處理結(jié)果按照高頻銳化算法進(jìn)行高頻銳化處理。
GPU可以使用一個(gè)專門(mén)的守護(hù)線程,負(fù)責(zé)顯存-內(nèi)存數(shù)據(jù)的傳輸以及與其他線程的通信,以便獲知讀取和寫(xiě)入目的緩沖的是否可用。前述專門(mén)的守護(hù)線程負(fù)責(zé)從ARM-GPU中間數(shù)據(jù)隊(duì)列取數(shù)據(jù),上傳到顯存,執(zhí)行GPU處理階段,將結(jié)果下傳到輸出緩沖數(shù)組的對(duì)應(yīng)位置中,同時(shí)負(fù)責(zé)與其他環(huán)節(jié)的ARM線程通信。ARM掃描線程得到GPU守護(hù)線程的隊(duì)列非空信號(hào)后,掃描一次輸出緩沖隊(duì)列,將索引最小的數(shù)據(jù)輸出。
一方面計(jì)算使用的計(jì)算線程可以根據(jù)需要擴(kuò)充,使用的GPU kernel的個(gè)數(shù)也可以設(shè)置為兩個(gè)以上,緩沖長(zhǎng)度也可以根據(jù)內(nèi)存任意調(diào)整,這樣擴(kuò)充同時(shí)計(jì)算能力以增加吞吐率十分簡(jiǎn)單,還可以自定義對(duì)ARM、GPU、內(nèi)存等硬件的適應(yīng)性的調(diào)優(yōu);另一方面實(shí)現(xiàn)了內(nèi)部高效的亂序并發(fā)解碼,而從程序外部看,輸出的序列順序與輸入序列相同,輸出保持原有的順序。
可以根據(jù)圖像數(shù)據(jù)在粗粒度上并行度高(codeblock之間),在細(xì)粒度上完全串行(codeblock自身)的特征,以及GPU一個(gè)Local size線程組內(nèi)部一次只能執(zhí)行一種指令的特點(diǎn),制訂GPU線程和數(shù)據(jù)之間的映射關(guān)系。具體為:在對(duì)第二處理結(jié)果按照高頻銳化算法進(jìn)行銳化處理時(shí),如圖7所示,將第二處理結(jié)果劃分為若干個(gè)數(shù)據(jù)塊,調(diào)用電子設(shè)備的GPU為第二處理結(jié)果中的每個(gè)圖像數(shù)據(jù)塊分配一個(gè)線程束Local size,數(shù)據(jù)塊與線程束一一對(duì)應(yīng),不同圖像數(shù)據(jù)塊對(duì)應(yīng)不同的線程束Local size;以Local size為處理單位對(duì)第二處理結(jié)果中的每個(gè)圖像數(shù)據(jù)塊進(jìn)行高頻銳化算法處理,得到第三處理結(jié)果。
具體的,以數(shù)據(jù)塊為單位進(jìn)行數(shù)據(jù)處理,數(shù)據(jù)塊之間獨(dú)立計(jì)算。數(shù)據(jù)塊內(nèi)部,不具有強(qiáng)迭代性和相關(guān)性,易于并行。圖像越大數(shù)據(jù)塊總量越多。因此并行方式為:1、數(shù)據(jù)塊間并發(fā),每個(gè)數(shù)據(jù)塊對(duì)應(yīng)一個(gè)線程束;2、OpenCL中的線程以Local size(一般個(gè)數(shù)為16)為單位進(jìn)行組織和調(diào)度;3、一個(gè)Local size一次只能執(zhí)行一個(gè)計(jì)算中的分支,高頻銳化算法內(nèi)部幾乎充滿分支,因此理想的做法是每16個(gè)線程只使用一個(gè)執(zhí)行計(jì)算,節(jié)省數(shù)據(jù)傳輸帶寬;4、將算數(shù)編碼所需的部分分支判斷操作轉(zhuǎn)換為查表運(yùn)算;5、使用共享內(nèi)存存儲(chǔ)中間結(jié)果。另外,在本實(shí)施例中,將第二處理結(jié)果中的每個(gè)像素定義為一個(gè)數(shù)據(jù)塊,那么,分配的線程束的個(gè)數(shù)就與像素的個(gè)數(shù)相同,并且線程束和像素之間是一一對(duì)應(yīng)的關(guān)系。
在由GPU負(fù)責(zé)執(zhí)行對(duì)第二處理結(jié)果的后續(xù)處理的情況下,ARM可以將第一處理結(jié)果發(fā)送至顯存,以便GPU快速獲取數(shù)據(jù)進(jìn)行處理。利用GPU的并行能力直接在顯存中將銳化之后得到的處理結(jié)果(第三處理結(jié)果)與第一處理結(jié)果進(jìn)行局部直方圖融合算法處理,以提高GPU執(zhí)行內(nèi)存讀取數(shù)據(jù)的效率。利用GPU的顯存緩存和ARM內(nèi)存緩存的互訪數(shù)據(jù)映射機(jī)制,以減少?gòu)膬?nèi)存到顯存的數(shù)據(jù)拷貝次數(shù),優(yōu)化的數(shù)據(jù)讀取速度。
電子設(shè)備的GPU執(zhí)行高頻銳化和局部直方圖融合,如圖8所示,可以包括:該模塊輸入16位數(shù)據(jù)線性拉伸圖像數(shù)據(jù),其中10位有效,輸入8位數(shù)據(jù)局部均衡增強(qiáng)數(shù)據(jù)。算法在GPU中并行執(zhí)行,一次計(jì)算2個(gè)float像素?cái)?shù)據(jù),需要320×512個(gè)線程,每個(gè)GPU kernel的global size分配320×512個(gè)線程,local size分配8×8個(gè)線程,線程數(shù)據(jù)之間沒(méi)有相關(guān)性,模塊實(shí)現(xiàn)流程如圖8所示。為了減少GPU訪存,因此本發(fā)明采用向量一次抓取圖像數(shù)據(jù)中兩個(gè)像素float2,并作向量運(yùn)算,以便減小GPU kernel函數(shù)的編譯指令數(shù)。
由此可見(jiàn),本發(fā)明的基于ARM和GPU的紅外DDE方法,在高分辨率圖像的解碼中調(diào)用GPU執(zhí)行高頻銳化算法的速度與ARM接近,將高頻銳化算法的執(zhí)行操作分配到GPU,一方面在不影響解碼速度的前提下減輕了ARM的負(fù)荷,另一方面充分利用的空閑的GPU資源,從而實(shí)現(xiàn)了ARM、GPU的負(fù)載均衡,增加系統(tǒng)的總體吞吐率。
另外,GPU執(zhí)行過(guò)程中可以進(jìn)行上傳、執(zhí)行、下載的并行化。具體的,使用GPU的Stream特性,在執(zhí)行當(dāng)前圖像解碼時(shí),完成將上一幀圖像的結(jié)果傳輸?shù)絻?nèi)存,并預(yù)先將下一幀圖像的數(shù)據(jù)讀取到緩存中,隱藏了數(shù)據(jù)傳輸?shù)臅r(shí)間。
在OpenCL定義的GPU接口主要分為三類:數(shù)據(jù)上傳、執(zhí)行并行計(jì)算,下載數(shù)據(jù)到內(nèi)存,三種操作都可以是異步的,但要正確獲取結(jié)果,要在正確的時(shí)間同步。這三類必須串行執(zhí)行,否則會(huì)發(fā)生邏輯錯(cuò)誤。OpenCL定義了新的結(jié)構(gòu)數(shù)據(jù)流stream,可以理解為上傳/執(zhí)行/下載序列的容器。OpenCL中同類型的操作無(wú)法并行,例如多個(gè)數(shù)據(jù)流stream之間的上傳操作只能是串行的。因此本發(fā)明提出了如圖9所示的基于stream的并行方式,圖中橫軸是操作實(shí)際的執(zhí)行時(shí)間,傾斜的縱軸是觸發(fā)時(shí)間,也就是調(diào)用操作接口的時(shí)間。一個(gè)反“L”型方框內(nèi)是一次循環(huán)內(nèi)的執(zhí)行內(nèi)容,可以看到采用如圖9所示的異步API調(diào)用順序,上傳到顯存、下載到內(nèi)存以及執(zhí)行運(yùn)算時(shí)間被很好地重疊,實(shí)際用時(shí)由三者之和減少為三者中最長(zhǎng)的那個(gè),顯著地減少了總體時(shí)間。
較佳的,針對(duì)ARM和GPU逐幀異構(gòu)并行的解碼方案。具體的,將實(shí)時(shí)采集的圖像數(shù)據(jù)按照并行度逐幀將其傳入ARM、GPU實(shí)現(xiàn)流水作業(yè),這樣硬件計(jì)算資源可以得到充分使用,不會(huì)出現(xiàn)空閑,提高整體數(shù)據(jù)吞吐率。
這樣做的優(yōu)勢(shì)在于提供ARM-GPU負(fù)載調(diào)節(jié)機(jī)制,充分發(fā)揮硬件性能,增加圖像特點(diǎn)適應(yīng)性,各種圖像都能高效處理。用戶不必關(guān)心各個(gè)算法的細(xì)節(jié)或者了解算法硬件的映射方式,只需要根據(jù)圖像特點(diǎn)和計(jì)算資源的限制選擇合適的通道即可獲得初步的優(yōu)化。
為了進(jìn)一步驗(yàn)證本發(fā)明方法的優(yōu)越性,下面通過(guò)如下表格中的數(shù)據(jù)進(jìn)行說(shuō)明。
根據(jù)紅外DDE主要的環(huán)節(jié):濾波預(yù)處理、灰度拉伸、限制對(duì)比度均衡、頭信息解析、局部直方圖雙線性插值和高頻銳化和局部直方圖融合,將上述解碼環(huán)節(jié)分別使用ARM、GPU實(shí)現(xiàn)。各個(gè)解碼環(huán)節(jié)的映射關(guān)系如下表1所示:
表1
由表中可以看出DDE環(huán)節(jié)有不同的運(yùn)算特點(diǎn),適合并行的模塊可并行的方式也不盡相同。將可并行的部分使用合適的方式映射到GPU的線程資源,充分利用GPU計(jì)算單元多、并行度高的優(yōu)點(diǎn),規(guī)避GPU不善于處理分支多、相關(guān)性高的運(yùn)算的弱點(diǎn),充分利用計(jì)算資源。在ARM計(jì)算階段過(guò)渡到GPU時(shí)需要內(nèi)存數(shù)據(jù)上傳到顯存,在GPU計(jì)算期間,數(shù)據(jù)一直駐留在顯存,改變線程映射方式不需要額外的時(shí)間,驗(yàn)證了本發(fā)明方法在理論上是最優(yōu)的。在實(shí)際實(shí)驗(yàn)中,例如在輸入圖像參數(shù)為16bit位深度單通道,使用IMX6平臺(tái),可以達(dá)到每秒處理25fps的處理數(shù)據(jù)。由此可見(jiàn),本發(fā)明方法充分利用當(dāng)前計(jì)算機(jī)多核ARM+GPU架構(gòu)的計(jì)算能力,也提升了實(shí)時(shí)圖像采集并行處理的吞吐率。
在本實(shí)施例中,上述各個(gè)步驟中涉及到的處理算法均為現(xiàn)有常規(guī)算法,所以,就不再對(duì)各個(gè)算法本身進(jìn)行詳細(xì)介紹。
上述實(shí)施例中,對(duì)于圖像細(xì)節(jié)增強(qiáng)方法中的各個(gè)步驟進(jìn)行了具體說(shuō)明,并給出了對(duì)應(yīng)的具體實(shí)施方式,但是,本發(fā)明的基本思路在于上述基本技術(shù)方案,所以,本發(fā)明并不局限于上述對(duì)于各個(gè)步驟的具體描述。
裝置實(shí)施例
相應(yīng)于上面提到的方法實(shí)施例,本發(fā)明還提供了一種基于SOC架構(gòu)的紅外增強(qiáng)裝置。
該裝置具體為配置有中央處理器ARM和圖形處理器GPU的嵌入式SOC架構(gòu)電子設(shè)備,該電子設(shè)備中:
中央處理器ARM執(zhí)行以下軟件模塊:
濾波處理模塊,用于對(duì)數(shù)據(jù)接收模塊接收到的圖像數(shù)據(jù)按照濾波預(yù)算法進(jìn)行濾波處理,濾波處理分為暗順序進(jìn)行均值濾波和中值濾波預(yù)處理;
灰度處理模塊,用于對(duì)經(jīng)濾波處理后的圖像數(shù)據(jù)按照灰度拉伸算法進(jìn)行14位到10位灰度線性拉伸處理;
對(duì)比度處理模塊,用于對(duì)經(jīng)灰度處理后的圖像數(shù)據(jù)按照限制對(duì)比度均衡算法進(jìn)行對(duì)比度處理;
直方圖插值處理模塊,用于對(duì)經(jīng)對(duì)比度處理后的圖像數(shù)據(jù)按照局部直方圖雙線性插值算法進(jìn)行直方圖插值處理;
圖形處理器GPU執(zhí)行以下軟件模塊:
銳化處理模塊,用于對(duì)經(jīng)直方圖插值處理后的圖像數(shù)據(jù)按照高頻銳化算法進(jìn)行銳化處理;
直方圖融合模塊,用于將經(jīng)灰度處理后的圖像數(shù)據(jù)與經(jīng)銳化處理后的圖像數(shù)據(jù)進(jìn)行按照局部直方圖融合算法進(jìn)行融合處理,處理后的圖像數(shù)據(jù)即是得到圖像細(xì)節(jié)增強(qiáng)處理后的紅外圖像。
由此可見(jiàn),本發(fā)明的基于ARM和GPU的圖像細(xì)節(jié)增強(qiáng)裝置,在高分辨率圖像的解碼中調(diào)用GPU執(zhí)行高頻銳化算法的速度與ARM接近,將高頻銳化算法的執(zhí)行操作分配到GPU,一方面在不影響處理速度的前提下減輕了ARM的負(fù)荷,另一方面充分利用的空閑的GPU資源,從而實(shí)現(xiàn)了ARM、GPU的負(fù)載均衡,增加系統(tǒng)的總體吞吐率。
進(jìn)一步地,直方圖融合模塊為數(shù)據(jù)int到float格式轉(zhuǎn)換模塊,用于利用GPU的并行能力直接在顯存中將經(jīng)灰度處理后的圖像數(shù)據(jù)與經(jīng)銳化處理后的圖像數(shù)據(jù)進(jìn)行局部直方圖融合算法處理,以提高電子設(shè)備的GPU執(zhí)行內(nèi)存讀取數(shù)據(jù)的效率。
對(duì)于裝置實(shí)施例而言,由于該裝置中的各個(gè)模塊均為功能模塊,均為通過(guò)相應(yīng)的軟件程序來(lái)實(shí)現(xiàn)相應(yīng)的功能,所以,該裝置本質(zhì)上仍舊是方法,由中央處理器ARM執(zhí)行以下操作:對(duì)數(shù)據(jù)接收模塊接收到的圖像數(shù)據(jù)按照濾波預(yù)算法進(jìn)行濾波處理,濾波處理分為暗順序進(jìn)行均值濾波和中值濾波預(yù)處理;對(duì)經(jīng)濾波處理后的圖像數(shù)據(jù)按照灰度拉伸算法進(jìn)行14位到10位灰度線性拉伸處理;對(duì)經(jīng)灰度處理后的圖像數(shù)據(jù)按照限制對(duì)比度均衡算法進(jìn)行對(duì)比度處理;對(duì)經(jīng)對(duì)比度處理后的圖像數(shù)據(jù)按照局部直方圖雙線性插值算法進(jìn)行直方圖插值處理;
由圖形處理器GPU執(zhí)行以下操作:對(duì)經(jīng)直方圖插值處理后的圖像數(shù)據(jù)按照高頻銳化算法進(jìn)行銳化處理;將經(jīng)灰度處理后的圖像數(shù)據(jù)與經(jīng)銳化處理后的圖像數(shù)據(jù)進(jìn)行按照局部直方圖融合算法進(jìn)行融合處理,處理后的圖像數(shù)據(jù)即是得到圖像細(xì)節(jié)增強(qiáng)處理后的紅外圖像。
由于該方法在上述方法實(shí)施例中已進(jìn)行了詳細(xì)的描述,所以在裝置實(shí)施例中描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的相應(yīng)說(shuō)明即可。
以上給出了具體的實(shí)施方式,但本發(fā)明不局限于所描述的實(shí)施方式。本發(fā)明的基本思路在于上述基本方案,對(duì)本領(lǐng)域普通技術(shù)人員而言,根據(jù)本發(fā)明的教導(dǎo),設(shè)計(jì)出各種變形的模型、公式、參數(shù)并不需要花費(fèi)創(chuàng)造性勞動(dòng)。在不脫離本發(fā)明的原理和精神的情況下對(duì)實(shí)施方式進(jìn)行的變化、修改、替換和變型仍落入本發(fā)明的保護(hù)范圍內(nèi)。