OV7670和ADV611的圖像采集與壓縮系統(tǒng)設計
引言
本文引用地址:http://www.2s4d.com/article/201610/306316.htm隨著圖像傳感器、DSP及計算機技術的快速發(fā)展,圖像監(jiān)控系統(tǒng)已經被人們用于生活、工業(yè)控制、科學研究等各個領域,因此圖像信息的采集得到了廣泛的應用。根據對磁懸浮試驗線通信基站系統(tǒng)診斷的需要,設計了圖像信息采集及其壓縮傳輸的子系統(tǒng),將基站的圖像監(jiān)控信息作為整個系統(tǒng)診斷數據的一部分實時地傳回控制室。鑒于傳輸帶寬有限以及原始圖像數據的冗余性,對原始圖像數據進行壓縮處理。由于圖像的突變性較大,在控制壓縮率時采用了PID控制算法。在接收終端對壓縮后的數據進行解碼處理,就可以得到實時的監(jiān)控圖像。
1 系統(tǒng)原理及結構
該系統(tǒng)作為整個磁懸浮試驗線通信基站診斷系統(tǒng)的一部分,系統(tǒng)的結構圖如圖1所示。

OV7670采集到的圖像信息經過ADV611壓縮處理后,由FPGA通過低電壓差分信號(LVDS)將壓縮后的數據傳輸到板卡的控制模塊,由控制模塊將包括監(jiān)控圖像數據在內的診斷數據組幀后傳輸到控制中心。OV7670圖像傳感器是OmniVision公司生產的CMOS圖像傳感器,其體積小,工作電壓低,內部集成了感光矩陣、模擬信號處理器、數字信號處理器、DSP處理器、寄存器控制接口以及影像處理單元。它主要具有以下特點:
①內部有效感光陣列為640×480,最大幀率為30 fps。
②標準的SCCB接口,兼容I2C總線接口。
③支持RawRGB/GRB4:2:2、RGB565/555/444、YUV4:2:2和YCbCr4:2:2等多種輸出格式。
④50/60 Hz自動檢測。
OV7670內部提供大量的控制寄存器,通過SCCB總線配置寄存器就可以輸出不同的圖像格式。
圖像壓縮模塊采用的是ADI公司推出的基于小波變換的ADV611圖像解壓縮編碼CMOS芯片,它能夠對符合CCIR-601格式的數字圖像進行從視覺元損壓縮到高達7500:1壓縮和解壓縮。主要特點如下:
①可編程的控制“質量窗”(Quality Box)。
②精確的壓縮比控制。
③單場獨立壓縮。
④集成DARM接口控制器。
芯片集成無縫視頻和主機接口,內置片內SRAM,能以較少的器件實現適合各種應用的系統(tǒng)級解決方案。
2 系統(tǒng)設計
2.1 圖像采集模塊設計
SCCB總線是OmniVision公司推出的串行攝像頭控制總線(Serial Camera Control Bus),兼容I2C總線接口,最高傳輸速率可達400 Kb/s,OV7670內部寄存器的配置和圖像數據的輸入與輸出是通過SCCB總線交換的,SCCB總線的時序圖如圖2所示。

SCCB總線由片選信號線SCCB_E、時鐘信號線SIO_C和數據信號線SIO_D構成。在與主設備數據交換過程中,當SIO_C是高電平時,SCCB_E從高電平向低電平切換時表示數據傳輸開始,SCCB_E線由低電平向高電平切換時表示數據傳輸停止。發(fā)送到SIO_D線上的每個字節(jié)必須為8位,每次傳輸可以發(fā)送的字節(jié)數量不受限制,首先傳輸的是數據的最高位MSB,每個字節(jié)后必須跟一個響應位ACK。SCCB總線的控制功能完全是由SIO_C、SIO_D兩條總線上電平的狀態(tài)以及兩者之間的相互配合實現的,其過程如圖3所示。

OV7670支持兩種地址格式:從設備地址ID—Ad—dress,包括讀地址和寫地址,其中地址的高7位用來選中從設備,最低位是讀寫控制位(R/W),低電平表示發(fā)送數據,高電平表示讀數據;內部寄存器地址Sub—Address,用于執(zhí)行對寄存器單元進行操作,支持地址單元連續(xù)的多字節(jié)順序讀寫操作。對OV7670的寄存器的寫操作由三部分構成,先寫設備地址,再寫寄存器地址,最后向指定寄存器寫數據,即ID-Address+SUB-Address+W-Data。OV7670的設備地址為0x42,最后一位用來判斷讀寫,即讀的時候為0x43。依次發(fā)送ID-Address+SUB-Ad-dress+W-Data。讀操作時,需要先發(fā)送從設備地址和寄存器地址,然后再次發(fā)送從設備地址,讀取指定寄存器的數據,即{ID-Address+SUB-Address}+{ID-Address+R-Data)。在系統(tǒng)中,使用Verilog語言實現SCCB總線協(xié)議,Modelsim中的仿真結果如圖4所示。

由圖4可知,在SIOC為高,SIOD拉低時,數據傳輸開始,SIOD線在SIOC線上的時鐘的作用下,開始傳輸數據。由圖4可知,第一個傳輸的字節(jié)位為0x42(01000010),即OV7670的設備地址,緊接著是一個從設備響應信號ACK。
2.2 圖像壓縮模塊設計
ADV611主要由質量窗控制模塊、小波濾波器組、游程編碼和Huffman編碼、I/O接口以及DRAM控制器組成。壓縮編碼時,從它的數字視頻接口接收原始的OV76708位的數字圖像信號,經幀抽取和小波變換后得到一系列不同尺度、不同方向的42個塊信號(Mallat Block),再經過游程編碼和哈夫曼編碼獲得壓縮數據,送入集成于片內的512×32位大小的FIFO緩沖區(qū),一旦FIFO的數據量達到主機在寄存器里的預設值時,ADV611就發(fā)出中斷請求信號,從它與主處理器的接口輸出壓縮數據比特流,解碼時是相反的過程。ADV611內部原理框圖如圖5所示。

當圖像從一幅簡單的圖像切換到含有豐富高頻細節(jié)的復雜圖像時,圖像壓縮后比特率就會發(fā)生很大的變化。為了獲得恒定的壓縮碼率,ADV611在圖像壓縮方面采用了自適應的量化方案。一般情況下,人眼對圖像的高頻部分的敏感度沒有對低頻部分的敏感度高,所以ADV611對通過小波變換后得到的42個Block,根據每個Block對圖像的重要性不同,采取不同的量化帶寬/量化系數BW(解碼是為RBW),即對不同的寄存器自適應地輸入適當的量化系數,然后經過編碼壓縮得到比較恒定的碼流。對于每一場圖像,ADV611都要單獨地計算其量化系數,但由于前后兩場圖像的相關性較大,ADV611是將前一場圖像的統(tǒng)計信息傳送到與之相連的FPGA來計算本場圖像的量化系數。ADV611輸出的前一場圖像的統(tǒng)計信息包括:
①各個Mallat子塊數據的平方和;
②Y、Cb、Cr各個分量的和;
③Y、Cb、Cr各個分量的最大值和最小值;
④前一場圖像壓縮后的數據大小。
ADV611計算量化系數的流程如圖6所示。

其中R0,R1為傳輸信道所允許的最小和最大比特率,壓縮比例Sk為每個Block的量化系數,最小值為0,最大值為1,BW(bn)為每個Block的量化系數。在計算Sk時,采用了PID控制算法:
Sk=Err×Kp+Err_int×Ki+Err_dir×Kd (1)
式中,Err為系統(tǒng)實際輸出與目標輸出的偏差;Kp是比例系數,成比例地反映控制系統(tǒng)的偏差信號;Ki是積分系數,用于消除靜差,提高系統(tǒng)的無差度;Kd為微分系數,反映偏差信號的變化速率。PID控制將系統(tǒng)偏差通過線性組合構成控制量,對被控對象進行控制。由式(1)可以得到每個Block的壓縮比例Sk,根據壓縮系數通過公式(2)和(3)就可以計算每個Block的量化系數:

結語
本文介紹了基于OV7670和ADV611對磁懸浮試驗線通信基站的實時圖像監(jiān)控系統(tǒng)的設計,并對SCCB總線協(xié)議的實現和圖像壓縮算法進行了分析。實驗結果表明,解壓后圖像的失真度與壓縮比成負相關,這是由于圖像壓縮時對圖像進行幀抽取和量化系數的截斷所帶來的。
評論