想知道圖像傳感器輸出的圖像如何通過FPGA變成我們看到的色彩斑斕的圖片嗎?今天我們就帶你一探究竟。
01
什么是Raw像素?
我們通常看到的照片都是經過ISP以及一些列圖像處理后的結果,那么最原始的由圖像傳感器輸出的像素是什么樣子的呢?你看到的美美噠畫面是這樣的:
圖1
但其實傳感器輸出的畫面是類似這樣的:
圖2
沒錯這就是我們常說的Raw像素構成的Bayer模式,很多玩單反的人都知道大部分單反相機都支持Bayer格式Raw像素模式輸出照片,原因是Raw像素是傳感器獲得的最原始的圖像信息,方便我們后期做處理。今天我們要說的就是如何用FPGA處理Raw像素。在此之前我們還是先對Raw像素和Bayer格式有個大概了解吧。
我們可以認為每個像素均由紅綠藍俗稱RGB三個顏色分量組成,對于Raw像素你可以認為它是只含有一個顏色分量的像素。對于Bayer模式,我們來看一組圖,一副圖像如果只顯示它的偶數行偶數列,并且只顯示它的紅色分量,那么看上去就是如圖3的樣子:
圖3
如果只顯示奇數行奇數列并且只顯示它的藍色分量,那么它就是圖4的樣子:
圖4
剩下的像素只顯示它的綠色分量,就是圖5的樣子。
圖5
我們把這三個分量組合起來就看到圖2的那種帶有彩色馬賽克的圖片,這也就是我們常說的Bayer格式。當然傳感器輸出的Raw像素并不是這么得來的,這里只是舉個栗子給大家形象的解釋一下Bayer格式里Raw像素是如何分布的。
接下來我們就說說如何用FPGA實時做De-Bayer。
02
如何用FPGA做De-Bayer?
這里所謂的De-Bayer就是將Bayer格式轉換成正常的RGB格式。我們采用雙線性插值法,這是一個平衡計算量和圖像質量的算法。雙線性插值法是利用它自己鄰近的4個像素的顏色分量來補充自己所缺失的兩種顏色分量。
傳感器輸出像素通常是逐行掃描的方式,所以首先需要利用FPGA構建3*3的模板。
圖6
如圖6,通過移位寄存器和FIFO構建3*3的模板。FIFO的功能是用來做圖像行緩存,所以FIFO的大小需要根據圖像的分辨率以及像素位寬來確定。Lattice Crosslink 芯片片內擁有20個9K的分布式RAM,可用于做行緩存。
雙線性插值算法是計算該像素左右上下像素的均值來作為填充顏色,對于逐行掃描輸出的傳感器完全可以用流水線處理的方法來做加法和除法運算,從而達到很好的性能。這里要注意的一點是邊界的處理問題,因為邊界像素我們無法為它構建3*3模板,這里對于邊界像素可以采用鄰近像素顏色插值的方法來進行處理。
目前許多傳感器都是MIPI接口,而Crosslink本身就擁有強大的MIPI橋接功能,加入De-Bayer這對于Crosslink來說就可以輕松實現CSI-2輸入DSI輸出。此外Crosslink處理雙線性De-Bayer速度可以滿足148.5兆赫茲,這就意味著可以處理1080p 60幀的CSI-2轉DSI。
-
FPGA
+關注
關注
1629文章
21729瀏覽量
603009 -
圖像傳感器
+關注
關注
68文章
1897瀏覽量
129527
原文標題:圖像傳感器眼中的你
文章出處:【微信號:FPGAer_Club,微信公眾號:FPGAer俱樂部】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論