小優(yōu)智能科技有限公司成立于2015年底,是一家專注于高精度3D機器視覺模組研發(fā)、生產(chǎn)及銷售的高科技企業(yè)。
公司自主研發(fā)的3D機器視覺模組采用激光/DLP白光編碼光柵結(jié)構(gòu)光+雙工業(yè)相機方案,還原物體三維信息,廣泛應(yīng)用于消費電子領(lǐng)域、工業(yè)領(lǐng)域和安防領(lǐng)域,具有精度高、速度快、成本低的優(yōu)勢。
一.攝像頭成像原理
自然景象的反射光被鏡頭所捕捉(由鏡頭光圈調(diào)節(jié)進光量),并將聚焦好的圖像精準對焦到光電傳感器(色彩濾波會產(chǎn)生三基色),傳感器將光信號轉(zhuǎn)為數(shù)字信號,再借助模數(shù)轉(zhuǎn)換最終得到原始圖像碼流數(shù)據(jù).
二.編碼協(xié)議規(guī)范
原始碼流數(shù)據(jù)不能直接拿來使用,都要依據(jù)一定的協(xié)議規(guī)范將其編碼, 常見的編碼格式比如YUYV/MJPEG/H264/NV12。各編碼特點主要如下:
1. YUYV:原始碼流類型, 每個像素點占2個字節(jié);
2. MJPEG:運動靜止圖像(或逐幀)壓縮技術(shù),支持數(shù)據(jù)壓縮7倍左右;
3. H264:國際標準化組織(ISO)和國際電信聯(lián)盟(ITU)共同提出的繼MPEG4之后的新一代數(shù)字視頻壓縮格式
4. NV12:原始碼流類型, 每個像素點1.5個字節(jié)。
編碼目的在于借助編解碼技術(shù),可有效壓縮數(shù)據(jù)體積而不會或較少圖像質(zhì)量。
三. Linux V4L2框架
Linux系統(tǒng)應(yīng)用層和USB型攝像頭借助UVC協(xié)議交互。而現(xiàn)實中攝像頭存在多種接口類型,為了兼容不同的交互協(xié)議。在Linux kernel抽象了V4L2驅(qū)動框架,借助提供的一系列命令, 方便應(yīng)用層和各個協(xié)議對接。
V4L2(Video for Linux 2)是Linux用于支持攝像頭和視頻設(shè)備的框架。它提供了一組API和驅(qū)動程序接口,用于在Linux系統(tǒng)中進行視頻采集、視頻流處理和視頻播放等操作。
V4L2框架具有以下特點和功能:
設(shè)備抽象層:V4L2框架提供了一個設(shè)備抽象層,使得應(yīng)用程序可以與各種不同類型的視頻設(shè)備進行通信,包括攝像頭、視頻采集卡等。
統(tǒng)一的控制接口:V4L2定義了一套統(tǒng)一的控制接口,可以通過這些接口來配置和調(diào)整視頻設(shè)備的各種參數(shù),比如亮度、對比度、飽和度等。
視頻捕獲和輸出:V4L2支持視頻的捕獲和輸出功能,可以從視頻設(shè)備中獲取原始圖像數(shù)據(jù),并將其保存到文件或者進行實時顯示。
視頻流處理:V4L2框架提供了豐富的視頻流處理功能,包括圖像縮放、色彩空間轉(zhuǎn)換、幀率控制、圖像增強等,可以對視頻數(shù)據(jù)進行實時的處理和操作。
內(nèi)存映射和DMA支持:V4L2支持內(nèi)存映射和DMA(直接內(nèi)存訪問)技術(shù),可以加快視頻數(shù)據(jù)的傳輸速度,提高系統(tǒng)性能。
四. V4L2使用簡述
V4L2設(shè)備,其設(shè)備文件名通常以/dev/video開頭,后面跟著一個數(shù)字,表示設(shè)備節(jié)點號。例如/dev/video0就是第一個V4L2設(shè)備的設(shè)備文件名。
V4L2框架提供了一組API,用于控制和管理視頻設(shè)備。這些API主要包括以下幾個部分:
1.設(shè)備操作:包括打開、關(guān)閉、查詢設(shè)備信息等操作。
2.參數(shù)設(shè)置:包括設(shè)置視頻格式、幀率、曝光時間、白平衡等參數(shù)。
3.緩沖區(qū)管理:包括申請/釋放緩沖區(qū)、查詢緩沖區(qū)狀態(tài)等操作。
4.視頻流控制:包括啟動/停止視頻采集、查詢當前視頻幀等操作。
五. V4L2框架圖
六. 常見攝像頭的輸出格式
1. RAW RGB格式
RAW RGB是攝像頭陣列獲取的數(shù)據(jù),攝像頭經(jīng)光電轉(zhuǎn)換后輸出的數(shù)據(jù)就是RAW RGB。攝像頭每個感光點只能識別紅綠藍顏色中的一種。常說的30萬像素就是指30萬個感光點。
傳統(tǒng)的紅綠藍格式如RGB565,數(shù)據(jù)格式為5bitR+6bitG+5BitB,G是6bit,原因是人眼對綠色比較敏感。
總結(jié), RAW RGB每個像素只有一種顏色(R/G/B的一種),RGB每個像素都有三種顏色,值在0-255之間, 攝像頭輸出的數(shù)據(jù)RAW DATA,經(jīng)過ISP彩色插值算法轉(zhuǎn)換就變成了RGB。
2. YUV
與RGB相比,YUV占用更少的空間,主流的采樣方式有三種,YUV4:4:4,YUV4:2:2,YUV4:2:0.
Y表示亮度分量(Luma):如果只顯示Y的話,圖像看起來會是一張黑白照.
U(b)表示色度分量:是藍色部分去掉亮度(Y)。
V(Cr)表示色度分量:是紅色部分去掉亮度(Y)。
YUV4:4:4采樣,每一個Y對應(yīng)一組UV分量。意思是4個像素里面的數(shù)據(jù)有4個Y,4個U,4個V。
YUV4:2:2采樣,每一個Y對應(yīng)一組UV分量。意思是4個像素里面的數(shù)據(jù)有4個Y,2個U,2個V。
YUV4:2:0采樣,每一個Y對應(yīng)一組UV分量。意思是4個像素里面的數(shù)據(jù)有4個Y,1個U,1個V。
七. 視頻編碼原理與發(fā)展
圖像數(shù)據(jù)基于互聯(lián)網(wǎng)傳輸,使用編解碼技術(shù)可以減少帶寬, 統(tǒng)一視頻編碼標準,提高相應(yīng)的兼容性。