第一次寫文章,有什么不對的地方,還望各位多多指出-
學習知識內容:
*** 攝像頭原理+OV7670開發手冊
* IIC通信(軟體)
* OV7670初始化程式和獲取影像程式
* lcd液晶初始化程式
* 主函式撰寫**
整體開發流程:

一.攝像頭成像,組成原理
本次攝像頭原理參考好文章:https://blog.csdn.net/qq_40732350/article/details/88541417
攝像頭的設計與人的眼睛成像原理一致

camera的成像框架

景物通過凸鏡頭反射聚焦到感光片(CCD/CMOS:影像傳感器)中,感光片產生電荷傳導自ADC進行數模信號轉換,形成RAW顏色資料,經過ISP影像處理演算法(變成RGB,YUV常見的像素顏色格式)儲存到相應的儲存其中,在讓CPU讀取顯示到相應的顯示設備中
二. 攝像頭基本結構
攝像頭結構組成:
Lens:鏡頭,負責成像和對焦
Holder:基座,負責固定鏡頭
IR:紅外濾波片,負責過濾紅外光(濾除人不可見的波)
Sensor:影像傳感器,負責將影像轉換電信號
PCB:印刷電路板,負責供電控制及信號傳輸
FPC:可繞性印刷電路板,負責介面
馬達:用來改變像距
三.介紹幾個攝像頭核心
影像傳感器CCD,CMOS
CCD就像傳統相機的底片一樣的感光系統,是感應光線的電路裝置,你可以將它想象成一顆顆微小的感應粒子,鋪滿在光學鏡頭后方,當光線與影像從鏡頭透過、投射到CCD表面產生電流,將感應到的內容轉換成數碼資料儲存起來,CCD像素數目越多、單一像素尺寸越大,收集到的影像就會越清晰
CCD:好用,影像更清晰,公益復雜,貴
CMOS:便宜,簡單,影像質量較差

電荷耦合器件(CCD)原理簡單,我們可以把它想象成一個沒有蓋子的記憶芯片,撞擊記憶單元的光子在這些單元中產生電子(光電效應),因此光子的數目與電子的數目互成比例(光的明暗),然而光子的波長(顏色)并沒有被轉換為電子,換言之,CCD 裸芯片實際上沒有把色彩資訊轉換為任何形式的電信號,拍攝出來的照片是黑白的!(那為啥能得到彩色資料?)
大多數相機的方案:拜爾濾光片(馬賽克濾波片)+單CCD+演算法插值(ISP運算), 拜爾濾光片使每個像素只能產生紅、綠或藍三色當中一種顏色的值,但是在輸出時,由相機處理單元執行空間色彩插值法,使每個像素均包含三基色的成分,
拜爾濾光片原理


拜爾濾光片使每個像素只能產生紅、綠或藍三色當中一種顏色的值
如
通過拜爾濾光片的值為:

由于人對紅色光不敏感,對綠色光敏感,所以拜爾濾光片的色彩比為:紅:綠:藍 = 1:2:1
所以為了得到真實色彩值,紅和藍的演算法一樣,和綠不一樣,
ISP影像處理演算法
原始的資料影像經過ISP顏色差演算法,算出正確的顏色資料(RGB為一個字,所以ISP中有資料格式的轉變,
RAW->RGB,YUV)

二.OV7670攝像頭模塊 -《PZ-0V7670 攝像頭模塊開發手冊》
使用的設備:普中STM32F103學習版與之配套的OV7670攝像頭,lcd液晶屏和原理圖資料
內容:
1 OV7670 介紹
2 硬體設計
3 軟體設計
4 實驗現象
OV7670 簡單簡介(更多資訊查看相應的開發手冊)
通過 SCCB 總線控制,可以輸出整幀、子采樣、取視窗等方式的各種分
辨率 8 位影像資料,該產品 VGA 影像最高達到 30 幀/秒,用戶可以完全控制
影像質量、資料格式和傳輸方式,

描述的是 OV7670/OV7171 影像傳感器的功能模塊,包括:****(加粗為比較重要的模塊**)**
●感光陣列(Image Array)(共有 656x488 個像素,其中在 YUV 的模式中,有效像素為 640x480 個)(cmos)
●模擬信號處理理( Analog Processing)
●A/D 轉換
●測驗圖案發生器器( Test Pattern Generator)
●數字信號處理器(DSP)
●影像縮放( Image Scaler)
●時序發生器( Video Timing Generator)內部信號發生器和分布、幀率時序、自動曝光控制、輸出外部時序( VSYNC、HREF/HSYNC 和 PCLK),
●數字視頻埠( Digital Video Port)
●SCCB 介面
●LED 和閃光燈輸出控制
Note1: DSP(鏡頭校正、去噪聲、黑白點補償、自動白平衡等)配置檔案-《OV7670 Software Application Note》*
像素輸出格式:
VGA,即解析度為 640480 的輸出模式;
**QVGA,即解析度為 320240 的輸出格式,也就是本手冊我們需要用到的格
式;**
QQVGA,即解析度為 160*120 的輸出格式;
資料輸出時序
PCLK,即像素時鐘,一個 PCLK 時鐘,輸出一個像素(或半個像素,高位元組+低位元組),
VSYNC,即幀同步信號,
HREF /HSYNC,即行同步信號(有效時,資料才被穿走或者寫入)
OV7670 的影像資料輸出(通過 D[7:0])就是在 PCLK, VSYNC 和 HREF/
HSYNC 的控制下進行的(一個高電平開始寫資料,再次高電平時寫資料完成),首先看看行輸出時序,如圖所示:

對外輸出時序

因為 OV7670 的像素時鐘( PCLK)最高可達 24Mhz,我們用 STM32F103ZET6
的 IO 口直接抓取,是非常困難的,也十分占耗 CPU(可以通過降低 PCLK 輸出
頻率,來實作 IO 口抓取,但是不推薦這樣操作),所以,我們并不是采取直接
抓取來自 OV7670 的資料,而是通過 FIFO 讀取,PZ-OV7670 攝像頭模塊自帶了
一個 FIFO 芯片,用于暫存影像資料,有了這個芯片,我們就可以很方便的獲取
影像資料了
對外引腳描述

(1)如何存盤影像資料,
PZ-OV7670 攝像頭模塊存盤影像資料的程序為:等待 OV7670 同步信號→
FIFO 寫指標復位→FIFO 寫使能→等待第二個 OV7670 同步信號→FIFO 寫禁
止,通過以上 5 個步驟,我們就完成了 1 幀影像資料的存盤,
(2)如何讀取影像資料,
在存盤完一幀影像以后,我們就可以開始讀取影像資料了,讀取程序為:
FIFO 讀指標復位→給 FIFO 讀時鐘( FIFO_RCLK)→讀取第一個像素高位元組→
給 FIFO 讀時鐘→讀取第一個像素低位元組→給 FIFO 讀時鐘→讀取第二個像素
高位元組→回圈讀取剩余像素→結束,
方法:中斷檢測同步幀跳變,第一次跳變:資料可以開始寫入FIFO了,第二次跳變,資料寫入完成可開始讀取
硬體介面

OV的大量暫存器在檔案:《OV7670高級資料手冊》
程式可改進:SCCB通信方式用硬體,或者庫函式撰寫

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/230645.html
標籤:其他
