文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)09-0028-04
大部分成像設(shè)備都使用單板的圖像傳感器,其在光電二極管和鏡頭之間利用彩色濾光片陣列CFA(Colour Filter Array)獲取圖像數(shù)據(jù),這樣傳感器輸出的每個(gè)像素點(diǎn)只含有紅、綠或藍(lán)中一種顏色分量的馬賽克圖像[1]。為了獲得全彩色圖像,需要用其領(lǐng)域像素的信號(hào)近似計(jì)算出被濾掉的另外兩種顏色分量,該過程又稱顏色插值[2]。CFA的排列方式主要有Bayer、Mosaic和Stripe等[3],其中應(yīng)用最廣泛的排列方式由Bayer博士發(fā)明,為大部分單板傳感器使用,稱為Bayer模板。其每幀圖像的數(shù)據(jù)格式的排列如圖1所示。
圖1中右上角的(1,1)位置作為圖像數(shù)據(jù)的起始點(diǎn),每幀大小為n×m。使用硬件實(shí)現(xiàn)插值運(yùn)算時(shí),注意Bayer模板中數(shù)據(jù)的排序方向需和硬件結(jié)構(gòu)中的數(shù)據(jù)排序一致。
CFA的插值算法很多,但是基于硬件實(shí)現(xiàn)的大多是簡單的算法,應(yīng)用最廣泛的是雙線性插值法[4]。Bayer模板中雙線性插值算法原理非常簡單,通常取3×3大小的模板,其中心像素缺失的另外兩種顏色的分量用其鄰域中同通道分量的平均值代替,其算法簡單、運(yùn)算速度快、硬件實(shí)現(xiàn)容易。但由于在插值計(jì)算的過程中沒有區(qū)分圖像的邊緣,其恢復(fù)出的圖像效果并不理想,邊緣和細(xì)節(jié)的信息損失較明顯。
本文將介紹Bayer模板的雙線性插值算法的改進(jìn)及其在FPGA中的實(shí)現(xiàn)。
從整個(gè)雙線性插值計(jì)算的過程可知,恢復(fù)被濾除的像素時(shí)沒有考慮圖像邊緣的變化,只是簡單地利用了中心像素的鄰域同通道的分量值進(jìn)行了加和平均,相當(dāng)于對(duì)要恢復(fù)的分量使用了均值濾波器。這樣雖然會(huì)得到平滑的圖像,但也造成圖像的邊緣和細(xì)節(jié)模糊。
1.2 改進(jìn)的3×3模板的雙線性插值算法
為了克服雙線性插值算法帶來的邊緣模糊的問題,Laroche 和Prescott 提出了一種基于梯度的邊緣導(dǎo)向(edge2 directed)插值算法[5]。插值過程中,首先比較水平方向上和垂直方向上梯度的大小,插值時(shí)取梯度值小的方向上的像素點(diǎn)作為估計(jì)點(diǎn)計(jì)算當(dāng)前像素未知色彩的值,可避免跨邊緣顏色插值導(dǎo)致邊緣模糊。由于人眼對(duì)綠色較為敏感,為了盡量減少算法復(fù)雜度,該算法主要對(duì)恢復(fù)缺失的G分量的兩種排列方式(即圖4和圖5)時(shí),使用了邊緣導(dǎo)向的算法,而恢復(fù)缺失的R或B分量則用雙線性插值法計(jì)算并由G分量修正得到。在邊緣導(dǎo)向的算法中,使用了5×5模板,同時(shí)在插值計(jì)算中,利用了其他的顏色通道即G分量的信息。
根據(jù)邊緣導(dǎo)向插值算法的思想,原有的3×3模板不變,無需使用不同像素的通道信息。恢復(fù)缺失的G分量插值時(shí)考慮鄰域G分量像素梯度變化。當(dāng)插值恢復(fù)缺失的R或B分量時(shí),引進(jìn)鄰域同通道已知像素的對(duì)角線梯度信息,進(jìn)一步保留圖像的邊緣細(xì)節(jié)信息。因此,對(duì)圖4和圖5兩種排列情況的雙線性插值算法進(jìn)行改進(jìn),對(duì)應(yīng)公式修正如下:
2 硬件實(shí)現(xiàn)
2.1 硬件系統(tǒng)架構(gòu)
以FPGA芯片為核心的處理單元具有速度快、效率高、低功耗等特點(diǎn),本算法使用FPGA完成圖像數(shù)據(jù)的讀取、Bayer模版的圖像插值,既節(jié)省了硬件資源,又提高了系統(tǒng)整體效率。
系統(tǒng)的前端為采集圖像數(shù)據(jù)的CMOS圖像傳感器,其中FPGA讀取Bayer模板圖像數(shù)據(jù),經(jīng)FPGA內(nèi)部硬件構(gòu)成的3×3模板,完成圖像數(shù)據(jù)的插值還原,最后傳輸給DSP。其硬件系統(tǒng)如圖6所示。
2.2 FPGA中3×3插值模板的硬件結(jié)構(gòu)
改進(jìn)的插值算法是基于3×3模板,計(jì)算一個(gè)中心像素點(diǎn)最多用到相鄰2行和2列的像素?cái)?shù)據(jù),無需存儲(chǔ)整幀實(shí)時(shí)圖像數(shù)據(jù),只需緩存3行數(shù)據(jù)。使用結(jié)合FPGA硬件結(jié)構(gòu)的FIFO_DFF的算法模型[6],即可在FPGA中實(shí)現(xiàn)此3×3插值模板,其中構(gòu)成插值模板的FIFO_DFF硬件結(jié)構(gòu)如圖7所示。
這樣無需外部存儲(chǔ)設(shè)備,在FPGA中就可以根據(jù)插值計(jì)算公式使用該硬件結(jié)構(gòu)構(gòu)成的矩陣計(jì)算中心像素 P(2,2)的RGB分量的值。需要指出的是,在處理邊界像素時(shí)也會(huì)和其他大小的模板一樣不可避免地產(chǎn)生邊界效應(yīng),當(dāng)矩陣的第一行沒有數(shù)據(jù)時(shí)即開始計(jì)算,相當(dāng)于在此時(shí)矩陣中心的第一行數(shù)據(jù)前面補(bǔ)零;當(dāng)矩陣中最后一行沒有數(shù)據(jù)讀進(jìn)時(shí)的插值計(jì)算,相當(dāng)于在此時(shí)矩陣中心的最后一行數(shù)據(jù)后面補(bǔ)零??梢钥闯觯?×3模板插值時(shí)要比5×5模板的邊界效應(yīng)少2行2列。補(bǔ)零后,原Bayer模板的每幀圖像數(shù)據(jù)的起點(diǎn)被移動(dòng),式(1)中的x和y也相應(yīng)變化。因此,3種像素排列規(guī)律對(duì)應(yīng)的公式需要根據(jù)變化的x和y做相應(yīng)調(diào)整。
3 實(shí)驗(yàn)結(jié)果
在CMOS傳感器的控制參數(shù)和光源條件同等的條件下,利用FPGA構(gòu)成的3×3硬件模板中分別使用雙線性插值算法和改進(jìn)的雙線性插值算法對(duì)同一幅彩色廣告圖片進(jìn)行拍攝,得到彩色圖像數(shù)據(jù)如圖9和圖10所示(實(shí)際圖像數(shù)據(jù)為2 592×1 944像素大小,這里只選取其左上角部分內(nèi)容)。
顯示邊緣和細(xì)節(jié)的兩幅圖進(jìn)行比較,同時(shí)聯(lián)系各自的彩色圖像的色彩信息,可以直觀得出:改進(jìn)插值算法后的圖像中右上角的綠色花朵的顏色更加接近實(shí)物,色彩鮮艷,其邊緣和細(xì)節(jié)也保留得相對(duì)完整,這是式(10)和(12)恢復(fù)綠色分量時(shí)對(duì)同通道的水平和垂直分量進(jìn)行邊緣檢測(cè)后再插值還原的結(jié)果體現(xiàn)。
同樣對(duì)圖像中間商品名稱的紅色字和藍(lán)色字分別比較,也可直觀得出,改進(jìn)插值算法的圖像中的紅色和藍(lán)色更加接近實(shí)物,相應(yīng)的邊緣和細(xì)節(jié)也保留得更多,這是式(11)和(12)分別恢復(fù)紅色和藍(lán)色分量時(shí)使用同通道對(duì)角線分量進(jìn)行邊緣檢測(cè)后插值還原的結(jié)果體現(xiàn)。
對(duì)單板CMOS傳感器采集的Bayer模板圖像數(shù)據(jù)插值還原時(shí),利用FPGA內(nèi)部硬件資源構(gòu)成3×3插值運(yùn)算模板,減小了其他插值模板所產(chǎn)生的邊界效應(yīng),無需增加外部存儲(chǔ)器,降低了硬件開銷。同時(shí),充分考慮Bayer模板圖像數(shù)據(jù)提供的邊緣變化信息進(jìn)行插值還原,與傳統(tǒng)的雙線性插值算法相比,為后續(xù)分析和處理以及最終的結(jié)果提供了更加準(zhǔn)確和豐富的色彩,并得到了圖像中目標(biāo)物體的更多邊緣和細(xì)節(jié)信息。
參考文獻(xiàn)
[1] 周紅艷.數(shù)碼圖像中莫爾條紋去除算法的研究[D].上海:上海交通大學(xué),2008.
[2] 彭俊,高偉.基于FPGA的Bayer圖像彩色恢復(fù)快速算法研究及實(shí)現(xiàn)[D].北京:中國科學(xué)院研究生院,2007.
[3] 邱菊.基于插值算法的去彩色摩爾紋效應(yīng)的研究[D].南京:南京理工大學(xué),2009.
[4] 李淵淵,孟偉.一種用硬件實(shí)現(xiàn)的Bayer格式圖像恢復(fù)算法[D].吉林:長春光學(xué)精密機(jī)械與物理研究所,2009.
[5] 賀欽,劉文予.數(shù)字圖像傳感器顏色插值算法研究[D].武漢:華中科技大學(xué),2007.
[6] 潘勝達(dá).超分辨率傳像光纖束成像算法的硬件實(shí)現(xiàn)研究[D].上海:上海海事大學(xué),2009.