全面解讀攝像頭結構和工作原理_第1頁
全面解讀攝像頭結構和工作原理_第2頁
全面解讀攝像頭結構和工作原理_第3頁
全面解讀攝像頭結構和工作原理_第4頁
全面解讀攝像頭結構和工作原理_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第第頁全面解讀攝像頭結構和工作原理

一、攝像頭結構和(工作原理).

拍攝景物通過鏡頭,將生成的(光學)圖像投射到(傳感器)上,然后光學圖像被轉換成電信號,電信號再經(jīng)過模數(shù)轉換變?yōu)椋〝?shù)字信號),數(shù)字信號經(jīng)過(DSP)加工處理,再被送到(電腦)中進行處理,最終轉換成(手機)屏幕上能夠看到的圖像。

數(shù)字(信號)處理(芯片)DSP(DIGITALSIGNALPROCESSING)功能:主要是通過一系列復雜的數(shù)學(算法)運算,對數(shù)字圖像信號參數(shù)進行優(yōu)化處理,并把處理后的信號通過(USB)等(接口)傳到PC等設備。DSP結構框架:

1.ISP(imagesignalprocess(or))(鏡像信號(處理器))

2.JPEGencoder(JPEG圖像解碼器)

3.USBdevicecontroller(USB設備(控制器))

常見的攝像頭傳感器類型主要有兩種,

一種是CCD傳感器(ChagreCou(led)Device),即電荷(耦合器)。

一種是CMOS傳感器(ComplementaryMetal-OxideSem(ic)onductor)即互補性金屬氧化物(半導體)。

CCD的優(yōu)勢在于成像質量好,但是制造工藝復雜,成本高昂,且耗電高。在相同分辨率下,CMOS價格比CCD便宜,但圖像質量相比CCD來說要低一些。CMOS影像傳感器相對CCD具有耗電低的優(yōu)勢,加上隨著工藝技術的進步,CMOS的畫質水平也不斷地在提高,所以目前市面上的手機攝像頭都采用CMOS傳感器。

手機攝像頭的簡單結構

濾光片有兩大功用:

1.濾除(紅外)線。濾除對可見光有干擾的紅外光,使成像效果更清晰。

2.修整進來的光線。感光芯片由感光體(CELL)構成,最好的光線是直射進來,但為了怕干擾到鄰近感光體,就需要對光線加以修整,因此那片濾光片不是玻璃,而是石英片,利用石英的物理偏光特性,把進來的光線,保留直射部份,反射掉斜射部份,避免去影響旁邊的感光點.

二、相關參數(shù)和名詞

1、常見圖像格式

1.1RGB格式:

傳統(tǒng)的紅綠藍格式,比如RGB565,RGB888,其16-bit數(shù)據(jù)格式為5-bitR+6-bitG+5-bitB。G多一位,原因是人眼對綠色比較敏感。

1.2YUV格式:

luma

(Y)

+

ch(rom)a

(UV)

格式。YUV是指亮度參量和色度參量分開表示的像素格式,而這樣分開的好處就是不但可以避免相互干擾,還可以降低色度的采樣率而不會對圖像質量影響太大。YUV是一個比較籠統(tǒng)地說法,針對它的具體排列方式,可以分為很多種具體的格式。

色度(UV)定義了顏色的兩個方面─色調與飽和度,分別用CB和CR表示。其中,Cr反映了RGB輸入信號紅色部分與RGB信號亮度值之間的差異。而Cb反映的是RGB輸入信號藍色部分與RGB信號亮度值之間的差異。

主要的采樣格式有YCbCr40、YCbCr42、YCbCr41和YCbCr44。

1.3RAWdata格式:

RAW圖像就是CMOS或者CCD圖像感應器將捕捉到的光源信號轉化為數(shù)字信號的原始數(shù)據(jù)。RAW文件是一種記錄了(數(shù)碼)相機傳感器的原始信息,同時記錄了由相機拍攝所產(chǎn)生的一些元數(shù)據(jù)(Met(ad)ata,如ISO的設置、快門速度、光圈值、白平衡等)的文件。RAW是未經(jīng)處理、也未經(jīng)壓縮的格式,可以把RAW概念化為“原始圖像編碼數(shù)據(jù)”或更形象的稱為“數(shù)字底片”。sensor的每一像素對應一個彩色濾光片,濾光片按Bayerpat(te)rn分布。將每一個像素的數(shù)據(jù)直接輸出,即RAWRGBdata

Rawdata(RawRGB)經(jīng)過彩色插值就變成RGB.

RAW格式圖像示例

2.相關技術指標

2.1圖像解析度/分辨率(Resolu(ti)on):

SXGA(1280x1024)又稱130萬像素

XGA(1024x768)又稱80萬像素

SVGA(800x600)又稱50萬像素

VGA(640x480)又稱30萬像素(35萬是指648X488)

CIF(352x288)又稱10萬像素

SIF/QVGA(320x240)

QCIF(176x144)

QSIF/VGA(160x120)

2.2彩色深度(色彩位數(shù)):

256色灰階,有256種灰色(包括黑白)。

15或16位彩色(高彩色):65,536種顏色。

24位彩色(真彩色):每種原色都有256個層次,它們的組合便有256*256*256種顏色。

32位彩色:除了24位彩色的顏色外,額外的8位是儲存重疊圖層的圖形(資料)(alpha頻道)。

2.3光學變焦和數(shù)碼變焦:

光學變焦:

通過鏡頭的調整,拉近拉遠所要拍攝的對象,保持像素不變和畫質基本不變,卻可以拍到自己

理想的物像。

數(shù)碼變焦:其實沒有什么變焦,只是從原圖片中截取出來放大,你從液晶屏幕上看到變大了,實際上畫質并沒有本質提高,而像素比你相機能拍攝的最大像素降低了。畫質上說基本是雞肋把,但是可以提供一些方便。

2.4圖像壓縮方式:

JPEG/M-JPEG

H.261/H.263

MPEG

H.264

2.5圖像噪音:

指的是圖像中的雜點干撓。表現(xiàn)為圖像中有固定的彩色雜點。

2.6自動白平衡處理技術(auto

WhiteBalance):

簡單來說就是:攝像機對白色物體的還原。相關概念:色溫。

2.7視角:

與人的眼睛成像是相成原理,簡單說就是成像范圍。

2.8自動對焦:

自動對焦可以分成兩大類:一類是基于鏡頭與被拍攝目標之間距離測量的測距自動對焦,另一類是基于對焦屏上成像清晰的聚焦(檢測)自動對焦(清晰度算法)。

注:變焦就是把遠處的物體拉近。對焦是讓圖像清晰。

2.9自動曝光和Gamma:

就是光圈和快門的組合。光圈,快門速度,ISO。Gamma即人眼對亮度的響應曲線。

三、(高通)的CAMERA部分(硬件)架構

CAMERA部分硬件架構

VFE:VIDEOfront-end(視頻)前端

VPE:Videopreprocessing視頻預處理

攝像頭模組中自帶了ISP(圖像信號處理器),所以,VFE和VPE有關圖像效果處理的功能都是關閉的。

1.VFE的功能:

1.1通過算法提高圖像的質量。

1.2提供高分辨率的圖像的AWB(自動白平衡)/AE(自動曝光)/AF(自動對焦)算法處理。

1.3圖像衰減校正。

1.4低光下的噪聲濾波。

1.5圖像色彩效果優(yōu)化。

1.6皮膚顏色效果優(yōu)化。

1.7圖像抖動計算。

1.8

亮度適應算法。

2.VPE的功能:

2.1圖像穩(wěn)定性。

2.2數(shù)字對焦。

2.3圖像旋轉。

2.4Overlay。

三、(android)系統(tǒng)camera基本架構

1.應用層

Camera的應用層在Android上表現(xiàn)為直接調用(SD)KA(PI)開發(fā)的一個Camera應用APK包。代碼在/android/packages/apps/Camera下。主要對android.hardware.Camera(在Framework中)類的調用,并且實現(xiàn)Camera應用的業(yè)務邏輯和UI顯示。一個Android應用中若要使用這個android.hardware.Camera類,需要在Manifest文件聲明Camera的權限,另外還需要添加一些

元素來聲明應用中的Camera特性,如自動對焦等。

具體做法可如下:

2.Framework層

2.1android.hardware.Camera:代碼位置/android/frameworks/base/core/(java)/android/hardware/Camera.java

這部分目標是framework.jar。這是是Android提供給app層調用的java接口。這個類用來連接或斷開一個Camera服務,設置拍攝參數(shù),開始、停止預覽,拍照等。

2.2android.hardware.Camera這個類是和JNI中定義的類是一個,有些方法通過JNI的方式調用本地代碼得到,有些方法自己實現(xiàn)。

Camera的JAVAnative調用部分(JNI):/android/frameworks/base/core/jni/android_hardware_Camera.cpp。Camera.java承接JAVA代碼到(C++)

代碼的橋梁。編譯生成libandroid_runtime.so。libandroid_runtime.so庫是公用的,其中除了Camera還有其他方面的功能。

2.3Camera框架的client部分:

代碼位置:/android/frameworks/base/libs/camera/下5個文件。

Camera.cpp

CameraPa(ram)ete(rs).cpp

ICamera.cpp

ICameraClient.cpp

ICameraService.cpp

它們的頭文件在/android/frameworks/base/include/camera目錄下。

這部分的內容編譯生成libcamera_client.so。在Camera模塊的各個庫中,libcamera_client.so位于核心的位置,作為Camera框架的Client客戶端部分,與另外一部分內容服務端libcameraservice.so通過進程間通訊(即Binder機制)的方式進行通訊。

2.4Camera框架的service部分:

代碼位置:/android/frameworks/base/services/camera/libcameraservice。

這部分內容被編譯成庫libcameraservice.so。CameraService是Camera服務,Camera框架的中間層,用于鏈接CameraHardwareInterface和Client部分,它通過調用實際的Camera硬件接口來實現(xiàn)功能,即下層HAL層。

四.攝像頭預覽、拍照、錄像基本數(shù)據(jù)流向和處理流程以及驅動調試

cpp主要分為三個部分,preview,snapshot,video。它們分別用一個pthread進行處理。另外還有autofocus功能也是用pthread的方式處理。預覽或拍照、視頻線程處理得到的數(shù)據(jù)幀都以dat(ac)allback的方式回調到上層CameraService.cpp中,進行存儲或預覽等操作。以下是HAL層部分的代碼大概的調用結構流程。

整個模塊主要巡行三個主線程:control、config及frame。

control用來執(zhí)行總的控制,是上層控制接口。

config主要進行一些配置,這個線程里面主要進行3A的工作,另外還有一些跟效果有關的設置;

frame線程主要用來做幀queue的循環(huán)獲取處理。所有事件或狀態(tài)的反饋,用回調函數(shù)的方式傳回QualcommCameraHardware.cpp。

2.驅動部分從設備驅動s5k8aa.c開始。新建平臺設備后,執(zhí)行入口函數(shù)probe時,調用創(chuàng)建攝像頭設備功能函數(shù)

intmsm_camera_drv_start(structplatform_device*dev,

int(*sensor_probe)(conststructmsm_camera_sensor_info*,

structmsm_sensor_ctrl*))

并將設備信息結構體和攝像頭設備調用入口sensor_probe傳入。msm_camera_drv_start(xxx)函數(shù)在msm_camera.c中實現(xiàn)。他創(chuàng)建了提供上層調用的四個終于設備結點:

/dev/msm_camera/frame%d

/dev/msm_camera/control%d

/dev/msm_camera/config%d

/dev/msm_camera/pic%d

實現(xiàn)了上層庫對VFE模塊,VPE模塊,jpeg_encoder模塊和攝像頭sensor模塊驅動的控制調用接口。在file_operations中的相應函數(shù)中分別實現(xiàn)的是這些設備的新建初始化和IOCTL功能調用接口。

然后這個函數(shù)還創(chuàng)建了四個工作隊列:

structmsm_device_queueevent_q;

structmsm_device_queueframe_q;

structmsm_device_queuepict_q;

structmsm_device_queuevpe_q;

event_q包括/dev/msm_camera/control%d傳入的控制信號隊列,用于將上層傳下來的控制命令(command)傳到configthread中去。

frame_q用于對圖像幀的操作管理,預覽或錄像時幀將傳遞給DSP進行處理。

pict_q包含拍照幀,用于給jpeg_encoder進行圖像編碼處理。

vpe_q是VPE控制命令隊列。

s5k8aa.c是相應攝像頭設備的驅動部分。它的功能很簡單,主要實現(xiàn)sensor模塊的創(chuàng)建、初始化和控制。主要實現(xiàn)以下三個函數(shù):

s->s_init=ov2685_sensor_init;

s->s_release=ov2685_sensor_release;

s->s_config=ov2685_sensor_config;

ov2685_sensor_init函數(shù):

主要實現(xiàn)攝像頭的上電、(時鐘)控制(MCLK)、設備初始化功能。

上電分為DOVDD、DVDD、AVDD、reset、PWDN幾個部分。需要按照設備要求順序操作,一般時鐘控制順序也包含在內。

設備初始化過程是將sensor設備的所有(寄存器)全部初始化一遍,采用IIC方式將初始化寄存器地址和值全部發(fā)送到sensor端。完成后此時攝像頭模組才能正常工作,并將圖像通過MIPI線路傳送到(CPU)端。

ov2685_sensor_co

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論