專利名稱:基于fpga芯片的動態可重構技術實現圖像處理的方法
技術領域:
本發明涉及圖像處理技術領域,特別涉及基于FPGA芯片的圖像處理方法技術領域,具體是指一種基于FPGA芯片的動態可重構技術實現圖像處理的方法。
背景技術:
圖像處理的特點是數據量大和實時性。實時性可以理解為圖像處理的數據傳輸和處理是以一定的速度連續進行的。為了保持實時性,圖像處理的速度不能低于圖像數據的傳輸速度;換而言之就是圖像數據的處理不能導致數據的丟失或者傳輸的阻塞、中斷。通常圖像處理算法都比較復雜,況且又要在如此大量的數據情況下保證足夠高的處理速度,這是軟件設計很難做到的,所以圖像處理系統最常見的設計方案是采用硬件設計。ASIC (Application Specific Integrated Circuit,專用集成電路)是用硬件芯片設計直接實現算法,所以速度較快,但也有其無法克服的缺點。設計和開發ASIC往往意味著較高的設計成本和較長的開發周期。另外,ASIC—般都是為特定應用設計的,缺乏通用性。近年來,隨著微電子技術和計算機技術的發展,基于FPGA (Field — Programmable Gate Array,現場可編程門陣列)的可重構計算技術開始越來越多地應用在圖像處理領域。它利用FPGA可多次配置邏輯狀態的特性,在運行時根據需要改變系統的電路結構,從而使系統兼具靈活、簡捷、硬件資源可復用、易于升級等多種優良性能。基于此技術設計的動態可重構系統在視頻處理方面有著廣闊的應用前景,逐漸成為國際上計算系統研究中的一個新熱點。可重構技術又可分為靜態可重構(Static Reconfiguration)和動態可重構(Dynamic Reconfiguration)兩種。所謂動態可重構技術,是相對于靜態可重構技術而言的。靜態可重構技術是指在可重構計算系統開始執行任務時,一次性將可重構邏輯器件配置為系統所需的某個或幾個功能。這些配置好的功能在整個任務執行期間不會被改變,直到系統完成該任務后,可重構邏輯器件才可以被配置為其他的功能去完成別的任務。動態可重構技術與此相反,在任務執行過程中可重構邏輯器件的功能可以被隨時改變。基于可重構系統還有一項優勢使得它在圖像處理應用中受到特別關注,即創造并行處理結構的潛在能力。圖像處理算法中的并行性主要體現在兩個方面空間并行性和時間并行性,對于這兩種形式可重構系統都能實現。通常,圖像數據的實時處理過程是按照系統時鐘進行的,鑒于圖像處理系統的數據量龐大,在一個系統時鐘周期內不可能完成實時處理的算法,所以常常采用流水線設計,這種結構正是FPGA的強項。這種流水線方法將整個算法分解成一系列比較簡單的級聯子函數,每個特定子函數都能在一個時鐘周期內由一個電路模塊來實現。視頻處理算法往往實現較為復雜,必須保證器件資源留有一定余量,這樣不僅可以避免布線擁擠,也便于測試修改和功能擴展。
發明內容
本發明的目的是克服了上述現有技術中的缺點,提供一種充分利用FPGA的并行處理能力,實現對圖像算法的硬件加速,同時可結合實際需要靈活的增加不同的功能模塊,具備良好的通用性的基于FPGA芯片的動態可重構技術實現圖像處理的方法。FPGA芯片具有重構模塊、ICAP模塊和ACE控制器,所述的重構模塊、ICAP模塊和ACE控制器以及FPGA芯片的圖像信號輸入端和圖像信號輸出端均連接總線,所述的總線通過FPGA的輸入輸出端口連接外部存儲器。為了實現上述的目的,本發明的基于FPGA芯片的動態可重構技術實現圖像處理的方法包括以下步驟(I)所述的FPGA芯片根據用戶操作,生成至少一個關于圖像處理功能模塊的設計文件,并將所述的設計文件存儲于所述的外部存儲器;(2)初始化所述的ACE控制器和ICAP模塊;(3)所述的FPGA芯片根據用戶操作,從所述的外部存儲器讀取至少一個所述的設計文件;(4)所述的FPGA芯片根據所讀取的至少一個設計文件將所述的重構模塊配置為·對應的一個或多個圖像處理功能模塊;(5)所述的FPGA芯片從所述的圖像信號輸入端接收到圖像信號;(6)所述的重構模塊配置形成的一個圖像處理功能模塊對所述的圖像信號進行處理;(7)所述的FPGA芯片將經處理的圖像信號通過所述的圖像信號輸出端輸出。該基于FPGA芯片的動態可重構技術實現圖像處理的方法中,所述的FPGA芯片根據用戶操作生成關于圖像處理功能模塊的設計文件,具體包括以下步驟(11)所述的FPGA芯片根據用戶操作進行所述的圖像處理功能模塊的功能設計;(12)所述的FPGA芯片根據用戶操作對所述的圖像處理功能模塊進行資源預估;(13)所述的FPGA芯片根據用戶操作進行所述的圖像處理功能模塊的模塊實現;(14)所述的FPGA芯片根據用戶操作將所述的圖像處理功能模塊集成為設計文件。該基于FPGA芯片的動態可重構技術實現圖像處理的方法中,所述的圖像處理功能模塊包括圖像邊緣檢測模塊和圖像濾波模塊。該基于FPGA芯片的動態可重構技術實現圖像處理的方法中,所述的圖像邊緣檢測模塊的實現過程具體包括以下步驟(21)所述的重構模塊配置兩個緩沖器和六個寄存器為圖像邊緣檢測模塊;(22)所述的圖像邊緣檢測模塊利用所述的兩個緩沖器和六個寄存器存儲圖像數據流和讀取相鄰像素數據;(23)所述的圖像邊緣檢測模塊對所述的寄存器中的像素的橫向及縱向梯度近似值進行計算;(24)所述的圖像邊緣檢測模塊計算梯度方向.該基于FPGA芯片的動態可重構技術實現圖像處理的方法中,所述的圖像濾波模塊的實現過程具體包括以下步驟(31)所述的重構模塊配置寄存器、比較器和兩個先入先出隊列為圖像濾波模塊,所述的寄存器存儲圖像中各行像素的灰度值,并在一個時鐘周期內將一行中的3個像素的灰度值寫入所述的兩個先入先出隊列;(32)所述的圖像濾波模塊將第一先入先出隊列和第二先入先出隊列設置為只寫不讀,并對第二先入先出隊列寫入圖像中的第一行3個像素的灰度值,對第一先入先出隊列寫入圖像中的第二行3個像素的灰度值;(33)所述的圖像濾波模塊將第一先入先出隊列的輸出端連接至所述的第二先入先出隊列的輸入端,并將所述的第一先入先出隊列和第二先入先出隊列設置為只讀不寫;(34)三個時鐘周期后,所述的圖像濾波模塊在寄存器的輸出端和兩個先入先出隊列的輸出端獲得3X3像素灰度值窗;(35)所述的圖像濾波模塊比較所述的3X3像素灰度值窗獲得各行的最大值、中間值和最小值;(36)所述的圖像濾波模塊比較各行的最大值、中間值和最小值,獲得各行最大值中的最小值、各行中間值中的中間值和各行最小值中的最大值;(37)所述的圖像濾波模塊比較所述的各行最大值中的最小值、各行中間值中的中 間值和各行最小值中的最大值,獲得其中的中間值作為濾波結果。該基于FPGA芯片的動態可重構技術實現圖像處理的方法中,所述的總線為OPB總線。該基于FPGA芯片的動態可重構技術實現圖像處理的方法中,所述的外部存儲器CF卡。該基于FPGA芯片的動態可重構技術實現圖像處理的方法中,所述的FPGA芯片的圖像信號輸入端連接圖像模數轉換器并輸入YUV格式圖像,所述的FPGA芯片的圖像信號輸出端連接圖像數模轉換器并輸出RGB格式圖像。該基于FPGA芯片的動態可重構技術實現圖像處理的方法中,所述的FPGA芯片還包括處理器,所述的處理器通過PLB總線(process local bus)連接所述的重構模塊。采用了該發明的基于FPGA芯片的動態可重構技術實現圖像處理的方法,FPGA芯片首先生成關于圖像處理功能模塊的設計文件,并存儲;隨后根據圖像處理的需要讀取一個或多個設計文件,將FPGA芯片的重構模塊配置為對應的一個或多個圖像處理功能模塊;而后利用圖像處理功能模塊進行圖像信號處理。從而可結合實際需要靈活的增加不同的功能模塊,具備良好的通用性,同時充分利用了 FPGA的并行處理能力,實現對圖像算法的硬件加速。且本發明的基于FPGA芯片的動態可重構技術實現圖像處理的方法的實現方式簡單,實現成本低廉,應用范圍較為廣泛。
圖I為本發明的基于FPGA芯片的動態可重構技術實現圖像處理的方法的步驟流程圖。圖2為本發明方法所應用的基于FPGA技術的通用圖像處理硬件結構示意圖。圖3為本發明方法所應用的基于FPGA技術的通用圖像處理系統的系統架構示意圖。圖4為本發明的基于FPGA芯片的動態可重構技術實現圖像處理的方法中采用的圖像四維方向Sobel算子及其檢測方向示意圖。圖5為本發明的基于FPGA芯片的動態可重構技術實現圖像處理的方法中采用的圖像邊緣檢測方法的設計框圖。
圖6為本發明的基于FPGA芯片的動態可重構技術實現圖像處理的方法中采用的圖像中值濾波實現過程示意圖。圖7為本發明的基于FPGA芯片的動態可重構技術實現圖像處理的方法中采用的圖像3x3窗口數據排列示意圖。圖8為本發明的基于FPGA芯片的動態可重構技術實現圖像處理的方法中采用的圖像邊緣檢測算法示意圖。圖9為本發明的基于FPGA芯片的動態可重構技術實現圖像處理的方法中采用的圖像處理系統重構流程示意圖。
具體實施例方式為了能夠更清楚地理解本發明的技術頁面,特舉以下實施例詳細說明。請參閱圖I所示,為本發明的基于FPGA芯片的動態可重構技術實現圖像處理的方法的步驟流程圖。FPGA芯片具有重構模塊、ICAP模塊和ACE控制器,所述的重構模塊、ICAP模塊和ACE控制器以及FPGA芯片的圖像信號輸入端和圖像信號輸出端均連接總線,所述的總線通過FPGA的輸入輸出端口連接外部存儲器。在一種實施方式中,所述的基于FPGA芯片的動態可重構技術實現圖像處理的方法包括以下步驟(I)所述的FPGA芯片根據用戶操作,生成至少一個關于圖像處理功能模塊的設計文件,并將所述的設計文件存儲于所述的外部存儲器;(2)初始化所述的ACE控制器和ICAP模塊;(3)所述的FPGA芯片根據用戶操作,從所述的外部存儲器讀取至少一個所述的設計文件;(4)所述的FPGA芯片根據所讀取的至少一個設計文件將所述的重構模塊配置為對應的一個或多個圖像處理功能模塊;(5)所述的FPGA芯片從所述的圖像信號輸入端接收到圖像信號;(6)所述的重構模塊配置形成的一個圖像處理功能模塊對所述的圖像信號進行處理;(7)所述的FPGA芯片將經處理的圖像信號通過所述的圖像信號輸出端輸出。其中,步驟(I)中所述的FPGA芯片根據用戶操作生成關于圖像處理功能模塊的設計文件,具體包括以下步驟(11)所述的FPGA芯片根據用戶操作進行所述的圖像處理功能模塊的功能設計;(12)所述的FPGA芯片根據用戶操作對所述的圖像處理功能模塊進行資源預估;(13)所述的FPGA芯片根據用戶操作進行所述的圖像處理功能模塊的模塊實現;(14)所述的FPGA芯片根據用戶操作將所述的圖像處理功能模塊集成為設計文件。在一種優選的實施方式,所述的圖像處理功能模塊可以為圖像邊緣檢測模塊和圖像濾波模塊。其中所述的圖像邊緣檢測模塊的實現過程具體包括以下步驟(21)所述的重構模塊配置兩個緩沖器和六個寄存器為圖像邊緣檢測模塊;
(22)所述的圖像邊緣檢測模塊利用所述的兩個緩沖器和六個寄存器存儲圖像數據流和讀取相鄰像素數據;(23)所述的圖像邊緣檢測模塊對所述的寄存器中的像素的橫向及縱向梯度近似值進行計算;(24)所述的圖像邊緣檢測模塊計算梯度方向.所述的圖像濾波模塊的實現過程具體包括以下步驟(31)所述的重構模塊配置寄存器、比較器和兩個先入先出隊列為圖像濾波模塊,所述的寄存器存儲圖像中各行像素的灰度值,并在一個時鐘周期內將一行中的3個像素的灰度值寫入所述的兩個先入先出隊列;(32)所述的圖像濾波模塊將第一先入先出隊列和第二先入先出隊列設置為只寫不讀,并對第二先入先出隊列寫入圖像中的第一行3個像素的灰度值,對第一先入先出隊 列寫入圖像中的第二行3個像素的灰度值;(33)所述的圖像濾波模塊將第一先入先出隊列的輸出端連接至所述的第二先入先出隊列的輸入端,并將所述的第一先入先出隊列和第二先入先出隊列設置為只讀不寫;(34)三個時鐘周期后,所述的圖像濾波模塊在寄存器的輸出端和兩個先入先出隊列的輸出端獲得3X3像素灰度值窗;(35)所述的圖像濾波模塊比較所述的3X3像素灰度值窗獲得各行的最大值、中間值和最小值;(36)所述的圖像濾波模塊比較各行的最大值、中間值和最小值,獲得各行最大值中的最小值、各行中間值中的中間值和各行最小值中的最大值;(37)所述的圖像濾波模塊比較所述的各行最大值中的最小值、各行中間值中的中間值和各行最小值中的最大值,獲得其中的中間值作為濾波結果。在進一步優選的實施方式中,所述的總線為OPB總線。所述的外部存儲器CF卡。所述的FPGA芯片的圖像信號輸入端連接圖像模數轉換器并輸入YUV格式圖像,所述的FPGA芯片的圖像信號輸出端連接圖像數模轉換器并輸出RGB格式圖像。在一種更優選的實施方式中,所述的FPGA芯片還包括處理器,所述的處理器通過PLB總線連接所述的重構模塊。在實際應用中,針對圖像處理中的大數據量和實時性需求,本發明基于動態可重構技術,設計并實現了一種通用的圖像處理方法。該方法實現動態重構的過程如下動態重構系統的設計主要有兩種方法基于差分和基于模塊。差分方法多用于兩個設計之間差別很小,只改動兩個設計查找表功能、I / O引腳屬性等方面,一般只需要用FPGA編輯器對經過布局布線后的電路描述文件(native circuit description, NCD)進行改動。基于模塊的設計方法是將模塊化設計方法拓展到重構系統的設計中,多用于設計的系統較大,每個模塊之間相對獨立。現階段基于差分方法的設計效率低,對于設計較大的系統還無能為力,本發明采用基于模塊化的設計方法。重構系統采用基于模塊化的設計流程。模塊化設計總體分功能設計、資源預估、模塊實現、模塊集成四個階段進行。功能設計包括頂層設計和模塊設計。頂層設計實現模塊的組合和連接。頂層邏輯在10、時鐘邏輯和模塊的實例化都要受到總線宏的約束,設計中必須保證模塊間通信的信號由總線宏傳遞。每個總線宏提供4位的模塊通信位。有多少位數據要進行通信,則必須要實例化相應個數的總線宏。模塊設計是具體實現模塊的功能。每個模塊作為獨立的工程,相對頂層是“黑盒子”,只暴露和其它模塊的接口。在邏輯層次上,必須是自包含的模塊,所有的模塊端口必須明確定義為輸入或者輸出并且不能出現端口緩沖。所有模塊必須使用全局時鐘,模塊間不能直接共享除全局時鐘之外的任何信號,包括復位、使能等。完成頂層設計和模塊設計后就應該對模塊占用的資源進行預估,并根據預估結果創建頂層設計的約束文件(user constrain file, UCF)。預估階段必須實現模塊布局、IOB (輸入輸出單元)布局以及全局邏輯的布局。模塊布局JEFPGA內部資源分配給每個模塊。根據不同FPGA特性,分配資源時應注意幾點資源的最小寬度;模塊邊界的對齊方式;部分可重構區域中配置的比特流屬性在約束文件中描述。全局邏輯布局底層的非模塊邏輯如總線宏必須通過位置約束來指定邏輯在設備中具體的位置,不允許存在非約束的非模塊邏輯。所有模塊的輸入輸出都與10、全局邏輯或者總線宏相連。預估階段產生約束文件,包含所有全局的布局和時序約束,具體模塊實現時還可能要修改約束文件來實現模塊獨立的布局和時序約束。模塊功能設計和資源預估完成后,需要將每個模塊單獨實現,在指定約束下將描 述模塊的HDL語言或原理圖轉化成為對應FPGA內部資源設置和連接的文件。具體流程和一般模塊實現方法類似,首先利用綜合工具將HDL語言或原理圖綜合成網表,而后轉換成能夠映射入FPGA內部的初始數據庫文件,再對此文件進行解析,布局布線工具將其在FPGA內部實現,需要重構的模塊還必須生成對應的部分比特流文件,實現運行時配置。每個模塊進行布局布線時,必須受到項層約束的限制,只能添加模塊內部的時序約束,不允許對頂層的約束進行改動。模塊實現時只考慮模塊內部的連接關系以及約束文件中規定的總線宏位置,不受其它模塊的影響。模塊集成時,因為重構模塊只能在特定重構區域進行配置,所以首先設計一個頂層的模塊,并在FPGA中正常運行,然后將所有的重構的邏輯放置并且鎖定,重構模塊才能正常運行在重構區域中。因此,必須將各個單獨的模塊按頂層設計合并起來形成一個完整的FPGA設計,生成完整地比特流文件。完成以上四個設計階段后,下載運行重構系統。本發明的最大優點在于提供了一個重構的模塊,一方面可重構模塊可根據不同的計算任務對系統做出相應的算法配置,從而具有很強的通用性和靈活性;另一方面在重構時,非重構部分仍然在運行,其中相關寄存器的內容不會丟失,不需要在重構時將寄存器的內容保存到FPGA外的存儲器中,從而縮短了系統重構的開銷,提高系統的運行效率。具體而言本發明的方法采用的FPGA芯片選用Xilinx公司的Virtex_4系列產品XC4VF60。XC4VF60 具有 128 列 X48 行陣列、24576 個 Slice、56880 個邏輯單元、176MB 的內部RAM塊、2個PowerPC處理器核、4個以太網控制器核以及576個I/O端口。根據目前已有的算法。其性能和資源可以較好地滿足邊緣檢測算法和中值濾波算法對硬件資源(邏輯門數、RAM大小、乘法加法器等)的需求。它是Xilinx公司新推出的實現動態可重構的FPGA芯片,器件中內嵌了 PowerPC處理器,且FPGA本身在Virtex-II系列的基礎上新增了對二維動態重構區域的支持,使得重構模塊的放置更為靈活。Virtex-4系列芯片將高級硅片組合模塊(ASMBL)架構與種類繁多的靈活功能相結合,大大提高了可編程邏輯設計能力,從而成為替代ASIC技術的強有力產品。硬件平臺架構如下圖I。實現本發明的方法所采用的硬件結構,如圖2及圖3所示,其中,數字的視頻輸入由ADC模塊完成,先將PAL制視頻轉換成YUV格式,FPGA完成視頻的濾波和邊緣檢測算法,最終由DAC模塊輸出到VGA顯示。FPGA實現動態重構的方式有兩種,即基于模塊的動態可重構和基于增量的動態可重構。基于增量的可重構特點是重構時的配置文件是功能模塊的增量,因此該方式重構速度快,但是實現系統較復雜,特別是針對較大的模塊實現往往效率很低。基于模塊的動態可重構設計允許設計者獨立地綜合每個模塊,全部綜合完畢后再將所有模塊一起編譯,這種并行方法即節省時間又允許每個模塊獨立終止、運行。本裝置采用基于模塊的重構設計方法,模塊化設計總體分功能設計、資源預估、模塊實現、模塊集成四個階段進行。首先進行硬件系統結構與模塊劃分,將中值濾波、邊緣檢測模塊對應的設計文件分別存放在獨立目錄下,每個模塊單獨綜合網表、布局布線。然后在FPGA編輯器中檢查各個模塊生成的文件,以保證每個模塊都被限制在約束文件指定的區域內。總線宏也根據約束文件放在指定位置,且在每個模塊的生成文件中其占用的長線位置總是不變的。最后將所有功能完好的模塊通過頂層的設計封裝起來。所有的模塊對于頂層設計,都是“黑盒子”。
本裝置在Xilinx集成開發工具ISE9. Ii上設計綜合,系統重構時首先初始化 ACE (Advanced Configuration Environment)控制器和 ICAP (Internet ContentAdaptation Protocol)。通過按鍵選擇,從CF卡中選擇所需的圖像算法,并通過ICAP對重構區域進行配置。兩個算法模塊均與OPB總線(on-chip peripheral bus)進行通信。按照上所述方法示例說明設計過程,首先是功能模塊的實現
一、圖像邊緣檢測模塊的實現圖像的邊緣分為多種類型,大部分圖像的邊緣可分為階躍型、房頂型、凸緣型。由于3種類型的邊緣在灰度上都有明顯的變化,所以通過對圖像取微分,可以提取以上3種邊緣的信息。Sobel算子(索貝爾算子,Sobel operator)是一個較成熟的微分邊緣檢測算法,它計算簡單,只涉及到加法運算,同時具有非線性和一定的平滑效果,所以在對邊緣精度要求不是很高的項目中有著廣泛的應用。一般而言,Sobel算子有兩個,一個是檢測水平邊沿的;另一個是檢測垂直平邊沿的該算子包含兩組3x3的矩陣,分別為橫向及縱向,將之與圖像作平面卷積,即可分別得出橫向及縱向的亮度差分近似值。如果以A代表原始圖像,Gx及Gy分別代表經橫向及縱向邊緣檢測的圖像,其公式如下
二I O +1][+1 +2 +fGx = —2 O +2 # A and Gy = O O O t A
—I O +1[-1 -2 -I圖像的每一個像素的橫向及縱向梯度近似值可用以下的公式結合,來計算梯度的大小,然后可用以下公式計算梯度方向。結合實際應用,本文實現了一種四個方向的邊沿檢測,其四個Sobel算子和檢測方向如圖4所示。本發明中,兩個緩沖器和六個寄存器被設計用來存儲數據流和讀取相鄰像素數據。如下圖5所示的設計框圖,先進來的數據被移位到緩沖器產生一段延時,這樣就能實現同時將像素數據送進乘法陣列。每個乘法節點參照上圖的四個Sobel完成運算,并由加法器輸出計算結果。在圖中我們可以看到完成檢測算法需要4次加法和9次乘法運算。二、圖像濾波算法模塊的實現中值濾波是一種非線性的圖像平滑方法,與均值濾波器以及其它線性濾波器相t匕,它能夠很好地濾除脈沖噪聲,同時又能夠保護目標圖像邊緣。它是一種鄰域運算,類似于卷積,但計算的不是加權求和,而是把鄰域中的像素按灰度級進行排序,然后選擇該組的中間值作為輸出像素值,中值濾波可定義為G (x, y) =median {F (χ-i, y-j)} (i, j) e ω式中G(x,y)和F(x_i,y-j)分別代表輸出和輸入像素灰度值,模板窗口為ω。窗ω可以取線形、方形、十字形、圓形、菱形等。標準的中值濾波器都是由一個奇數大小尺寸的滑動窗組成,通常為3x3窗或5x5窗等。以3x3窗為例,該窗沿著圖像數據的行方向逐像素滑動,在每一次滑動期間內,方形窗中的所有像素按照灰度值被排序,這組數據中的中值作為輸出,替代原來窗函數的中心位置像素的灰度值。其實現過程如下圖6所示。灰度值排序通常運算量巨大,而用硬件實現不僅要消耗大量的資源,而且運算速 度很慢,難以滿足圖像系統處理的實時性要求。針對大小為3x3的窗口采用了一種快速排序算法,可以在很大程度上減少運算量,且易于用較少的硬件資源實現。具體實現方法如下如圖7所示,將一個3x3窗口的按照排列方式,從左至右.從上至下依次定義為Mil、Ml 2、Ml 3、M21、M22、M23、M31、M32、M33。處理時,先分別對每一行的數據進行排序,得到每一行的最大值、中間值和最小值。其中第一行得到的最大值為Maxl=max {Mil, M12, M13};中間值為Midl=mid{Mll,M12,M13};最小值為Minl=min {Mil, M12, M13};同樣,也可得到第二行的三個值Max2,Mid2, Min2和第三行的三個值Max3,Mid3, Min3。由于在上述這九個數中,三個最大值中的最大值一定是九個像素的最大值。同理,三個最小值中的最小值一定是九個像素值中的最小值。三個中值中的最大值至少大于五個像素值;即本行的最小值和其他兩行中的中值及最小值。而三個中值中的最小值至少小于五個像素值;即本行的最大值和其他兩行的中值和最小值。所以比較三個最大值中的最小值Min_Max,三個中值中的中間值Mid_Mid,以及三個最小值中的最大值Max_Min,所得到的中間值就是最終的濾波結果。濾波的設計框圖如下圖8。這種設計可采用Xilinx中的Core generator實現。設計長度為行數據256。系統開始工作后,先對FIF02寫第一行圖像數據.寫滿后再對FIFOl寫第二行圖像數據,直到FIFOl也寫滿。在此期間,FIFOl和FIF02只寫不讀。當完成兩行數據的寫入后,將數據輸入端和FIF01、FIF02上圖所示進行連接,此時的FIFOl和FIF02只讀不寫,待三個時鐘周期后,將FIFOl和FIF02設為既讀又寫。這樣,在寄存器輸出端和兩個FIFO的輸出端即可獲得第一個3x3模板中的圖像灰度數據。此后,隨著圖像數據的輸入,模板也沿著圖像從左至右、從上至下移動。與傳統的排序方法相比,這種方法的比較次數大大減少,求出中值只用了 8次比較運算,因而十分方便在FPGA上進行并行處理。兩種算法的模塊實現后,將中值濾波、邊緣檢測模塊對應的設計文件分別存放在獨立目錄下,每個模塊單獨綜合網表、布局布線。然后在FPGA編輯器中檢查各個模塊生成的文件,以保證每個模塊都被限制在約束文件指定的區域內。總線宏也根據約束文件放在指定位置,且在每個模塊的生成文件中其占用的長線位置總是不變的。最后將所有功能完好的模塊通過頂層的設計封裝起來。所有的模塊對于頂層設計,都是“黑盒子”。系統重構時首先初始化ACE (Advanced Configuration Environment)控制器和ICAP。通過按鍵選擇,從CF卡中選擇所需的圖像算法,并通過ICAP對重構區域進行配置。兩個算法模塊均與OPB總線進行通信。具體重構流程如下圖9。采用了該發明的基于FPGA芯片的動態可重構技術實現圖像處理的方法,FPGA芯片首先生成關于圖像處理功能模塊的設計文件,并存儲;隨后根據圖像處理的需要讀取一個或多個設計文件,將FPGA芯片的重構模塊配置為對應的一個或多個圖像處理功能模塊;而后利用圖像處理功能模塊進行圖像信號處理。從而可結合實際需要靈活的增加不同的功能模塊,具備良好的通用性,同時充分利用了 FPGA的并行處理能力,實現對圖像算法的硬件加速。且本發明的基于FPGA芯片的動態可重構技術實現圖像處理的方法的實現方式簡單,實現成本低廉,應用范圍較為廣泛。
在此說明書中,本發明已參照其特定的實施例作了描述。但是,很顯然仍可以作出各種修改和變換而不背離本發明的精神和范圍。因此,說明書和附圖應被認為是說明性的而非限制性的。
權利要求
1.一種基于FPGA芯片的動態可重構技術實現圖像處理的方法,所述的FPGA芯片具有重構模塊、ICAP模塊和ACE控制器,所述的重構模塊、ICAP模塊和ACE控制器以及FPGA芯片的圖像信號輸入端和圖像信號輸出端均連接總線,所述的總線通過FPGA的輸入輸出端ロ連接外部存儲器,其特征在于,所述的方法包括以下步驟 (1)所述的FPGA芯片根據用戶操作,生成至少ー個關于圖像處理功能模塊的設計文件,并將所述的設計文件存儲于所述的外部存儲器; (2)初始化所述的ACE控制器和ICAP模塊; (3)所述的FPGA芯片根據用戶操作,從所述的外部存儲器讀取至少ー個所述的設計文件; (4)所述的FPGA芯片根據所讀取的至少ー個設計文件將所述的重構模塊配置為對應的一個或多個圖像處理功能模塊; (5)所述的FPGA芯片從所述的圖像信號輸入端接收到圖像信號; (6)所述的重構模塊配置形成的一個圖像處理功能模塊對所述的圖像信號進行處理; (7)所述的FPGA芯片將經處理的圖像信號通過所述的圖像信號輸出端輸出。
2.根據權利要求I所述的基于FPGA芯片的動態可重構技術實現圖像處理的方法,其特征在于,所述的FPGA芯片根據用戶操作生成關于圖像處理功能模塊的設計文件,具體包括以下步驟 (11)所述的FPGA芯片根據用戶操作進行所述的圖像處理功能模塊的功能設計; (12)所述的FPGA芯片根據用戶操作對所述的圖像處理功能模塊進行資源預估; (13)所述的FPGA芯片根據用戶操作進行所述的圖像處理功能模塊的模塊實現; (14)所述的FPGA芯片根據用戶操作將所述的圖像處理功能模塊集成為設計文件。
3.根據權利要求2所述的基于FPGA芯片的動態可重構技術實現圖像處理的方法,其特征在于,所述的圖像處理功能模塊包括圖像邊緣檢測模塊和圖像濾波模塊。
4.根據權利要求3所述的基于FPGA芯片的動態可重構技術實現圖像處理的方法,其特征在于,所述的圖像邊緣檢測模塊的實現過程具體包括以下步驟 (21)所述的重構模塊配置兩個緩沖器和六個寄存器為圖像邊緣檢測模塊; (22)所述的圖像邊緣檢測模塊利用所述的兩個緩沖器和六個寄存器存儲圖像數據流和讀取相鄰像素數據; (23)所述的圖像邊緣檢測模塊對所述的寄存器中的像素的橫向及縱向梯度近似值進行計算; (24)所述的圖像邊緣檢測模塊計算梯度方向。
5.根據權利要求3所述的基于FPGA芯片的動態可重構技術實現圖像處理的方法,其特征在于,所述的圖像濾波模塊的實現過程具體包括以下步驟 (31)所述的重構模塊配置寄存器、比較器和兩個先入先出隊列為圖像濾波模塊,所述的寄存器存儲圖像中各行像素的灰度值,并在一個時鐘周期內將一行中的3個像素的灰度值寫入所述的兩個先入先出隊列; (32)所述的圖像濾波模塊將第一先入先出隊列和第二先入先出隊列設置為只寫不讀,并對第二先入先出隊列寫入圖像中的第一行3個像素的灰度值,對第一先入先出隊列寫入圖像中的第二行3個像素的灰度值;(33)所述的圖像濾波模塊將第一先入先出隊列的輸出端連接至所述的第二先入先出隊列的輸入端,并將所述的第一先入先出隊列和第二先入先出隊列設置為只讀不寫; (34)三個時鐘周期后,所述的圖像濾波模塊在寄存器的輸出端和兩個先入先出隊列的輸出端獲得3X3像素灰度值窗; (35)所述的圖像濾波模塊比較所述的3X3像素灰度值窗獲得各行的最大值、中間值和最小值; (36)所述的圖像濾波模塊比較各行的最大值、中間值和最小值,獲得各行最大值中的最小值、各行中間值中的中間值和各行最小值中的最大值; (37)所述的圖像濾波模塊比較所述的各行最大值中的最小值、各行中間值中的中間值和各行最小值中的最大值,獲得其中的中間值作為濾波結果。
6.根據權利要求I至5中任一項所述的基于FPGA芯片的動態可重構技術實現圖像處理的方法,其特征在于,所述的總線為OPB總線。
7.根據權利要求I至5中任一項所述的基于FPGA芯片的動態可重構技術實現圖像處理的方法,其特征在于,所述的外部存儲器CF卡。
8.根據權利要求I至5中任一項所述的基于FPGA芯片的動態可重構技術實現圖像處理的方法,其特征在于,所述的FPGA芯片的圖像信號輸入端連接圖像模數轉換器并輸入YUV格式圖像,所述的FPGA芯片的圖像信號輸出端連接圖像數模轉換器并輸出RGB格式圖像。
9.根據權利要求I至5中任一項所述的基于FPGA芯片的動態可重構技術實現圖像處理的方法,其特征在于,所述的FPGA芯片還包括處理器,所述的處理器通過PLB總線連接所述的重構模塊。
全文摘要
本發明涉及一種基于FPGA芯片的動態可重構技術實現圖像處理的方法,在該方法中,FPGA芯片首先生成關于圖像處理功能模塊的設計文件,并存儲;隨后根據圖像處理的需要讀取一個或多個設計文件,將FPGA芯片的重構模塊配置為對應的一個或多個圖像處理功能模塊;而后利用圖像處理功能模塊進行圖像信號處理。利用本發明的方法可結合實際需要靈活的增加不同的功能模塊,具備良好的通用性,同時充分利用了FPGA的并行處理能力,實現對圖像算法的硬件加速。且本發明的基于FPGA芯片的動態可重構技術實現圖像處理的方法的實現方式簡單,實現成本低廉,應用范圍較為廣泛。
文檔編號H04N5/14GK102819818SQ201210289320
公開日2012年12月12日 申請日期2012年8月14日 優先權日2012年8月14日
發明者李萬才, 陳建永, 湯志偉, 沈冬青, 梅林 申請人:公安部第三研究所