基于FPGA的網絡圖像采集處理系統設計
2.3.2 量化和編碼
量化是將經過DCT變化后的系數值除以量化表中的量化值,其結果四舍五入得到。系統采用推薦的亮度量化表對圖像數據進行量化,該表存在FPGA的片上RAM中。由于硬件除法是通過迭代減法完成的,速度慢,因此先計算量化表中數值的倒數值,把DCT變化系數乘以量化表對應的倒數值,即可將除法轉換成速度較快的乘法運算。
量化后系數經過Z型掃描器轉換成一維ZIG-ZAG序列,序列的第1個數值表示直流(DC)分量,其后的63個數值表示交流(AC)分量。對DC分量采用一維差分前值預測編碼,即將DC分量減去上一個8×8子快的DC分量。對AC分量采用游程編碼,并且用一個字節的高四位來表示AC分量連續0值個數,低四位表示下一個非零系數所需位數,這樣能夠表示的最大0值個數為15個,如果AC分量中0值個數多于15個,采用(15,0)來表示。(0,0)表示EOB,說明后面分量值全為0。這樣游程/預測編碼對系數0的值進行壓縮。最后霍夫曼編碼器利用霍夫曼表分別對DC和AC系數進行霍夫曼編碼,輸出JPEG圖像碼流。
2.4 網絡傳輸
通過在NiosⅡ處理器上移植支持TCP/IP協議棧的μC/OS-Ⅱ操作系統來實現圖像的網絡傳輸功能。軟件流程圖如圖7所示。本文引用地址:http://www.104case.com/article/190790.htm
首先將NiosⅡ作為網絡通信服務器,創建一個網絡監聽套接字,將該套接字同NiosⅡ處理器的本機的IP地址和端口號進行綁定,調用Listen監聽函數使系統處于監聽狀態,監聽客戶端(PC機)請求,一旦監聽到客戶端的連接請求,服務器端置圖像壓縮使能端有效,開始圖像的壓縮,并接收硬件邏輯完成壓縮的圖像數據,然后服務器端向客戶端發送圖像的幀頭和圖像數據,一幀圖像發送完成后會接著發送下一幀圖像,直到收到停止圖像發送指令,進入下一個監聽的等待狀態為止。客戶端主要是向服務器端發出連接請求,一旦連接成功,即開始接收服務器端傳送的圖像幀頭和圖像數據,并將圖像進行顯示。客戶端在停止接收圖像前,會不斷重復接收圖像數據的工作過程。
3 測試結果
AD采集一副大小為720×576的圖像,經過硬件邏輯裁剪成如圖8(a)所示的512×512大小的圖像,由JPEG編碼器進行圖像壓縮,在PC機上解壓縮后的圖像如圖8(b)所示。將原始圖像和解壓縮后的圖像進行對比,計算圖像的峰值信噪比:
式中:MSE為原始圖像和壓縮圖像的均方誤差。從圖中可看到,PSNR>30時,圖像視覺失真度比較低。
4 結語
本文介紹了一種基于FPGA的網絡圖像處理系統設計和實現方法。系統主要包括圖像采集模塊、RAM控制模塊、JPEG編碼器3部分邏輯。在單片FPGA上實現圖像的采集、裁剪、緩存和JPEG編碼,構建NiosⅡ處理器實現圖像的網絡傳輸功能。測試表明,系統的體積小,功耗低,算法升級靈活方便。此外系統運行穩定,性能也滿足要求。
評論