天天看點

基于FPGA的圖像均衡處理

    通過對你的MATLAB的程式的仿真,得到了如下的效果:

基于FPGA的圖像均衡處理

二、FPGA部分的設計實作注意點

在進行FPGA設計的時候,我們需要主要以下幾個方面:

第一:關于圖檔大小的統一

    這裡,我們主要對你的直方圖均衡算法進行FPGA的硬體的實作,這裡,我們将圖像的大小統一為100*100,這樣的話,友善後期的同一處理,因為在FPGA内部進行處理的時候,由于硬體的實作不像MATLAB那麼的靈活,是以需要對各個參數進行固定寫死。這裡設定100*100比較合适。

    運作:

基于FPGA的圖像均衡處理

中的main函數,可以将四個圖檔同一為100*100大小的圖檔,然後儲存為串行的資料,儲存到存儲器中。

第二:關于圖像的存儲,由于我這邊隻有V5的開發闆,然後看了下手冊,發現兩個的SDRAM還是有很大差别的,是以為了你拿到程式之後能立刻的運作,這裡使用FPGA内部存儲器進行儲存,其操作方法和外部的SDRAM是完全相同的,也是通過位址的讀寫進行操作的。是以這裡不影響你寫論文。這就是相當于使用FPGA内部的SDRAM,其位址讀寫等一些基本的存儲器的操作過程是完全相同的。

第三:看了下你的闆子,接口隻有網口,USB,序列槽。這裡,這個部分的代碼,主要考慮如下的因素:

網口,結構較為複雜,你的闆子型号比較低,是以這裡我不建議采取這個方式;

序列槽,速率較慢,顯然不适合圖像的發送

USB,這裡我們可以借助Chipscope進行USB的資料發送,利用ChipScope進行資料的實時采集。這個部分的代碼,我已經寫了,但是沒有進行測試,這裡隻有當你需要使用這個方式來采集的時候,在後期修改中,我幫你完善。

三、FPGA的仿真與驗證分析

    首先,根據FPGA的硬體結構,将MATLAB改寫為串行處理的流程圖。

 >

基于FPGA的圖像均衡處理

仿真結果如下所示,下面按這個檔案下的程式進行FPGA的設計與實作。

基于FPGA的圖像均衡處理

這裡,對該程式進行FPGA設計實作。

這裡,由于沒有相同型号的闆子,這裡我們設計了一個比較晚上的仿真流程,進而驗證整個過程的正确性。

首先,整個過程如下上圖所示。

我們使用MATLAB将圖像資料變為串行資料,并保持為仿真測試檔案,用來進行仿真。

這個部分,你需要運作如下的代碼:

基于FPGA的圖像均衡處理

 >

基于FPGA的圖像均衡處理

中的

基于FPGA的圖像均衡處理

運作完之後,會産生圖像的測試代碼級,即編寫MATLAB自動産生verilog測試代碼:

基于FPGA的圖像均衡處理

然後在FPGA中,會有如下的代碼:

基于FPGA的圖像均衡處理

這個就是調用測試檔案的完整的測試代碼集。

我們将這個testdata.v複制到FPGA的工程檔案夾下。

這個就是模拟實際的SDRAM的操作過程。

進行仿真,我們可以看到如下的仿真圖。

基于FPGA的圖像均衡處理

将仿真圖放大,可以看到如下的仿真結果:

基于FPGA的圖像均衡處理

上面,我們完整的仿真了其中的兩幀圖像。

并得到了仿真結果。

最後,我們将仿真結果儲存到資料,導入到MATLAB進行成像。

Modelsim仿真完成之後,你會看到有如下的txt檔案。将這個檔案複制到

基于FPGA的圖像均衡處理

運作,得到如下的仿真結果:

基于FPGA的圖像均衡處理

對FPGA處理後的資料,仿真其中的直方圖,得到如下的結果:

基于FPGA的圖像均衡處理

最後的注意事項:

第一、這裡,你所提供的兩種直方圖的均衡方法,基本結構相同,是以,我這裡隻對第一種算法進行了FPGA的編寫,如果有需要,那麼我稍微一修改,就給你第二種的代碼。

第二、你看完代碼之後,覺得沒什麼問題了,并同意我的資料發送方法,那麼我再完善一下資料采集部分的代碼: