本發(fā)明涉及圖像處理
技術(shù)領(lǐng)域:
,具體涉及一種基于并行流水機制的高分辨率圖像加速處理方法。
背景技術(shù):
:圖像處理技術(shù)廣泛地應(yīng)用于工業(yè)生產(chǎn)、工程應(yīng)用、航空航天、軍事、醫(yī)學(xué)等諸多領(lǐng)域,并取得了巨大的成功和顯著的經(jīng)濟效益,隨著圖像采集芯片分辨率的顯著提高以及圖像處理系統(tǒng)高精度、高速化和高度集成化的持續(xù)發(fā)展,其對數(shù)據(jù)處理速度的要求越來越高,單純使用DSP的圖像處理系統(tǒng)已很難滿足上述需求。而圖像處理中經(jīng)常用到圖像求和、求差、梯度運算、目標(biāo)分割、區(qū)域特征提取等不同層次、不同種類的運算,其中,很多運算本身結(jié)構(gòu)比較簡單,但是數(shù)據(jù)量大,計算速度要求高,適于用FPGA或ASIC硬件實現(xiàn)。技術(shù)實現(xiàn)要素:本發(fā)明的目的在于提供一種基于并行流水機制的高分辨圖像加速處理方法,結(jié)合FPGA的并行處理和流水結(jié)構(gòu)特點,采用模塊化設(shè)計思路,利用VerilogHDL硬件描述語言編寫FPGA的圖像處理單元,實現(xiàn)圖像處理算法的高效、高速執(zhí)行。為了達(dá)到上述目的,本發(fā)明通過以下技術(shù)方案實現(xiàn):一種基于并行流水機制的高分辨圖像加速處理方法,其特征是,利用FPGA并行流水線處理機制實現(xiàn),該方法包含以下步驟:S1、用雙線性法的3×3模板對經(jīng)過拜耳彩色濾波陣列CFA產(chǎn)生的RAW格式圖像進行色彩插值,得到RGB圖像數(shù)據(jù);再將RGB圖像數(shù)據(jù)轉(zhuǎn)換成YUV色彩空間,提取其中的Y分量以獲得灰度圖像;S2、用中值濾波法去除步驟S1中獲得的灰度圖像中的點噪聲;S3、采用sobel算子對去除點噪聲后的灰度圖像上每一個點進行灰度梯度計算,對梯度幅值結(jié)果進行非極大抑制,細(xì)化邊緣,最后對其結(jié)果進行二值化提取出灰度圖像的邊緣信息,即邊緣圖像。上述的基于并行流水機制的高分辨圖像加速處理方法,其中,所述的步驟S1具體包含:S11、根據(jù)經(jīng)過拜耳彩色濾波陣列CFA產(chǎn)生的RAW格式圖像的像素的排列規(guī)律和3×3模板的位置,分成3×3模板左上角的元素位于圖像數(shù)據(jù)的奇數(shù)行奇數(shù)列、奇數(shù)行偶數(shù)列、偶數(shù)行奇數(shù)列和偶數(shù)行偶數(shù)列四種情況,分別采用不同的公式計算當(dāng)前像素的R、G和B三個顏色分量的值:3×3模板左上角的元素位于圖像數(shù)據(jù)的奇數(shù)行奇數(shù)列,則插值后的像素點的R、G、B分量分別為:其中,ai,j為3×3模板中第i行第j列的元素。3×3模板左上角的元素位于圖像數(shù)據(jù)的奇數(shù)行偶數(shù)列,則插值后的像素點的R、G、B分量分別為:3×3模板左上角的元素位于圖像數(shù)據(jù)的偶數(shù)行奇數(shù)列,則插值后的像素點的R、G、B分量分別為:3×3模板左上角的元素位于圖像數(shù)據(jù)的偶數(shù)行偶數(shù)列,則插值后的像素點的R、G、B分量分別為:S12、用整數(shù)算法,使用16位精度,運用等式Y(jié)=(19595R+38469G+7471B)>>16將步驟S11處理獲得的RGB圖像數(shù)據(jù)轉(zhuǎn)換成YUV色彩空間,獲得灰度圖像。上述的基于并行流水機制的高分辨圖像加速處理方法,其中,所述的步驟S2具體包含:對步驟S1中獲得的灰度圖像作為初始灰度圖像,運用中值濾波模板將初始灰度圖像中所有的像素點用該點一個領(lǐng)域中所有像素排序得到的中值代替:f2(x,y)=med{f(x-k,y-l),(k,l∈W)},式中,f2(x,y)、f(x,y)分別為中值濾波后灰度圖像和初始灰度圖像,W為中值濾波模板,x為像素在圖像中的橫向坐標(biāo),y為像素在圖像中的縱向坐標(biāo),k為像素在W模板中的橫向坐標(biāo),l為像素在W模板中的縱向坐標(biāo)。上述的基于并行流水機制的高分辨圖像加速處理方法,其中,所述的步驟S3具體包含:S31、對經(jīng)過步驟S2去噪聲處理后獲得的灰度圖像進行3×3階sobel算子濾波求解每個點的梯度,計算公式為:X方向:gx(x,y)=-f2(x-1,y-1)-2·f2(x-1,y)-f2(x-1,y+1)+f2(x+1,y-1)+2·f2(x+1,y)+f2(x+1,y+1)Y方向:gy(x,y)=f2(x-1,y-1)+2·f2(x,y-1)+f2(x+1,y-1)-f2(x-1,y+1)-2·f2(x,y+1)-f2(x+1,y+1)輸出每個點的梯度幅值:g(x,y)=|gx(x,y)+gy(x,y)|式中,x為像素在圖像中的橫向坐標(biāo),y為像素在圖像中的縱向坐標(biāo),gx(x,y)為該像素沿x方向上的梯度、,gy(x,y)為該像素沿y方向上的梯度。S32、對每一個點的梯度方向進行梯度幅值比較以細(xì)化邊緣,如果此點的梯度比它相鄰的兩個點梯度幅值都大,則不變,否則將其排除出邊緣點置0;S33、設(shè)定一個梯度幅值閾值,對每一個像素點如果其梯度幅值大于閾值則此像素點梯度幅值設(shè)為1,否則設(shè)置為0,最終得到邊緣提取結(jié)果G(x,y)。上述的基于并行流水機制的高分辨圖像加速處理方法,其中,所述步驟S32中:梯度方向可以分為四種情況:大于0°小于45°、大于45°小于90°、大于90°小于135°以及大于135°小于180°。上述的基于并行流水機制的高分辨圖像加速處理方法,其中,所述的步驟S33具體包含:S331、對整個圖像梯度幅值進行統(tǒng)計,按照從小到大排列,設(shè)梯度幅值范圍為Gmin~Gmax,其中Gmin為最小梯度幅值,Gmax為最大梯度幅值;S332、計算梯度幅值閾值為:T=(Gmax-Gmin)×0.79。上述的基于并行流水機制的高分辨圖像加速處理方法,其中,所述的步驟S32具體包含:一個點在梯度方向上相鄰的兩點為dTmp1、dTmp2,則極大值抑制結(jié)果為:如果C點梯度幅值比dTmp1、dTmp2點都大,則C點梯度幅值不變;否則,將C點梯度幅值置0;dTmp1、dTmp2點的梯度幅值用插值由g1、g2、g3、g4的灰度值求出:dTmp1=w·g1+(1-w)·g2dTmp2=w·g3+(1-w)·g4式中,g1、g2、g3、g4分別為像素點的鄰域中靠近該像素點梯度方向的四個像素的梯度,w為權(quán)重,w由以下計算公式獲得:當(dāng)gx(x,y)>gy(x,y)時,當(dāng)gx(x,y)<gy(x,y)時,上述的基于并行流水機制的高分辨圖像加速處理方法,其中:在FPGA中用g(x,y)和dTmp1、dTmp2進行比較大小時,將兩邊同時乘以分母,用三個乘法器在一個周期內(nèi)得到三個相乘結(jié)果,第二個周期完成比較,得到實時的非極大值抑制后的圖像數(shù)據(jù),以避免進行除法運算。本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點:結(jié)合FPGA的并行處理和流水結(jié)構(gòu)特點,采用模塊化設(shè)計思路,利用VerilogHDL硬件描述語言編寫FPGA的圖像處理單元,實現(xiàn)圖像處理算法的高效、高速執(zhí)行。附圖說明圖1為本發(fā)明的FPGA并行流水處理的方法流程圖;圖2為本發(fā)明中使用3×3模板處理圖像時的數(shù)據(jù)緩沖原理;圖3為本發(fā)明中的梯度方向大于90°小于135°的示意圖。具體實施方式以下結(jié)合附圖,通過詳細(xì)說明一個較佳的具體實施例,對本發(fā)明做進一步闡述。如圖1所示,本發(fā)明提供了一種基于并行流水機制的高分辨圖像加速處理方法,其利用FPGA并行流水線處理機制實現(xiàn),主要利用VerilogHDL硬件描述語言編寫FPGA的圖像處理單元,所述的圖像處理方法包括以下步驟:S1:用FPGA接收彩色圖像探測器采集到的經(jīng)過拜耳彩色濾波陣列(ColorFilterArray,CFA)產(chǎn)生的RAW格式圖像數(shù)據(jù),選用算法簡單、運算量小的雙線性法的3×3模板,在FPGA中實現(xiàn)對RAW格式圖像進行彩色插值,把RAW格式圖像數(shù)據(jù)轉(zhuǎn)換成RGB圖像數(shù)據(jù);然后,將RGB彩色圖像轉(zhuǎn)換成YUV色彩空間,提取其中的Y分量即為灰度圖像。S2:為了消除步驟S1處理獲得的灰度圖像中無關(guān)的信息,恢復(fù)有用的真實信息,增強有關(guān)信息的可檢測性和最大限度地簡化數(shù)據(jù),在FPGA中實現(xiàn)采用中值濾波方法去除實際圖像中的點噪聲。S3:邊緣圖像可以有效的提取物體的邊緣,是進行特征提取的必要前提。這里,采用sobel算子在FPGA中實現(xiàn)對圖像上每一個點進行灰度梯度計算,對梯度幅值結(jié)果進行非極大抑制,細(xì)化邊緣,最后對其結(jié)果進行二值化提取出圖像的邊緣信息。進一步地,所述步驟S1具體包括如下步驟:S11,用FPGA接收圖像探測器采集到的圖像數(shù)據(jù)。本系統(tǒng)中使用的圖像探測器為Aptina公司的MT9T001彩色探測器,該圖像探測器采用的是拜耳模型濾光片,輸出的是拜耳色彩濾波陣列CFA格式圖像數(shù)據(jù)。在拜耳模式下,每個像素點僅包含R、G和B三個顏色分量(R為紅色分量,G為綠色分量,B為藍(lán)色分量)中的一個顏色分量,而RGB彩色圖像每個像素包含R、G和B三個顏色分量。要想從Bayer模式下的圖像數(shù)據(jù)恢復(fù)出RGB彩色圖像,其他顏色分量必須由鄰域點生成。通過鄰域點生成欠缺的兩種顏色分量的過程即色彩插值。為降低算法實現(xiàn)難度,選用算法簡單、運算量小的雙線性法的3×3模板對拜耳色彩濾波陣列進行彩色插值。根據(jù)拜耳色彩濾波陣列格式圖像數(shù)據(jù)的排列規(guī)律和3×3模板的位置,可以分成以下四種情況:(1)3×3模板左上角的元素位于圖像數(shù)據(jù)的奇數(shù)行奇數(shù)列,則插值后的像素點的R、G、B分量分別為:其中,ai,j為3×3模板中第i行第j列的元素。(2)3×3模板左上角的元素位于圖像數(shù)據(jù)的奇數(shù)行偶數(shù)列,則插值后的像素點的R、G、B分量分別為:(3)3×3模板左上角的元素位于圖像數(shù)據(jù)的偶數(shù)行奇數(shù)列,則插值后的像素點的R、G、B分量分別為:(4)3×3模板左上角的元素位于圖像數(shù)據(jù)的偶數(shù)行偶數(shù)列,則插值后的像素點的R、G、B分量分別為:上述式中,ai,j為3×3模板中第i行第j列的元素,本步驟在FPGA中實現(xiàn),其實現(xiàn)過程是:如圖2所示,在FPGA中,對第一行像素數(shù)據(jù)和第二行像素數(shù)據(jù)用雙口RAM進行緩存,而對第三行進行2個最新像素的緩存。當(dāng)?shù)谌械牡谌齻€像素到達(dá)時,構(gòu)成3×3結(jié)構(gòu)的緩存數(shù)據(jù),代入式中求得R、G、B分量值。使用這種方式,每兩個像素周期得到一個計算后的輸出結(jié)果。S12,由于圖像處理是基于灰度圖像的,因此需要將RGB彩色圖像轉(zhuǎn)換成YUV色彩空間,而其中Y分量包含了顏色的亮度信息,即為灰度圖像。從RGB到Y(jié)UV的色度空間轉(zhuǎn)換中的Y分量用到如下的等式:Y=0.299R+0.587G+0.114B(5)而用FPGA實際處理時,應(yīng)避免浮點運算,需要整數(shù)算法。這里使用16位精度,2的16次冪是65536,所以這樣計算系數(shù):則從RGB到Y(jié)UV的色度空間轉(zhuǎn)換中的Y分量表達(dá)式可以變?yōu)椋篩=(19595R+38469G+7471B)>>16(7)進一步地,所述步驟S2包括如下步驟:為了消除圖像中無關(guān)的信息,恢復(fù)有用的真實信息,增強有關(guān)信息的可檢測性和最大限度地簡化數(shù)據(jù),從而提高特征抽取、圖像分割、匹配和識別的可靠性,需要對獲取的圖像進行平滑濾波??紤]到實際圖像中點噪聲居多,平滑技術(shù)選用中值濾波方法:對圖像中所有的像素點用該點一個領(lǐng)域中所有像素排序得到的中值代替:f2(x,y)=med{f(x-k,y-l),(k,l∈W)}(8)式中,f2(x,y)、f(x,y)分別為中值濾波后的灰度圖像和初始灰度圖像,W為中值濾波模板,x為像素在圖像中的橫向坐標(biāo),y為像素在圖像中的縱向坐標(biāo),k為像素在W模板中的橫向坐標(biāo),l為像素在W模板中的縱向坐標(biāo)。中值濾波的原理是在初始圖像上W模板大小內(nèi)的像素取中間像素的值作為整個模板的像素值。中值濾波可以有效的濾掉孤立的噪聲點,對圖像中的點噪聲抑制比較有效。本步驟在FPGA中實現(xiàn),其實現(xiàn)過程是:在FPGA中,開始圖像傳輸時,對中值濾波后的灰度圖像的第一行像素數(shù)據(jù)和第二行像素數(shù)據(jù)用雙口RAM進行緩存,而對第三行進行2個最新像素的緩存。當(dāng)?shù)谌械牡谌齻€像素到達(dá)時,構(gòu)成3×3結(jié)構(gòu)的緩存數(shù)據(jù)。對該結(jié)構(gòu)中的9個像素進行排序。其排序過程是:在第一個時鐘周期到來時,對9個像素,每個像素分配一個初值為0的計數(shù)器,并將該像素分別與其他8個像素進行比較,若大于,則該像素的計數(shù)值+1,否則計數(shù)值不變。在第二個時鐘周期到來時,對每個像素計數(shù)器進行統(tǒng)計。統(tǒng)計后,取排序后中間的計數(shù)值對應(yīng)的像素,作為輸出像素。上述過程中,兩個時鐘的計算過程通過流水線實現(xiàn),通過這種方式,保證每當(dāng)有一個圖像像素數(shù)據(jù)達(dá)到時,都會有一個計算后得到的中值輸出。進一步地,所述步驟S3包括如下步驟:S31,邊緣圖像可以有效的提取物體的邊緣,是進行特征提取的必要前提。對圖像上每一個點進行灰度梯度計算,對其結(jié)果進行二值化提取圖像的邊緣信息。具體實施如下:對圖像進行3×3階sobel算子濾波求解圖像每個點的梯度,計算公式為:X方向:Y方向:輸出幅值:g(x,y)=|gx(x,y)+gy(x,y)|(11)式中,x為像素在圖像中的橫向坐標(biāo),y為像素在圖像中的縱向坐標(biāo),gx(x,y)為該像素沿x方向上的梯度,gy(x,y)為該像素沿y方向上的梯度;本步驟在FPGA中實現(xiàn),其實現(xiàn)過程是:在FPGA中,當(dāng)圖像平滑濾波步驟中開始輸出,對第一行像素數(shù)據(jù)和第二行像素數(shù)據(jù)用雙口RAM進行緩存,而對第三行進行2個最新像素的緩存。當(dāng)?shù)谌械牡谌齻€像素到達(dá)時,構(gòu)成3×3結(jié)構(gòu)的緩存數(shù)據(jù),代入式中求得g(x,y)。使用這種方式,每個像素周期得到一個計算后的輸出結(jié)果。S32,對梯度幅值結(jié)果進行非極大抑制。此步為邊緣細(xì)化過程,可以使邊緣更加清晰細(xì)致。每一個點的梯度方向進行梯度幅值比較,如果此點的梯度比它相鄰的兩個點梯度幅值都大,則不變;否則將其排除出邊緣點置0。如圖3所示,θ表示像素點的梯度與x方向之間的夾角(小于90°),梯度方向可以分為四種情況:(1)梯度方向大于0°小于45°:g1g3Cg2g4(2)梯度方向大于45°小于90°:g1g2Cg3g4(3)梯度方向大于90°小于135°:g1g2Cg3g4(4)梯度方向大于135°小于180°:g1g2Cg3g4選擇梯度方向大于90°小于135°為例說明,參見梯度方向示意圖。C點在梯度方向上相鄰的兩點為dTmp1、dTmp2,則極大值抑制結(jié)果為:如果C點梯度幅值比dTmp1、dTmp2點都大,則C點梯度幅值不變;否則,將C點梯度幅值置0。dTmp1、dTmp2點的梯度幅值用插值由g1、g2、g3、g4的灰度值求出:dTmp1=w·g1+(1-w)·g2dTmp2=w·g3+(1-w)·g4(12)式中,g1、g2、g3、g4分別為像素點的鄰域中靠近該像素點梯度方向的四個像素的梯度;其中,w為權(quán)重,其計算公式為:當(dāng)gx(x,y)>gy(x,y)時,當(dāng)gx(x,y)<gy(x,y)時,在FPGA中用g(x,y)和dTmp1、dTmp2進行比較大小時,為避免進行除法運算,將兩邊同時乘以分母,用三個乘法器在一個周期內(nèi)得到三個相乘結(jié)果,第二個周期完成比較,得到實時的非極大值抑制后的圖像數(shù)據(jù)。S33,梯度幅值二值化。此步的目的是提高邊緣和其他位置的對比度,突出邊緣。步驟為設(shè)定一個梯度幅值閾值,對每一個像素點如果其梯度幅值大于閾值則此像素點梯度幅值設(shè)置為1,否則設(shè)置為0。最終得到邊緣提取結(jié)果G(x,y)。閾值選擇采用的是統(tǒng)計梯度幅值直方圖的方法計算而來:首先對整個圖像梯度幅值進行統(tǒng)計,按照從小到大排列,設(shè)梯度幅值范圍為Gmin~Gmax,其中Gmin為最小梯度幅值,Gmax為最大梯度幅值;然后計算梯度幅值閾值為:T=(Gmax-Gmin)×0.79(15)此步驟在FPGA中實現(xiàn),實現(xiàn)過程是:在每一幀的數(shù)據(jù)傳輸過程中,設(shè)置兩個變量Gmin和Gmax。每個像素到達(dá)時,對其判斷是否大于Gmax,是否小于Gmin。若是,更新相應(yīng)的Gmax或Gmin的值,否則Gmax和Gmin保持不變。完成圖像傳輸后,計算T值,作為下一幀的灰度閾值。盡管本發(fā)明的內(nèi)容已經(jīng)通過上述優(yōu)選實施例作了詳細(xì)介紹,但應(yīng)當(dāng)認(rèn)識到上述的描述不應(yīng)被認(rèn)為是對本發(fā)明的限制。在本領(lǐng)域技術(shù)人員閱讀了上述內(nèi)容后,對于本發(fā)明的多種修改和替代都將是顯而易見的。因此,本發(fā)明的保護范圍應(yīng)由所附的權(quán)利要求來限定。當(dāng)前第1頁1 2 3