引言:前端
做爲消費者,咱們對於各類形式的視頻系統都已經很是熟悉了。可是從嵌入式開發人員的角度來看,視頻就好像是一張紛繁複雜的網絡,裏面充滿了各類不一樣的分辨率、格式、標準與顯示等。算法
視頻源微信
一、模擬視頻源網絡
一個視頻解碼器芯片能夠將模擬視頻信號(例如NTSC、PAL、CVBS、S-Video)轉換爲數字視頻信號(通常爲ITU-R BT.601/656 YcbCr 或RGB格式及其變種)。這是一個很是複雜的、多級處理的過程,其中涉及的操做有:從輸入數據中提取定時信息,分離亮度和色度信號,將色度信息分離爲Cr和Cb份量,採樣輸出數據,以及爲數據分配適當的格式等。經過一些串行接口,例如SPI和I2C,能夠對解碼器的操做參數進行配置。下圖是常見的解碼器框圖。ide
視頻解碼方框圖性能
數字視頻源:編碼
CCD和CMOS傳感器 當今視頻信號源基本上都是以電荷耦合器件(CDD)和CMOS技術爲基礎的。這兩種技術均可以將光線轉換爲電信號,可是二者的具體轉換機理有所不一樣。spa
在CCD器件中,傳感器的表面覆蓋着一層光敏材料,由數百萬個感光像素點構成一個感光陣列。在光線下暴露以後,整個CCD像素整列上積累的電荷被讀出到器件的一端,而後經過模擬前端(Analog Front End,AFE)芯片或者CCD處理器進行數字化轉換。而CMOS傳感器則能夠直接將每個像素點上暴露的光線強度進行數字化轉換。視頻
CCD與CMOS原理對象
CCD與CMOS傳感器
通常來講,CCD具備更高的成像質量和更高的噪聲性能,但比計耗電。而CMOS傳感器則更容易製造,而且具備更低的耗能,可是成像質量不過高。部分緣由是每個像素點上的晶體管會阻塞一部分光線。不過,目前的CMOS技術已經開始在成像質量上和CCD技術很是接近了,如今,愈來愈多的中檔相機傳感器都是基於CMOS技術的。
無論採用什麼樣的技術,傳感器陣列上的全部光感點都是對灰度級敏感的,灰度級從最暗(黑色)到最亮(白色)。這些感光點對灰度級敏感到何種程度被稱爲」位深度」。所以,8比特的像素能夠分辨出28即256個漸變的灰度,而12比特的像素則能夠分辨出4096個漸變的灰度。整個感光陣列上面有幾層色彩過濾材料,將每個像素的感光點分爲幾個對顏色敏感的」子像素」。這種安排方式容許對每個像素感光點測量不一樣的顏色強度。這樣,每個像素感光點上的顏色就能夠看做該點的紅色、綠色和藍色通道透光量的疊加和。位深度越大,則能夠產生的RGB空間內的顏色也就越多。例如,24位顏色(RGB各佔8位)能夠產生224即大約1 670萬種顏色。
部分24位顏色編碼
Bayer pattern 爲了恰當的描繪彩色的圖像,傳感器須要每一個像素位置有3個顏色樣本——最多見的是紅、綠和藍。可是,若是在每一個相機裏面放置3個獨立的傳感器,在成本方面又是沒法接受的(儘管後來這種技術愈來愈實用化)。更重要的是,當傳感器的分辨率增長到5~10百萬像素時,就越加有必要利用某種圖像壓縮算法來避免在每一個像素位置輸出3字節(或者更壞的狀況,對於更高分辨的傳感器,可能要輸出3個12比特的字)。
不過別擔憂,由於一些相機制造商已經發明瞭一些很聰明的方法來減小須要的顏色樣本數量。最經常使用的方法是使用顏色過濾陣列(Color Filter Array,CFA),這個陣列僅僅測量像素點的一個顏色份量。而後,經過圖像處理器進行插值獲得其餘顏色份量的值,看起來好像是每一個像素點測量了3中顏色。
Bayer pattern圖像傳感排列
當今最流行的CFA是Bayer pattern,如上圖,這種方法是由柯達(Kodak)公司發明的,利用人眼對綠色的分辨率要高於對紅色和藍色的分辨率這一現象。所以,在Bayer顏色過濾陣列裏,綠色的過濾點是藍色或紅色過濾點的兩倍。這就產生了一種輸出格式,通俗的講,就是」4:2:2 RGB」格式,即每發送兩個紅色和藍色像素值就要發送4個綠色像素值。
鏈接圖像傳感器
CMOS 傳感器一般會輸出一個並行的像素數據流,格式通常爲YCbCr或RGB,同時還有水平和垂直同步信號以及一個像素時鐘。有時候,也能夠由外部時鐘信號以及同步信號來控制圖像的數據從傳感器中輸出。
另外一方面,CCD通常要搭配一個AFE芯片(如AD9948)。該類芯片負責處理模擬輸出信號,將其數字化,併產生適當的時序去掃描CCD成像陣列。處理器爲AFE芯片提供同步信號,而AFE芯片則用這些控制信號去管理CCD成像陣列。從AFE芯片輸出的數字化後的並行輸出數據流多是每像素10比特或12比特的分辨率。
LVDS(Low-Voltage Differential Signaling,低電壓差分信號)已經成爲並行數據總線的一種重要替代方案。LVDS 是一種低成本、低引腳數、高速串口藉口,比標準的並行接口具備更好的抗干擾性能和更低的功耗。這是很重要的特性,尤爲是隨着傳感器分辨率和顏色深度的不斷提升,以及便攜式多媒體應用日益普遍。
圖像流水線
固然,拍照的過程並非在傳感器處結束了,正相反,它纔剛剛開始。咱們來看看,一幅原始圖像在變成顯示器上的一幅漂亮的圖片以前要經歷哪些步驟。有時候,這些是在傳感器電子模塊內部完成的(尤爲是用CMOS傳感器時),而有些時候這些步驟則必須由媒體處理器來執行。在數碼相機中,這一系列處理階段被稱做」圖像處理流水線」,簡稱爲」圖像流水線」。
圖像處理流水線舉例
機械反饋控制
在鬆開快門以前,對焦和曝光系統連同其餘機械相機組件一塊兒根據場景的特徵控制鏡頭位置。自動曝光算法測量各個區域的亮度,而後經過控制快門速度和光圈大小對過分曝光或者曝光不足的區域進行補償。這裏的目標是保持圖像中不一樣的區域內具備必定的對比度,並達到一個目標平均亮度。
自動對焦
自動對焦算法分爲兩類。主動方法利用紅外線或超聲波發射器/接收器來估計相機和要拍的對象之間的距離。被動方法則是根據相機接收圖像作出對焦決策。
在這兩個子系統中,媒體處理器經過PWM輸出信號控制各個鏡頭和快門馬達。對於自動曝光控制,也要調整傳感器自動增益控制(Automatic Gain Control ,AGC)電路。
自動對焦
預處理
正如咱們前面討論的,傳感器的輸出須要通過伽馬校訂才能用於顯示,同時也對傳感器的採集響應進行補償。
因爲傳感器一般都會有一些有缺陷的像素點,所以一種經常使用的預處理技術是經過中位數濾波消除這些缺陷,原理就是像素與像素之間出現急劇的變化是不正常的,由於光學處理過程稍微模糊了圖像。
濾波與圖像補償
這組算法考慮了鏡頭的物理特性,也就是鏡頭會在必定程度上歪曲用戶看到的實際景象。不一樣的鏡頭可能引發不一樣的失真,例如廣角鏡頭會產生」桶狀」或」膨脹」效應,而長焦鏡頭則會產生」收縮」效應。鏡頭的陰影失真下降了周圍圖像的亮度。色差會引發周圍出現條紋。爲了糾正這些天真,媒體處理器須要運用數學變換來處理圖像。
曝光補償
預處理的另外一個用處是圖像的穩定性補償,或者稱爲防抖動。這時,處理器會根據接收圖像的平移運動調整,固然這經常要藉助於外部傳感器,也就是實時感知傳感器的運動。
高斯低通濾波
白平衡
預處理的另外一個階段是白平衡。當咱們看見一個場景時,無論光照條件如何,咱們的眼睛老是會把眼睛看到的一切調整到同一組天然顏色下的狀態。例如,無論咱們是在室內熒光燈下,仍是在室外陽光底下,一個深紅色的蘋果,咱們看來都是深紅色。可是,圖像傳感器對顏色的」感知」卻極大地依賴於光照條件,因此咱們必須將傳感器得到的圖像映射爲」與光照無關」才能最終輸出。這種映射處理能夠手動也能夠自動完成。
在手動系統中,你能夠用相機指定要進行」白平衡」的對象,而後相機將調節整幅圖像的」色溫」以知足這種映射。另外一方面,自動白平衡(Automayic White Balance,AWB)利用圖像傳感器的輸入和額外的一個白平衡傳感器共同決定應該將圖像中哪一部分做爲」真正的白色」。這其實是調整了圖像中R、G、和B通道之間的相對增益。很顯然,AWB要比手動方法多一些圖像處理的過程,這也是廠商專屬算法的另外一個目標。
白平衡
拜耳(Bayer)插值
對拜耳數據插值,多是圖像處理流水線中最重要的、數值計算最多的操做。每個相機制造商通常都有本身獨特」祕方」,不過通常來說這些方法最終能夠分爲主要的算法大類。
非自適應算法,例如雙線性插值或者雙三次插值,是其中實現最簡單的方法,在圖像的平滑區域內這些算法工做的很好。可是,邊緣和紋理較多的區域則對這些直接實現的方法提出了巨大的挑戰。自適應算法,能夠根據圖像局部的特徵自動改變行爲,其結果會更好。
自適應算法的一個例子是邊緣指導重構(edge-directed reconstruction)。該算法會分析某個像素周圍的區域,而後在決定在哪一個方向插值。若是算法發現附近有一個邊緣,則會沿着邊緣進行插值,而不會穿越這個邊緣。另外一種自適應算法則假定一個完整的物體具備恆定的顏色,這樣能夠防止在當個物體內顏色出現突變。
除此以外,還有不少的插值方法,其中有些涉及頻域分析、貝葉斯(Bayesian)機率估計,甚至還與神經網絡有關。
顏色變換
在這個階段,插值後的RGB被轉換到目標顏色空間(若是還不是在正確的顏色空間中)。爲了壓縮或者在電視上顯示,一般還會涉及一個RGB -YcbCr的矩陣轉換,另外還須要一個伽馬校訂階段來適應目標顯示。在這個階段,也可能將YCbCr輸出數據進行色度下采樣造成標準的4:2:2格式,以較小的視覺損失達到減少帶寬的目的。
後處理
在這個階段,經過各類濾波操做使圖像更加完美,而後就能夠發送到顯示器或者儲介質上。例如,邊緣加強、像素的閾值降噪、人工顏色移除等在這個階段都是很是廣泛的。
顯示/壓縮/存儲
一旦圖像處理完畢,圖像處理流水線將分爲兩個不一樣的分支。首先,通過後處理的圖像會輸出到顯示器件上,通常是LCD屏幕(但有時候也有多是NTSC或PAL電視顯示器,固然這是在特定的相機模擬下)。第二,圖像被髮送到媒體處理器中進行壓縮處理,在圖像存儲到本地的存儲介質(通常是非易失性閃存卡)中以前,先用工業標準的壓縮技術(例如JPEG)進行處理。
版權全部權歸卿萃科技,轉載請註明出處
做者:卿萃科技ALIFPGA
原文地址:卿萃科技FPGA極客空間 微信公衆號
掃描二維碼關注卿萃科技FPGA極客空間