李慧林 武云鋼
(1.西安工程大學電子信息學院 西安 710048)(2.西安交通大學電子信息工程學院 西安 710048)
基于FPGA的RAW圖像飽和校正的實現*
李慧林1武云鋼2
(1.西安工程大學電子信息學院 西安 710048)(2.西安交通大學電子信息工程學院 西安 710048)
圖像飽和會造成圖像的顏色和亮度失真。為了改善圖像的質量,論文在現有的算法基礎上用FPGA實現了RAW圖像飽和校正算法。圖像單通道飽和校正時使用了現有貝葉斯算法進行估計,而對圖像多通道飽和校正時論文設計了一種環形的硬件結構來實現顏色通道按照順序處理機制的整個流程,不論哪種校正順序均能在該環形結構上正確運行。論文算法用VHDL語言編寫工程并在Altera Cyclone系列芯片EP4GX150DF31C8上用軟件仿真實現,時鐘頻率最大可以達到110MHz。通過協仿真發現,論文硬件算法可以快速實現對圖像飽和像素的校正。論文硬件算法可作為單獨的硬件模塊植入相機內部進行實時的飽和像素校正。
圖像飽和校正; FPGA; 彩色圖像處理; RAW圖像
Class Number TB861
在日常生活中經??梢钥吹綀D像過曝光的現象,由于人眼視覺所能感受到的動態范圍和自然界本身的動態范圍都遠遠高于圖像傳感器的動態范圍,因此過曝光不可避免的產生。當RAW圖像內插后可得到三通道RGB圖像,然后需要對三通道圖像進行白平衡操作,一般做法是對圖像進行白平衡時處理,使RGB三通道獲得不同的增益,例如當設置G通道增益系數為1,而R和B通道的增益系數一般都大于1,那么在RGB三通道都飽和的區域,導致那些本來應該為白色的像素偏紫。傳統相機廠商消除這種偏色的方法是對圖像進行白平衡時,將超過飽和閾值的值都嵌于飽和閾值處。這樣將不會使圖像偏色,但是這種算法將使得圖像的細節信息丟失。
Xuemei Zhang等于2004年在惠普實驗室工作時提出了一種基于貝葉斯估計的飽和像素校正算法[1]。該算法作用于RAW圖像,首先對飽和RAW圖像使用簡單的雙線性內插算法得到三通道RGB圖像,然后假設RGB顏色三通道服從三元正態聯合分布模型。算法基于該模型計算圖像的先驗均值和先驗方差,將飽和通道和不飽和通道聯合起來分析,計算飽和通道在已知未飽和通道的條件分布。由于圖像飽和像素校正后的值一定大于或等于飽和值,由此條件可以利用貝葉斯算法來進一步估測飽和像素的值[2]。本文在該算法基礎上用FPGA的Cyclone系列芯片實現了圖像飽和校正算法。
3.1 硬件算法結構
本算法硬件流程如圖1所示,主要分為四個模塊,從左往右,從上往下,第一個對應為計算每個通道未飽和像素的均值和方差模塊,第二個對應為決定飽和顏色通道校正順序模塊,第三個對應為計算每個顏色通道的先驗參數模塊(包括先驗均值和先驗方差),第四個為飽和像素校正模塊。當RAW圖像經過雙線性內插算法后得到線性RGB數據后,經過圖1所示的硬件模塊校正后最終可以得到飽和校正后的三通道值R_fixed,G_fixed,B_fixed。

圖1 硬件算法流程
3.2 硬件算法實現
在硬件實現時,第一步獲得圖像的先驗參數。先驗參數包括每個顏色通道的先驗均值及先驗方差以及顏色通道間的協方差。
當圖像單通道飽和時,在計算每個圖像顏色通道先驗均值時用該通道未飽和像素來統計該通道的均值可能比較準確,但是先驗協方差的計算卻要用到那些三通道全部未飽和的像素,這樣會造成RGB三個通道均值和方差計算不一致性而導致圖像三通道之間的關系發生變化[3]。因此在計算該連通域的先驗參數時,一定要選擇那些三通道全部未飽和的像素進行計算,即選擇的因子sel=R

(1)


(2)
硬件實現時,由于對于當使用根號運算IP核沒有使用到小數位,使得di的計算不夠準確。為了更加準確地計算距離di值,擴大了vi的值,在運算時,將vi乘以4。這種操作在硬件實現時只是簡單的將數據左移2位,因此計算距離di時,公式可以轉換為
(3)
為了更加準確地計算出不同顏色通道距離di的值,本文將di的值精確到小數點后兩位,即類似將數學運算后的浮點值乘以100然后對其取整比較三通道間距離的大小。距離的比較模塊如圖2所示,模塊中用到了三個除法器,每個除法器可以獲得距離di的一位值,第一個除法器輸出的結果乘以100,第二個除法器輸出的結果乘以10,第三個除法器輸出的結果不作處理,然后將三者相加得到精確到小數點后兩位的顏色通道距離di的值[6]。

圖2 計算距離di模塊
三個顏色通道處理順序可以分為六種情況,如圖1所示,本文用六個信號來表示可能的情況RGB,RBG,GRB,GBR,BRG,和BGR。例如,當比較后的結果為dR≤dG≤dB,信號值RGB將會被置1,校正順序則按照RGB進行。當校正順序一定時,圖像飽和校正過程中將按照此順序依次對RGB三個通道值進行校正。本文設計了一個環形硬件結構對三通道值進行校正,如圖3所示,主要由三個模塊構成,R通道飽和校正模塊,G通道飽和校正模塊,B通道飽和校正模塊。當校正順序為RGB時,則算法流程按照逆時針方向依次對三通道進行校正,第一個模塊用來接收待校正的RGB圖像數據,最后一個模塊將輸出校正后的RGB三通道值。

圖3 環形硬件校正模塊
本文首先在Microsoft Windows 7 32bit系統上分別編寫軟件代碼和硬件代碼,在Matlab R2014a上編寫軟件代碼仿真通過后用Quartus II 13.0 SP1(32 bit)工具編寫VHDL代碼實現基于硬件的飽和校正的整個流程。截取的RAW圖像分辨率為500×328。整個硬件工程是基于Altera Cyclone系列的低端消費類的芯片EP4CGX150DF31C8來完成。該芯片內部有149760個邏輯單元,720個M9K塊,6個PLL,30個全局時鐘,最大用戶IO為508。最后用Matlab R2014a和 Modelsim SE 10.1c 協同仿真,用link for ModelSim接口進行驗證本算法的結果[7]。
圖4所示是在Modelsim中波形仿真后的結果,可以看出硬件處理過程中首先計算出圖像的先驗均值和方差以及協方差,然后對圖像進行飽和像素的校正,最后輸出飽和校正后的圖像數據。

圖4 Modelsim仿真結果
圖5(a)所示是用索尼RX100II相機在公園處拍攝的一個柱子圖像,圖像未飽和,因此人為給圖像一個飽和閾值。當圖像像素大于飽和閾值時,重新賦值為飽和閾值,如圖5(b)所示,由于綠色通道飽和較為嚴重,白平衡后的圖像飽和區域偏紫。圖像中32.3% 的區域發生了綠色通道飽和,0.03%區域發生了紅色通道飽和,0.07%的區域發生了藍色通道飽和。傳統的相機處理算法是在白平衡后直接將超過飽和閾值像素點的值嵌于飽和閾值處,這樣會導致圖像丟失一些細節信息,如圖5(c)所示柱子丟失了紋理細節。圖5(d)為Matlab處理后的結果,圖5(e)是本文提出的FPGA處理后的結果,可以看出用FPGA實現的飽和校正算法的結果使柱子紋理信息得到了很好的還原[8],而且與Matlab處理的結果相比較幾乎看不出差異。

圖5 飽和圖像以及處理結果
本文基于FPGA提出了一種環形的硬件模塊結構實現了圖像飽和像素的校正算法,并且在低端消費類芯片Cyclone中編譯通過,協仿真正確。由于FPGA實現的高效,并行性,價格低廉等優點[9],因此可以將該算法的硬件模塊置于數碼相機中實時地進行圖像飽和像素的處理,以此來改善大部分拍攝圖像的質量從而避免了將飽和圖像轉到計算中上再進行色彩的恢復與還原[10]。
[1] X. Zhang, D. H. Brainard. 數字圖像的飽和校正算法[J]. J Opt Soc Am A Opt Image Sci Vis, December 2004,21(12):2301-2310. X. Zhang, D. H. Brainard. Estimation of saturated pixel values in digital color imaging[J]. J Opt Soc Am A Opt Image Sci Vis, December 2004,21(12):2301-2310.
[2] Di Xu, Colin Doutre, Panos Nasiopoulos. An improved bayesian algorithm for color image desaturation[C]//Image Processing (ICIP), 2010 17th IEEE International Conference on. IEEE,2010:1325-1328.
[3] Di Xu, Colin Doutre, Panos Nasiopoulos. Correction of clipped pixels in color images[J]. IEEE Transactions on Visualization and Computer Graphics,2011,17(3):333-344.
[4] Assefa M, Poulie T, Kervec J, et al. Correction of over-exposure using color channel correlations[C]//Signal and Information Processing (GlobalSIP),2014 IEEE Global Conference on. IEEE,2014:1078-1082.
[5] Fu J, Peng H, Chen X, et al. Correcting saturated pixels in images based on human visual characteristics[C]//IS&T/SPIE Electronic Imaging. International Society for Optics and Photonics, 2013:1078-1082.
[6] Zhang X, Brainard D H. Bayesian color correction method for non-colorimetric digital image sensors[C]//Color and Imaging Conference. Society for Imaging Science and Technology,2004,2004(1):308-314.
[7] Foi A, Trimeche M, Katkovnik V, et al. Practical Poissonian-Gaussian noise modeling and fitting for single-image raw-data[J]. Image Processing, IEEE Transactions on, 2008,17(10):1737-1754.
[8] Hongshi Sang, Yong Fu, Tianxu Zhang , et al. Connected Components Labeling Algorithm for Multi-value Image that Suitable for Realization in VLSI[J]. Huazhong Ligong Daxue Xuebao,2005,33(9):5-8.
[9] Masood S Z, Zhu J, Tappen M F. Automatic Correction of Saturated Regions in Photographs using Cross‐Channel Correlation[C]//Computer Graphics Forum. Blackwell Publishing Ltd, 2009,28(7):1861-1869.
[10] D. H. Brainard, W. T. Freeman. Bayesian color constancy[J]. Opt. Soc. Am. 1997,14(7):1393-1411.
Implementation of Estimating Saturated Pixel Values Based on FPGA
LI Huilin1WU Yungang2
(1. School of Electronics and Information, Xi’an Polytechnic University, Xi’an 710048) (2. School of Electronics and Information Engineering, Xi’an Jiaotong University, Xi’an 710048)
Pixel saturation is very common in digital color imaging, which will result in the artifact of color splash. In order to improve image quality, this paper presents a hardware implementation in a FPGA circuit of an algorithm to estimate saturated pixels in RAW image. For the 1-channel saturation, the Bayesian estimation is realized using simple digital circuits and memory. For the 2-channel and 3-channel saturation, a ring structure is designed to handle the saturated color channels in the order obtained previously. Whatever the order of the color channels is, the image data can be processed properly by the ring structure. The design has been specified in VHDL targeted on an Altera Cyclone EP4CGX150DF31C8 based FPGA and verified for functional correctness by software simulation, and the fmax can reach 100MHz. Co-simulation shows that the proposed method in hardware implementation has estimated the saturated pixels fast. The hardware algorithm can be embedded inside the camera to realize correcting saturated pixels in real time.
estimate saturated pixels, FPGA, color image processing, RAW image
2016年9月11日,
2016年10月30日
李慧林,女,碩士研究生,研究方向:信號與信息處理。武云鋼,男,碩士研究生,研究方向:數字圖像處理。
TB861
10.3969/j.issn.1672-9722.2017.03.026