OV7670和ADV611的圖像采集與壓縮系統(tǒng)設(shè)計(jì)
引言
本文引用地址:http://m.butianyuan.cn/article/201610/306316.htm隨著圖像傳感器、DSP及計(jì)算機(jī)技術(shù)的快速發(fā)展,圖像監(jiān)控系統(tǒng)已經(jīng)被人們用于生活、工業(yè)控制、科學(xué)研究等各個(gè)領(lǐng)域,因此圖像信息的采集得到了廣泛的應(yīng)用。根據(jù)對(duì)磁懸浮試驗(yàn)線通信基站系統(tǒng)診斷的需要,設(shè)計(jì)了圖像信息采集及其壓縮傳輸?shù)淖酉到y(tǒng),將基站的圖像監(jiān)控信息作為整個(gè)系統(tǒng)診斷數(shù)據(jù)的一部分實(shí)時(shí)地傳回控制室。鑒于傳輸帶寬有限以及原始圖像數(shù)據(jù)的冗余性,對(duì)原始圖像數(shù)據(jù)進(jìn)行壓縮處理。由于圖像的突變性較大,在控制壓縮率時(shí)采用了PID控制算法。在接收終端對(duì)壓縮后的數(shù)據(jù)進(jìn)行解碼處理,就可以得到實(shí)時(shí)的監(jiān)控圖像。
1 系統(tǒng)原理及結(jié)構(gòu)
該系統(tǒng)作為整個(gè)磁懸浮試驗(yàn)線通信基站診斷系統(tǒng)的一部分,系統(tǒng)的結(jié)構(gòu)圖如圖1所示。
OV7670采集到的圖像信息經(jīng)過ADV611壓縮處理后,由FPGA通過低電壓差分信號(hào)(LVDS)將壓縮后的數(shù)據(jù)傳輸?shù)桨蹇ǖ目刂颇K,由控制模塊將包括監(jiān)控圖像數(shù)據(jù)在內(nèi)的診斷數(shù)據(jù)組幀后傳輸?shù)娇刂浦行摹?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/OV7670">OV7670圖像傳感器是OmniVision公司生產(chǎn)的CMOS圖像傳感器,其體積小,工作電壓低,內(nèi)部集成了感光矩陣、模擬信號(hào)處理器、數(shù)字信號(hào)處理器、DSP處理器、寄存器控制接口以及影像處理單元。它主要具有以下特點(diǎn):
①內(nèi)部有效感光陣列為640×480,最大幀率為30 fps。
②標(biāo)準(zhǔn)的SCCB接口,兼容I2C總線接口。
③支持RawRGB/GRB4:2:2、RGB565/555/444、YUV4:2:2和YCbCr4:2:2等多種輸出格式。
④50/60 Hz自動(dòng)檢測(cè)。
OV7670內(nèi)部提供大量的控制寄存器,通過SCCB總線配置寄存器就可以輸出不同的圖像格式。
圖像壓縮模塊采用的是ADI公司推出的基于小波變換的ADV611圖像解壓縮編碼CMOS芯片,它能夠?qū)Ψ螩CIR-601格式的數(shù)字圖像進(jìn)行從視覺元損壓縮到高達(dá)7500:1壓縮和解壓縮。主要特點(diǎn)如下:
①可編程的控制“質(zhì)量窗”(Quality Box)。
②精確的壓縮比控制。
③單場(chǎng)獨(dú)立壓縮。
④集成DARM接口控制器。
芯片集成無縫視頻和主機(jī)接口,內(nèi)置片內(nèi)SRAM,能以較少的器件實(shí)現(xiàn)適合各種應(yīng)用的系統(tǒng)級(jí)解決方案。
2 系統(tǒng)設(shè)計(jì)
2.1 圖像采集模塊設(shè)計(jì)
SCCB總線是OmniVision公司推出的串行攝像頭控制總線(Serial Camera Control Bus),兼容I2C總線接口,最高傳輸速率可達(dá)400 Kb/s,OV7670內(nèi)部寄存器的配置和圖像數(shù)據(jù)的輸入與輸出是通過SCCB總線交換的,SCCB總線的時(shí)序圖如圖2所示。
SCCB總線由片選信號(hào)線SCCB_E、時(shí)鐘信號(hào)線SIO_C和數(shù)據(jù)信號(hào)線SIO_D構(gòu)成。在與主設(shè)備數(shù)據(jù)交換過程中,當(dāng)SIO_C是高電平時(shí),SCCB_E從高電平向低電平切換時(shí)表示數(shù)據(jù)傳輸開始,SCCB_E線由低電平向高電平切換時(shí)表示數(shù)據(jù)傳輸停止。發(fā)送到SIO_D線上的每個(gè)字節(jié)必須為8位,每次傳輸可以發(fā)送的字節(jié)數(shù)量不受限制,首先傳輸?shù)氖菙?shù)據(jù)的最高位MSB,每個(gè)字節(jié)后必須跟一個(gè)響應(yīng)位ACK。SCCB總線的控制功能完全是由SIO_C、SIO_D兩條總線上電平的狀態(tài)以及兩者之間的相互配合實(shí)現(xiàn)的,其過程如圖3所示。
OV7670支持兩種地址格式:從設(shè)備地址ID—Ad—dress,包括讀地址和寫地址,其中地址的高7位用來選中從設(shè)備,最低位是讀寫控制位(R/W),低電平表示發(fā)送數(shù)據(jù),高電平表示讀數(shù)據(jù);內(nèi)部寄存器地址Sub—Address,用于執(zhí)行對(duì)寄存器單元進(jìn)行操作,支持地址單元連續(xù)的多字節(jié)順序讀寫操作。對(duì)OV7670的寄存器的寫操作由三部分構(gòu)成,先寫設(shè)備地址,再寫寄存器地址,最后向指定寄存器寫數(shù)據(jù),即ID-Address+SUB-Address+W-Data。OV7670的設(shè)備地址為0x42,最后一位用來判斷讀寫,即讀的時(shí)候?yàn)?x43。依次發(fā)送ID-Address+SUB-Ad-dress+W-Data。讀操作時(shí),需要先發(fā)送從設(shè)備地址和寄存器地址,然后再次發(fā)送從設(shè)備地址,讀取指定寄存器的數(shù)據(jù),即{ID-Address+SUB-Address}+{ID-Address+R-Data)。在系統(tǒng)中,使用Verilog語(yǔ)言實(shí)現(xiàn)SCCB總線協(xié)議,Modelsim中的仿真結(jié)果如圖4所示。
由圖4可知,在SIOC為高,SIOD拉低時(shí),數(shù)據(jù)傳輸開始,SIOD線在SIOC線上的時(shí)鐘的作用下,開始傳輸數(shù)據(jù)。由圖4可知,第一個(gè)傳輸?shù)淖止?jié)位為0x42(01000010),即OV7670的設(shè)備地址,緊接著是一個(gè)從設(shè)備響應(yīng)信號(hào)ACK。
2.2 圖像壓縮模塊設(shè)計(jì)
ADV611主要由質(zhì)量窗控制模塊、小波濾波器組、游程編碼和Huffman編碼、I/O接口以及DRAM控制器組成。壓縮編碼時(shí),從它的數(shù)字視頻接口接收原始的OV76708位的數(shù)字圖像信號(hào),經(jīng)幀抽取和小波變換后得到一系列不同尺度、不同方向的42個(gè)塊信號(hào)(Mallat Block),再經(jīng)過游程編碼和哈夫曼編碼獲得壓縮數(shù)據(jù),送入集成于片內(nèi)的512×32位大小的FIFO緩沖區(qū),一旦FIFO的數(shù)據(jù)量達(dá)到主機(jī)在寄存器里的預(yù)設(shè)值時(shí),ADV611就發(fā)出中斷請(qǐng)求信號(hào),從它與主處理器的接口輸出壓縮數(shù)據(jù)比特流,解碼時(shí)是相反的過程。ADV611內(nèi)部原理框圖如圖5所示。
當(dāng)圖像從一幅簡(jiǎn)單的圖像切換到含有豐富高頻細(xì)節(jié)的復(fù)雜圖像時(shí),圖像壓縮后比特率就會(huì)發(fā)生很大的變化。為了獲得恒定的壓縮碼率,ADV611在圖像壓縮方面采用了自適應(yīng)的量化方案。一般情況下,人眼對(duì)圖像的高頻部分的敏感度沒有對(duì)低頻部分的敏感度高,所以ADV611對(duì)通過小波變換后得到的42個(gè)Block,根據(jù)每個(gè)Block對(duì)圖像的重要性不同,采取不同的量化帶寬/量化系數(shù)BW(解碼是為RBW),即對(duì)不同的寄存器自適應(yīng)地輸入適當(dāng)?shù)牧炕禂?shù),然后經(jīng)過編碼壓縮得到比較恒定的碼流。對(duì)于每一場(chǎng)圖像,ADV611都要單獨(dú)地計(jì)算其量化系數(shù),但由于前后兩場(chǎng)圖像的相關(guān)性較大,ADV611是將前一場(chǎng)圖像的統(tǒng)計(jì)信息傳送到與之相連的FPGA來計(jì)算本場(chǎng)圖像的量化系數(shù)。ADV611輸出的前一場(chǎng)圖像的統(tǒng)計(jì)信息包括:
①各個(gè)Mallat子塊數(shù)據(jù)的平方和;
②Y、Cb、Cr各個(gè)分量的和;
③Y、Cb、Cr各個(gè)分量的最大值和最小值;
④前一場(chǎng)圖像壓縮后的數(shù)據(jù)大小。
ADV611計(jì)算量化系數(shù)的流程如圖6所示。
其中R0,R1為傳輸信道所允許的最小和最大比特率,壓縮比例Sk為每個(gè)Block的量化系數(shù),最小值為0,最大值為1,BW(bn)為每個(gè)Block的量化系數(shù)。在計(jì)算Sk時(shí),采用了PID控制算法:
Sk=Err×Kp+Err_int×Ki+Err_dir×Kd (1)
式中,Err為系統(tǒng)實(shí)際輸出與目標(biāo)輸出的偏差;Kp是比例系數(shù),成比例地反映控制系統(tǒng)的偏差信號(hào);Ki是積分系數(shù),用于消除靜差,提高系統(tǒng)的無差度;Kd為微分系數(shù),反映偏差信號(hào)的變化速率。PID控制將系統(tǒng)偏差通過線性組合構(gòu)成控制量,對(duì)被控對(duì)象進(jìn)行控制。由式(1)可以得到每個(gè)Block的壓縮比例Sk,根據(jù)壓縮系數(shù)通過公式(2)和(3)就可以計(jì)算每個(gè)Block的量化系數(shù):
結(jié)語(yǔ)
本文介紹了基于OV7670和ADV611對(duì)磁懸浮試驗(yàn)線通信基站的實(shí)時(shí)圖像監(jiān)控系統(tǒng)的設(shè)計(jì),并對(duì)SCCB總線協(xié)議的實(shí)現(xiàn)和圖像壓縮算法進(jìn)行了分析。實(shí)驗(yàn)結(jié)果表明,解壓后圖像的失真度與壓縮比成負(fù)相關(guān),這是由于圖像壓縮時(shí)對(duì)圖像進(jìn)行幀抽取和量化系數(shù)的截?cái)嗨鶐淼摹?/p>
評(píng)論