1、閾值
閾值其實就是0/1的分界。大於閾值被二值化處理成1,小於閾值被二值化處理成0。
可以模擬微控制器的ttl和cmos兩種電平。
2、顯示攝像頭影象
在介面指定區域顯示 mcu 傳送回來的影象資料。其中 1:1 顯示畫素點,即按照設定的解析度進行原圖顯示;根據介面尺寸放大畫素,即在根據顯示區域的大小進行拉伸顯示。
要注意有的上位機需要在這裡進行設定,意義在於由於我們做智慧型車只需要採集攝像頭的部分畫素(隔行隔畫素採集),因此如果 1:1 顯示影象,影象可能很小,而根據介面尺寸放大畫素,就能清楚得看到影象了。(山外不存在的!)
3、影象大小
這個要尤其格外非常注意,根據 mcu 的程式採集的畫素解析度進行設定,只有設定得和程式的一致了,上位機才能採集並正確地顯示影象。
4、連續採集與採集一副圖
上位機接收 mcu 上傳的影象,根據協議,要先搜尋到影象頭 ff,才認為是一幀影象的開始,才開始顯示影象。
5、什麼是 rgb565
眾所周知,rgb 是組成彩色的三基色,要想顯示乙個畫素的顏色,每個畫素
都需要3 個 byte資料的r、g、b
來表示,那一副320*240
的彩色影象,就需要320*240*3=230400b=225kb
的資料來儲存,這樣看來,儲存影象的空間開銷是極大的。而在乙個畫素 rgb 中,g 分量的比重是最大的,r 和 b 的比重相對小一些,因此人們又想出了用r:g:b=5:6:5
的比例關係,來表示乙個畫素,這樣一來,乙個畫素僅僅需要2 個 byte就可以表示其彩色資訊(這個 2 個 byte 中,r 佔 5bit,g 佔 6bit,b 佔 5bit),320*240
的彩色影象的儲存空間也由225kb 減小到 150kb
。
接著就不難想象它的儲存方式了,
攝像頭的資料是在每乙個pclk 的上公升沿去讀取的。若攝像頭預設輸出的格式為rgb565
,那麼攝像頭在上電之後,每觸發 2 個 pclk,讀取 2 個位元組,才是乙個畫素。在這個畫素中,rgb 的分布如下圖所示:在第乙個位元組(first byte)中,y[7..3]為 r[4..0],y[2..0]為 g[5..3]
;在第二個位元組(second byte)中,y[7..5]為 g[2..0]y[4..0]為 b[4..0]
6、 yuv4:2:2
人的眼睛對低頻訊號比對高頻訊號具有更高的敏感度,事實上,人的眼睛對明視度的改變比對色彩的改變要敏感的多。
因此,人們將rgb 三色訊號改為 yuv來表示,其中y 為灰度,uv 為色差
。如果是表示一副彩色影象,同樣的道理,yuv444 是無損的儲存方式,但是需要 3 個位元組,儲存空間開銷很大。由於y 分量比 uv 分量重要的多,因此人們用 yuv422 來表示。這樣一來影象被壓縮了很多,乙個位元組就可以表示其彩色的資訊。
7、常見的ov7670和7620的對比學習
ov7670
ov7670 是 rgb565 輸出
對於 ov7670,由於它只有一組並行的資料口 y[7:0],所有的畫素資料都從
這個資料口出,因此每次讀取一次資料口,可以讀乙個位元組(byte)。下圖給出
了 k 個畫素(2k 個位元組)輸出的格式。
ov7620 是 yuv422 輸出
對於 ov7620,它有 2 組並行的資料口 y[7..0]和 uv[7..0],其中對於資料口
y[7..0],輸出的是灰度值 y,對於 uv[7..0]輸出的色度訊號 uv。下圖給出了 k 個
畫素(k 個位元組)輸出的格式。
如果從這兩款選擇一款做飛卡的話,賽道是白底黑線,因此我們只關心影象的灰度值,並不是需要他們的彩色值。
由此看來,對於 ov7670,它只有一組資料口,預設輸出rgb 彩色影象,對我們來說並不是想要的;而對於 ov7620,它有兩組資料口,一組資料口輸出的正是灰度值 y,我們無需去管 uv 引腳輸出的訊號,只採集 y口的資料,就能完美地體現出賽道的資訊來。對於全白的賽道背景,採集回來的資料是 255,對於黑色的賽道,採集回來的資料是 0,這樣就能很好的區別開賽道與背景。
8、什麼是 p 制,什麼是 n制
當前在智慧型車競賽中,我們用到的攝像頭,基本只有 2 種制式 p(pal)制和
n(ntsc)制。pal 制式和 ntsc 制式有很多區別,其中最主要的兩個區別就是p 制標準的攝像頭,每秒輸出 25 幀影象;n 制標準的攝像頭,每秒輸出 30 幀影象。
常見的p制:ov6620、sonyccd、lg ccd ov5116等
常見的n制:ov7620、ov7640等
10、逐行掃瞄與隔行掃瞄
所謂逐行掃瞄,即攝像頭的畫素自左向右、自上而下,一行緊接一行掃瞄輸
出
隔行掃瞄,就是在每行掃瞄點數不變的前提下,將影象分成 2 場進行傳送,這兩場分別稱為奇場和偶場。奇數場傳送 1、3、l 5、…奇數行;偶數場傳送 2、4、6、…偶數行
逐行掃瞄:ov6620、ov7640 等
隔行掃瞄:ov7620 等
總結一下:ov7620yuv422灰度輸出,30幀/s,隔行掃瞄,60場/秒。
11、什麼是消隱訊號
隱區的出現,在電視機原理上,是因為電子束結束一行掃瞄,從一行尾換到另一行頭,期間的空閒期,這叫做行消隱訊號;同理,從一場尾換到另一場頭,期間也會有空閒期,這叫做場消隱訊號。
12、時序分析
場中斷訊號 vsyn、行中斷訊號 href、畫素中斷訊號 pclk
拿ov7620舉例,
vsyn 的週期是 16.64ms,高電平時間為換場時間,約 80us;低電平時間內,畫素輸出。我們在採集 vsyn 脈衝時,既可以採集上公升沿,也可以採集下降沿,採集下降沿更準確些,這也是一場的開始。從 vsyn 的週期可以算出,1s/16.64ms=60 ,ov7620 是隔行輸出,所以它的幀率是 30 幀/s,也是60場/s。
href 的週期 63.6us,高電平時間為畫素輸出時間,約 47us;低電平時間為換行時間,因此採集 href 一定要採集其上公升沿,下降沿后的資料是無效的。從href 的週期可以算出,16.64ms/63.6us≈261,除去期間的間隙時間,可以算出每場影象有 240 行。
pclk 的週期是 73ns,高電平輸出畫素,低電平畫素無效。pclk 是一直輸出的,因此一定要在觸發 vsyn 並且觸發 href 以後,再去捕捉 pclk 才能捕捉到畫素資料。從pclk 的週期可以算出,47us/73ns≈640,可以算出每行影象中有 640個畫素點。
Android開發之攝像頭
通過以下函式來獲得手機支援的picture和preview的大小 選擇合適的預覽尺寸 listsizelist parameters.getsupportedpreviewsizes 如果sizelist只有乙個我們也沒有必要做什麼了,因為就他乙個別無選擇 if sizelist.size 1 i9...
opencv之呼叫攝像頭
基礎知識 cap.set propid,value cap.isopened 返回 true false 檢查攝像頭初始化是否成功 cap.read 返回兩個值 再返回乙個值,為每一幀的影象,該值是乙個三維矩陣 通用接收方法為 ret,frame cap.read ret 布林值 frame 影象的...
ros之除錯orbbec攝像頭
orbbec攝像頭分幾種 有mini和mini s,其中mini是0.6m 8m,mini s是0.4m 2m。當前時間2018年1月18日 mini使用的是一代晶元,用rviz檢視的點雲資料噪點特別多,而mini s使用的是二代晶元,檢視的點雲資料非常清晰。用ros的啟動方式 roslaunch ...