王亮,唐廣
(電子科技大學 電子工程學院,成都611731)
隨著圖像傳感器、DSP及計算機技術的快速發展,圖像監控系統已經被人們用于生活、工業控制、科學研究等各個領域,因此圖像信息的采集得到了廣泛的應用。根據對磁懸浮試驗線通信基站系統診斷的需要,設計了圖像信息采集及其壓縮傳輸的子系統,將基站的圖像監控信息作為整個系統診斷數據的一部分實時地傳回控制室。鑒于傳輸帶寬有限以及原始圖像數據的冗余性,對原始圖像數據進行壓縮處理。由于圖像的突變性較大,在控制壓縮率時采用了PID控制算法。在接收終端對壓縮后的數據進行解碼處理,就可以得到實時的監控圖像。
該系統作為整個磁懸浮試驗線通信基站診斷系統的一部分,系統的結構圖如圖1所示。
OV7670采集到的圖像信息經過ADV611壓縮處理后,由FPGA通過低電壓差分信號(LVDS)將壓縮后的數據傳輸到板卡的控制模塊,由控制模塊將包括監控圖像數據在內的診斷數據組幀后傳輸到控制中心。OV7670圖像 傳 感 器[1]是Omni Vision公司生產的CMOS圖像傳感器,其體積小,工作電壓低,內部集成了感光矩陣、模擬信號處理器、數字信號處理器、DSP處理器、寄存器控制接口以及影像處理單元。它主要具有以下特點:
①內部有效感光陣列為640×480,最大幀率為30 fps。
②標準的SCCB接口,兼容I2C總線接口。
③支持Raw RGB/GRB4:2:2、RGB565/555/444、YUV4:2:2和YCbCr4:2:2等多種輸出格式。
④50/60 Hz自動檢測。
OV7670內部提供大量的控制寄存器,通過SCCB總線配置寄存器就可以輸出不同的圖像格式。
圖像壓縮模塊采用的是ADI公司推出的基于小波變換的ADV611圖像解壓縮編碼CMOS芯片[2],它能夠對符合CCIR-601格式的數字圖像進行從視覺無損壓縮到高達7500:1壓縮和解壓縮。主要特點如下:

圖1 系統結構框圖
①可編程的控制“質量窗”(Quality Box)。
②精確的壓縮比控制。
③單場獨立壓縮。
④集成DARM接口控制器。
芯片集成無縫視頻和主機接口,內置片內SRAM,能以較少的器件實現適合各種應用的系統級解決方案。
SCCB總線[3]是OmniVision公司推出的串行攝像頭控制總線(Serial Camera Control Bus),兼容I2C總線接口,最高傳輸速率可達400 Kb/s,OV7670內部寄存器的配置和圖像數據的輸入與輸出是通過SCCB總線交換的,SCCB總線的時序圖如圖2所示。

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

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

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

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

式中,Err為系統實際輸出與目標輸出的偏差;Kp是比例系數,成比例地反映控制系統的偏差信號;Ki是積分系數,用于消除靜差,提高系統的無差度;Kd為微分系數,反映偏差信號的變化速率。PID控制將系統偏差通過線性組合構成控制量,對被控對象進行控制。由式(1)可以得到每個Block的壓縮比例Sk,根據壓縮系數通過公式(2)和(3)就可以計算每個Block的量化系數:

本文介紹了基于OV7670和ADV611對磁懸浮試驗線通信基站的實時圖像監控系統的設計,并對SCCB總線協議的實現和圖像壓縮算法進行了分析。實驗結果表明,解壓后圖像的失真度與壓縮比成負相關,這是由于圖像壓縮時對圖像進行幀抽取和量化系數的截斷所帶來的。
[1]OmniVision.OV7670 Datasheet Version1.4,2006.
[2]Analog Devices.ADV611 Datasheet REV.0,1999.
[3]OmniVision.Serial Camera Control Bus(SCCB)Functional Specification Version2.1,2003.
[4]Hu Zhengwei.I2C Protocol Design for Reusability [C]//IEEE Third International Symposium on Information Process,Qingdao,2010:83-86.
[5]Philips Semiconductors.The I2C Bus Specification Version 2.1,2003.
[6]Analog Devices.David Starr ADV601 Bin Width Calculation in ADSP-21xx DSP,1999.