camera理論基礎和工作原理【轉】
轉自:http://www.cnblogs.com/fjutacm/p/220631977df995512d136e4dbd411951.html
寫在前面的話,本文是因為工作中需要編寫攝像頭程式,因為之前沒有做過這類產品,所以網上搜索的資料,先整理如下,主要參考文章如下,如果有侵權,請聯絡我;另外,轉載請註明出處。本文不一定全部正確,如果發現錯誤請指正。如果有新的理解,會繼續整理。
http://blog.csdn.net/xubin341719/article/details/7723725 http://blog.csdn.net/pengwentao/article/details/7180115>>Power線介紹
a>AVDD為camera的模擬電壓。
b>DOVDD為camera的GPIO口數字電壓。
c>DVDD為camera的核工作電壓。
一般來說,要求先提供sensor的GPIO口電壓,接著提供模擬電壓,最後提供工作電壓。時序如下圖:
(7)、FPC柔性電路板(柔性PCB) 簡稱"軟板", 又稱"柔性線路板",連線晶片和手機。起到電訊號傳輸作用。 (8)、ISP、DSP、基帶晶片的區別和聯絡 幾篇文章中出現的術語,這裡做個專門的補充。 >>常見基帶處理器或者基帶晶片負責資料處理與儲存,相當於一個 協處理器,主要元件為DSP、微控制器、記憶體(如SRAM、Flash)等單元,主要功能為基帶編碼/譯碼、聲音編碼及語音編碼 等。目前主流基帶架構:DSP+ARM。可分為五個子塊:CPU處理器、通道編碼器、DSP、調變解調器和介面模組。 基帶晶片是用來合成即將的發射的基帶訊號,或對接收到的基帶訊號進行解碼。具體地說,就是:發射時,把音訊訊號編譯成用來發射的基帶碼;接收時,把收到的基帶碼解譯為音訊訊號。同時,也負責地址資訊(手機號、網站地址)、文字資訊(短訊文字、網站文字)、圖片資訊的編譯。 >>ISP,Image Signal Processor,影象訊號處理器;DSP,Data Signal Processor,數字訊號處理器。 ISP一般用來處理Image Sensor(影象感測器)的輸出資料,如進行:AEC(自動曝光控制)、AGC(自動增益控制)、AWB(自動白平衡)、色彩校正、Gamma校正、祛除壞點、Auto Black Level、Auto White Level 等等功能的處理。 >>而DSP功能就比較多了,它可以做些拍照以及回顯(JPEG的編解碼)、錄影以及回放(Video 的編解碼)、H.264的編解碼、還有很多其他方面的處理,總之是處理數字訊號了。可以認為ISP是一類特殊的處理影象訊號的DSP。 在這篇文章中,可以將基帶晶片當做開發板上的控制晶片,ISP和DSP可以對等,都是對Raw Data進行處理。這裡尊重原文作者的說法,並沒有統一。 還有要注意的是,在攝像頭這部分,要看清楚ISP表示的是什麼,是Image Signal Processor(影象訊號處理器),還是Image Sensor Processor(影象感測器處理器)。像上面的OV2665裡面的ISP就是Image Sensor Processor,相當於Sensor模組中的一部分,由DSP做處理器。而下面的GC0308,則正好相反,是Image Signal Processor,是一個真正的處理器,所以在看到ISP的時候要根據語境看指的是一個具體的處理器還是模組的組成部分而非實指。 3、CCM組裝方式 (1)、定焦CCM組裝 CCM分為定焦模組和自動變焦模組,其中定焦模組主要由鏡頭、鏡座、感光積體電路、軟性線路板、補強和鋼片裝配而成,其裝配圖如下: (2)、自動變焦模組組裝 主要是鏡頭下面裝了一個VCM音圈馬達 (3)、3D模組 多臺攝像頭拍攝影象,然後組合: 4、攝像頭的一些技術指標 (1)、影象解析度/解析度(resolution)QSIF/QQVGA | 160 x 120 | 19200 | |
QCIF | 176 x 144 | 25344 | |
SIF/QVGA | 320 x 240 | 76800 | |
CIF | 352 x 288 | 101376 | 10萬畫素 |
VGA | 640 x 480 | 307200 | 30萬畫素(35萬是指648X488) |
SVGA | 800 x 600 | 480000 | 50萬畫素 |
XGA | 1024 x 768 | 786438 | 80萬畫素 |
SXGA | 1280 x 1024 | 1310720 | 130萬畫素 |
UXGA | 1600 x 1200 | 1920000 | 200萬畫素 |
QXGA | 2048 x 1536 | 3145728 | 300萬畫素(320W) |
QSXGA | 2592 x 1944 | 5038848 | 500萬畫素 |
2816 x 2112 | 2947392 | 600萬畫素 | |
3072 x 2304 | 7077888 | 700萬畫素 | |
3200 x 2400 | 7680000 | 770萬畫素 | |
3264 x 2448 | 7990272 | 800萬畫素 | |
3876 x 2584 | 10015584 | 1000萬畫素 |
(2)、sensor輸出的影象格式 >>YUV:luma(Y)+chroma(UV)格式(亮度、色度),一般情況下sensor支援YUV422格式,即Y-U-Y-V次序輸出資料。 >>RGB:傳統的紅綠藍格式,比如RGB565,5bit R + 6bit G + 5bit B,G多一位是因為人眼對綠色比較敏感。 >>RAW RGB:sensor的每一畫素對應一個彩色濾光片,濾光片按Bayer Pattern(拜耳模板)分佈,將每一個畫素的資料直接輸出,即Raw RGB Data。 >>JPEG:有些sensor,特別是低解析度的,其自帶JPEG engine,可以直接輸出壓縮後的jpg格式的資料。 注意: a>YUV一個畫素佔2B,如果畫素太大,在高時鐘下基帶晶片處理不過來,JPEG資料量就要小很多,因為基帶晶片對輸出資料的速率有要求,所以基帶晶片低時鐘下使用YUV sensor,高時鐘下使用JPEG sensor。 b>如果直接輸出RGB,對於LCD顯示是最方便的,但是大多數基帶晶片都是要求輸出為YUV格式的資料再進行,這是因為,YUV輸出資料的亮度訊號沒有任何損失,而色偏訊號人眼並不是特別敏感,RGB565輸出格式是R5G3 G3B5,會丟失很多原始資訊,所以YUV影象質量和穩定性要比RGB565好的多。因此,很低端的基帶晶片上才會輸出RGB565格式。 Raw和JPEG的區別: Raw優點: 1>Raw格式檔案本質上是一個沒有經過任何影象處理的原始檔,它能原原本本地記錄相機拍攝的資訊,沒有經過影象處理(銳化、色彩對比增強)和壓縮而造成的資訊丟失。相比之下,JPEG格式的資料經過壓縮處理,無法完整的儲存原圖形的所有資料。 2>Raw是一種專業攝影師常用的格式,因為它能原原本本地儲存資訊,讓使用者能大幅度進行後期製作,並且無論怎麼操作,照片都能無損的恢復到最初狀態;但是JPEG就弱了些,雖然因為PS等技術的發展,也可以在JPEG上進行後期製作,但是如果做大幅度的調整還是Raw檔案比較合適。 3>可以用專門的軟體修正攝像機的不足,比如佳能DPP軟體可以修正鏡頭失光、變形等。 Raw缺點: 1>儲存資料量太大,JPEG就小很多 2>需要專門的軟體來開啟,JPEG幾乎所有的PC都可以直接開啟 3>開啟速度較慢,JPEG較快 4>不同的軟體有不同的方式去演繹RAW檔案,所以在不同的軟體上會有細微的差別。 5>廠商賣的專用軟體價格較高,而這方面JPEG幾乎無成本 (3)、自動白平衡調整(AWB)
定義:要求在不同色溫環境下,照白色的物體,螢幕中的影象應也是白色的。色溫表示光譜成份,光的顏色。色溫低表示長波光成分多。當色溫改變時,光源中三基色(紅、綠、藍)的比例會發生變化,需要調節三基色的比例來達到彩色的平衡,這就是白平衡調節的實際。
(4)、影象壓縮方式
JPEG:(joint photo graphicexpert group)靜態影象壓縮方式。一種有損影象的壓縮方式。壓縮比越大,影象質量也就越差。當影象精度要求不高儲存空間有限時,可以選擇這種格式。目前大部分數碼相機都使用JPEG格式。
(5)、彩色深度(色彩位數)
反映對色彩的識別能力和成像的色彩表現能力,實際就是A/D轉換器的量化精度,是指將訊號分成多少個等級。常用色彩位數(bit)表示。彩色深度越高,獲得的影像色彩就越豔麗動人。現在市場上的攝像頭均已達到24位,有的甚至是32位(原文)
(6)、影象噪音
指的是影象中的雜點干撓。表現為影象中有固定的彩色雜點。
(7)、視角
與人的眼睛成像是相同原理,簡單說就是成像範圍。
(8)、輸出/輸入介面
序列介面(RS232/422):傳輸速率慢,為115kbit/s
並行介面(PP):速率可以達到1Mbit/s
紅外介面(IrDA):速率也是115kbit/s,一般膝上型電腦有此介面
通用序列匯流排USB:即插即用的介面標準,支援熱插拔。USB1.1速率可達12Mbit/s,USB2.0可達480Mbit/s
IEEE1394(火線)介面(亦稱ilink):其傳輸速率可達100M~400Mbit/s
(9)、CAMIF, Camera Interface
下面這張圖,沒看懂,暫時放在這裡:
(10)、FIME,Fully Interactive Moblio Camera 攝像頭採集的資料CPU無法直接處理,所以,主動晶片裡面集成了Camera控制器,即FIMC。攝像頭需要先將影象數九傳送給控制器,經過控制器處理(裁剪拉昇後直接預覽或者編碼)之後交給CPU處理。MCLK就是由FIMC提供的。 CAMMCLK給攝像頭提供時鐘,CAMRST是復位線,PWD在攝像頭工作時應該始終為敵。HREF是行參考訊號,PCLK是畫素始終,VSYNC是場同步訊號,一旦給攝像頭提供了時鐘,並且復位了攝像頭,攝像頭就開始工作了。 FIMC訊號定義如下所示(YCbCr模式)
(11)、camera時鐘域 每個攝像頭都有三個時鐘域,第一個是系統匯流排時鐘域;第二個是攝像頭畫素時鐘域PCLK;第三個是內部始終MCLK。 系統匯流排時鐘必須高於PCLK,CAM_MCLK必須固定頻率發呢拼比,如:PLL時鐘。 二、攝像頭工作原理 1、手冊中內容掃盲: 首先,我們要明白,一旦給攝像頭提供了時鐘,並且復位了攝像頭,攝像頭就可以工作了,通過PCLK、HSYNC、VSYNC聽不傳輸數字影象訊號。 攝像頭的驅動需要完成三大步: >>攝像頭的上電、時鐘這些基本條件 >>IIC保證攝像頭的初始化 >>攝像頭工作後傳回資料到主控 原圖有誤,已經修改,紅色圈圈部分。 控制部分是攝像頭上電、IIC控制介面;資料輸出是攝像頭拍攝的影象資料傳到主控晶片,所以,需要有Data、行場同步時鐘(告訴主控晶片哪些資料是一行,哪些是一幀)、以及時鐘(PCLK,畫素時鐘,告訴主控晶片哪些資料是一個畫素點)。 (1)、MCLK 攝像頭要 工作,必須要有個時鐘進行同步,這個時鐘就是MCLK,必須要有,否則攝像頭就是一個死物,這個時鐘由主控晶片提供,確切的說是有主控晶片的控制器提供,下面會提到。 (2)、RESET 復位訊號,上面有提 (3)、SDA、SCL IIC匯流排,主要作用就是為主控晶片配置或者讀取攝像頭的暫存器提供通道。mini2440音訊模組中的L3協議,也是這個作用。不要看見協議就怕,協議就是一條路,資料傳輸的路,有規定的資料傳輸的道路。 (4)、Configuration Register 配置暫存器,控制器(在主控晶片中)通過IIC來設定,相當於告訴攝像頭如何工作等。 (5)、Timing Control 時序控制,主要是根據主控晶片提供的MCLK時鐘來控制行場同步、自動曝光AEC等。因為這些都需要時鐘的配合。 (6)、Pixel Array gc0308物理上的陣列是648H*492V,實際取樣陣列是648H*488V,也是有效陣列。實際取像的陣列是640H*480V。如下圖所示: (7)、CDS Correlated Double Sampling,相關雙聯取樣電路。CCD感測器的每個畫素點輸出波形只在一部分時間內是影象訊號,其餘時間是復位電平和干擾,為了提取影象訊號並消除干擾,就要採用取樣保持電路。 (8)、Analog Processing、10bit ADC 主要是將sensor得到的電訊號轉換為數字訊號,方便ISP或者DSP處理。 (9)、Image Signal Processing 影象訊號處理器,可以理解為DSP的一種,主要是對sensor經過ADC處理後的Raw Data進行處理,主要有自動白平衡AWB、插值計算(Bayer interpolation主要是對Raw Data進行格式轉換,轉為YUV /RGB等)、去噪、gamaa修正、色彩修正、邊緣增強等。這些都是由暫存器決定,暫存器又是通過IIC匯流排來設定的。 (10)、Output Mode & Sync Control 輸出介面,從光線進入鏡頭、過濾、光感應、ADC,然後到影象資料處理,最終資料到達外部介面。攝像頭取一幅影象的整個工作完成,攝像頭本質上還是一個終端節點,所以需要將採集好的影象資料傳遞給主控晶片,所以要有資料引腳,圖形格式補在是Raw Data,而是YUV或者RGB資料。進行資料傳輸,肯定需要時鐘進行同步,所以需要PCLK,告訴主控晶片,哪個資料代表了一個畫素點;VSYNC負責告訴晶片哪些是一幀資料,HSYNC則同步行資料。 (11)、裝置地址 百科上的定義,在資料通訊中,可以傳送或接受資料的任何裝置標識。 作業系統課程上面有講到,系統為了管理外部裝置而進行的編碼。不知道這個地址是不是這個意思。 反正寫入的時候指定0x42,讀取的時候指定0x43, (12)、IIC通訊 IIC通訊是一個互動的過程,需要等待對方的確認訊號,並不是一次性完成的。首先,主機需要做兩個事情: 一個是,提供啟動、結束訊號;一個是提供IIC時鐘訊號。圖示很明白了,不在囉嗦。 (13)、時序 Timing 幀時間(Ft,Frame time)=幀時鐘不活動時間(Bt,Blank time)+啟動時間(St,Start time)+有效行時間(Vt,Valid line time)+結束時間(Et,End time)+8 空白無效行時間(Vblank/Dummy line)=Bt+St+Et。 首先要明白,物理上492行,但是實際感應光線的只有488行,4行是Dark Row,黑暗行;但是這488有資料的行中只有480行是有效行。然後推導公式,首先分析小公式——空白行時間,空白時間包括無效的幀同步時間,這裡就是VSYNC處於高電平的無效時間;開始資料採集之前需要有幾個時鐘週期的緩衝,然後才開始採集行資料,所以這個時間,也就是啟動時間也要算在空白行時間裡面,同理,480行有效資料採集完成後,也需要幾個時鐘週期表示資料採集結束,結束時間也要包括在空白行時間裡面。 一幀影象所需要的時間,首先包括空白行時間Bt,還有有效行時間Vt,然後加上8。這個8應該是代表那8行無效資料(不確定),歡迎留言! exp_time應該是曝光時間,當曝光時間小於488行資料採集時間+空白行時間,這幀時間由所有行採集的時間+空白行時間控制,那麼VSYNC無效電平的時間=行空白時間-啟動時間-結束時間。 如果曝光時間超過win_height+VB,也就是在曝光沒有在正常的一幀時間內完成,那麼肯定需要繼續曝光,幀時間由曝光時間確定。幀同步無效時間=曝光時間-win_height-啟動時間-結束時間。 (修訂一,未完待續,分享自我的為知筆記)
Signal
I/O
Description
Type
HREF
I
行同步訊號
PCLK
I
畫素時鐘
DATA[7:0]
I
畫素資料
FIELD
O
FIELD訊號
MCLK O
系統時鐘訊號