拉普拉斯算子的FPGA實現方法

2020-12-13 電子工程專輯

引 言


在圖像處理系統中常需要對圖像進行預處理。由於圖像處理的數據量大,對於實時性要求高的系統, 採用軟體實現通常難以滿足實時性的要求。Altera的QuartusⅡ作為一種可編程邏輯的設計環境,由於其強大的設計能力和直觀易用的接口,越來越受 到數字系統設計者的歡迎。QuartusⅡ支持Altera的IP核,包含了LPM/Megafunctions宏功能模塊庫,設計者只需要選取設置這些 功能模塊的相關參數就可以在程序中調用,從而使用戶可以充分利用成熟的模塊,大大簡化了設計的複雜性,加快了設計速度。

拉普拉斯算子是一種重要的圖像增強算子,它是一種各向同性濾波器,即濾波器的響應與濾波器作用圖像的突變方向無關,而且實現簡單,被廣泛用於圖像銳化和高頻增強等算法中。

在此,提出一種使用QuartusⅡ開發環境的Megafunctions功能模塊實現拉普拉斯算子的方案,可以做到實時增強圖像的高頻細節。


1 、Laplacian算子


拉普拉斯算子是各向同性線性算子,二元函數f(x,y)的拉普拉斯變換定義為:



基本高通濾波模板中所有係數的和為0,如果在模板所覆蓋的區域內像素的灰度值都相同或者灰度值的變化較為緩慢.則模板的輸出為0或輸出很小。人們常用的高通提升濾波方法,就是將原圖像乘以一個放大因子A,再減去低通濾波圖像。高通提升濾波可以表示為: 


高通提升濾波圖像=A×原圖像-低通濾波圖像=(A-1)×原圖像+原圖像-低通濾波圖像=(A-1)×原圖像+高通濾波圖像
即:

    

式中:當A=1時,高通提升濾波就是基本的高通濾波;當A>1時,部分原圖像被加到高通濾波的結果上,這就恢復了部分高通濾波中丟失的低頻成分。因此,經過高通提升濾波的圖像與原圖像更加相像,同時又對圖像的邊緣進行了增強。


進行模板卷積的主要步驟為:

    (1)將模板在圖中漫遊,並將模板中心與圖中某個像素位置重合;
    (2)將模板上係數與模板下對應像素相乘;
    (3)將所有乘積相加;
    (4)將和(模板的輸出響應)賦給圖中對應模板中心位置的像素。

當模板遍歷圖像中的每個像素就得到圖像濾波結果。實現Laplacian高通提升濾波的模板如圖1所示。


文獻[2]的實驗證明,使用圖1(a)所示掩模能得到更好的銳化效果,所以在硬體實現時使用該掩模。實驗中取A=1。


2 、Laplacian算子的硬體實現及結果


使用Laplacian算子濾波是將模板與圖像做卷積運算,然後將得到的結果取絕對值後,再進行防治溢出(灰度值大於255)處理。所以在用硬體實現Laplacian算子時可分成三個步驟:構造模板;使用模板對圖像進行卷積運算;對卷積後的結果做後處理。


2.1 硬體數據緩存模塊

要想得到3×3的方形模板窗,需要使用數據緩存器,在該設計中,調用宏功能模塊中的Shift register功能模塊就能實現這一功能,十分方便。

Shift register功能模塊,是一個可配置的具有抽頭(taps)輸出的移位寄存器,可實現功能如圖2(b)所示。


以處理大小為256×256的8位灰度圖像為例進行討論。在對移位寄存器進行配置時,shiftin,shiftout設置為8位,3個抽頭。相鄰兩個抽頭相距256。為了方便控制,還需要為該模塊添加時鐘控制信號,如圖2(a)所示。

圖2(b)中的行緩衝器分別是由256個8位移位寄存器構成的寄存器鏈。當圖像的第N行數據在像素時鐘同步下輸入到行緩衝器1後,隨著第N+1行圖像數據 輸入到行緩衝器2中,第N行的圖像數據依次存入,而當第N+2行圖像數據存入行緩衝器1後,行緩衝器2和行緩衝器3中分別存放的是第N+1行和第N行的圖 像數據,從而實現緩衝圖像數據的功能。這樣在像素時鐘的同步下,第N,N+1,N+2行的同一列數據分別從taps0x,taps1x,taps2x端輸 出,為構造3×3模塊提供了數據準備。


2.2 卷積計算模塊

圖 3是3×3圖像卷積運算的原理圖。可以看出,為了實現卷積運算需要做乘法和加法運算,如果直接採用分立的D觸發器和加法器以及乘法器來完成卷積運算,結構 會很複雜。在此,採用宏功能模塊中的可編程乘加器模塊和可編程多路並行加法器模塊Parallel_add實現卷積運算,大大簡化了設計。


使用可編程多路並行加法器Parallel_add宏功能模塊時,可以自由設計輸入數據位寬,累加數據個數,定義累加輸入數據類型,定義時鐘控制埠,增 加異步清零埠等,能快速便捷地生成所需的加法器模塊。為了實現卷積運算中的加權和運算,宏功能模塊生成的3個乘加器,每個乘加器包含3個乘法器和1個加 法器,如圖4所示。圖像數據從dataa依次輸入,數據分別與固定的模板係數datab_0,datab_1,datab_2相乘。在該實驗中,使用 Verilog HDL語言為各datab設值,各值分別對應模板中的權值,並將結果送給加法器完成加法運算。

當採用3個這樣類似的Altmult_add模塊並聯時,便可實現Laplacian算子的運算。


完成圖像卷積後需要對結果進行處理,以防止結果出現負值或超過255範圍。使用QuartusⅡ提供的Lpm_abs宏功能模塊計算絕對值,可以解決出現負值問題,而對超過255的值則均設定為255。

另外,自定義模塊如圖5所示,將它存於自定義宏功能庫中,在以後的設計時,只需修改相關參數即可方便的調用。


2.3 實驗結果

圖6(a)為一幅256×256的原始圖像,(b)為採用Matlab的Laplacian算子進行濾波的結果,(c)為採用本文設計的Laplacian算子得到的結果。比較圖6(b)和(c)可以看出,該硬體算法取得了較好的效果。

3 、結 語

這裡利用QuartusⅡ軟體提供的宏功能模塊,通過配置調用的宏功能模塊來實現Laplacian算子,該方法既避免了自己編寫大量程序代碼的繁瑣,又 獲得較好的實現結果。最後通過與Matlab仿真結果相比較,證明了該設計的有效性。該設計方法方便、快捷,可以推廣到其他類型的模板設計中。


相關焦點

  • 每日一練6.15#Laplacian算子的FPGA實現方法
    由於圖像處理的數據量大,對於實時性要求高的系統, 採用軟體實現通常難以滿足實時性的要求。Altera的QuartusⅡ作為一種可編程邏輯的設計環境,由於其強大的設計能力和直觀易用的接口,越來越受 到數字系統設計者的歡迎。
  • Laplacian圖像邊緣檢測器的FPGA實現研究
    各種檢測算子各有其優缺點,其中Laplacian算子是一種典型的邊緣檢測方法,它是一個3×3模板,對實現硬體的要求不高,用於檢測屋頂型邊緣的效果也不錯。研究其硬體實現具有一定的典型性,可推廣到對其他算子的硬體實現。
  • 3G系統中AGC的FPGA設計實現
    agc在系統中的位置如圖1虛線框所示:    3 agc系統的fpga實現    根據agc所實現的功能  ,在fpga中將agc模塊分為如下幾個部分來實現:  3.1 數據幹路模塊    從RSP接口來10位二進位補碼數據I1和Q1,與求指數模塊傳送來的預放大增益
  • Python 圖像處理 OpenCV (13): Scharr 算子和 LOG 算子邊緣檢測技術
    Scharr 算子在說 Scharr 算子之前,必須要提的是前面我們介紹過的 Sobel 算子, Sobel 算子雖然可以有效的提取圖像邊緣,但是對圖像中較弱的邊緣提取效果較差。Scharr 算子是對 Sobel 算子差異性的增強,兩者之間的在檢測圖像邊緣的原理和使用方式上相同。而 Scharr 算子的主要思路是通過將模版中的權重係數放大來增大像素值間的差異。
  • 拉普拉斯方程之美:萬物的數學之匙
    它只有5個符號。被平方的一個名為向量算子的倒三角,希臘字母φ,等號,零。通過這五個符號,拉普拉斯讀懂了宇宙。φ,這個方程的精髓,通常代表勢能。被一系列運算所代表的向量算子平方被稱之為拉普拉斯算子。它所測量的是在這篇陸地上移動時φ值升降之間的平衡。在山頂上,不論任何方向,唯一的可能就是海拔的下降,因為它已是最高點。這時的拉普拉斯算子是負數,因為下降值比上升值大。山谷底則完全相反,正數的拉普拉斯算子是因為唯一的可能就是上升。而在這兩者之間則存在著一處平衡點,在那,一步可能帶來的上升和下降完全相同。
  • 拉普拉斯變換的物理意義是什麼?
    這個問題要先從一個工程師說起……英國有一位工程師,名叫Heaviside(此君自學成才,化簡了麥克斯韋方程組,提出了電離層假說),他使用了一種叫做「運算算子法」的計算方法來解決電路計算中的一些問題。這樣一來就相當於將微分和積分運算化為乘除,把微分方程化為代數方程,簡單了很多[注2],現在常微分方程求解這也是一種常用而且比較簡便的方法。
  • Oh My God,原來是一個這樣的拉普拉斯,宇宙中的惡魔拉普拉斯妖
    他在運用數學的同時又創造和發展了許多新的數學方法,包括有限差分方法、概率論、萬有引力定理、彗星軌道、微分方程的解法、拉普拉斯變換、最小二乘法、代數學中關於行列式的展開定理、實積分轉化為復積分計算等。。。
  • 一種基於FPGA的視頻邊緣檢測系統設計
    對於視頻圖像的邊緣檢測,若採用軟體方式實現由於受到系統處理速度的限制,容易出現斷幀現象,這對於要求實時處理的情況下將是一個很大的缺陷。硬體實現主要有基於專用晶片,基於DSP和基於FPGA的3種處理方式。基於專用晶片方式並不適合前期產品的開發。基於DSP方式在運算速度、數據吞吐量等方面有限制。本設計基於FPGA實現,邊緣檢測採用流水線結構。實驗結果表明,該系統十分適合視頻數據的處理。
  • 算子
    在數學和計算機領域,算子是一個常見的概念,我們先來簡單理解一下,因為心理學的算子其實也只是在此基礎上的演變。算子英文一般稱為operator,直譯可以理解為操作。在數學上可以解釋成一個函數空間到另一個函數空間(或它自身)的映射。在計算機領域可以理解為一個處理單元,往往是指一個函數,在使用算子時往往會有輸入和輸出,算子則完成相應數據的轉化,比如:mov、inc等都是算子。
  • 從算子角度理解優化方法
    ,而這些方法又可以從不同角度去理解。 ,迭代去尋找解: 的更新放在一起:   5.Peaceman-Rachford splitting這個算子的穩定點迭代等價於對稱ADMM方法。也就是:這個方法我第一次見是在何炳生老師(我老師的老師)的一個講座上,用變分不等式的框架去分析的,還舉了個挑擔子的例子,說兩邊一樣重(對稱)才能跑得快,印象深刻。1. 這些算子怎麼來的呢?用forward來舉例吧,我們本來要求
  • 擴展Pytorch:實現自定義算子(一)
    過年有空啦,可以聊一聊如何擴展Pytorch實現自定義算子。在上一篇文章中《利用Pytorch實現卷積操作》,已經給大家展示過,如何重新實現一遍卷積算子。但是歸根結底是各種利用Pytorch內置好的各種基礎算子進行組合。那假如某天我突發奇想搞出個奇怪的操作,而且這個算子複雜到沒辦法用基礎算子進行組合,那麼這個時候就需要稍微「往裡走」一下,從底層上實現一個完整的基本算子。
  • 《精靈寶可夢Lets Go》拉普拉斯怎麼獲取 拉普拉斯獲取方法介紹
    看過神奇寶貝動畫的都知道,拉普拉斯就是我們俗稱的乘龍,不僅造型好看,還能在水上騎乘,而且實力也不錯。那麼拉普拉斯該如何獲得呢?很多小夥伴還不清楚具體方法,下面... 精靈寶可夢Lets Go拉普拉斯怎麼獲得?
  • 數學大師,宇宙中的惡魔拉普拉斯妖
    《宇宙系統論》這是拉普拉斯另一部名垂千古的傑作。在這部書中,他獨立於康德,提出了第一個科學的太陽系起源理論——星雲說。康德的星雲說是從哲學角度提出的,而拉普拉斯則從數學、力學角度充實了星雲說。因此,人們常常把他們兩人的星雲說稱為"康德-拉普拉斯星雲說"。3.
  • 基於FPGA的實時中值濾波器硬體實現
    中值濾波作為一種非線性濾波方法,既可以消除隨機噪聲和脈衝幹擾,又可以很大程度地保留圖像的邊緣信息,得到了廣泛的運用。在許多實際應用場合,如高清視頻監控、X光圖像的降噪等,需要快速且實時地進行中值濾波,軟體實現達不到實時處理的要求,因此選用硬體實現。
  • 一種採樣隨機Clifford算子的簡單方法
    這篇文章提出了一種可以均勻隨機採樣Clifford算子的方法,相比於此前的採樣算法,該方法實現更為簡單,且可以直接生成Clifford
  • CV崗位面試題:什麼是Local Feature(局部特徵算子)
    檢測的準確性影響算子的執行力。,在5個圓環中計算10個強度帶,生成50維算子7)Steerable filters and differential invariants  使用與高斯卷積後的導數8)Complex filters9) Moment invariants10) Cross correlation6.匹配方法
  • 如何在 FPGA 上實現雙線性插值的計算?
    在計算機圖像的過程中,圖片放大有很多種不同的方法。速度最快的就是最鄰近法(簡單圖像縮放),它的原理就是直接把源圖像距離最近的像素點值填充到放大圖像的像素點。缺點就是會在放大圖片中出現很多的馬賽克,圖像放大非常不平滑。
  • 邊緣檢測——Canny算子
    Canny邊緣檢測算子(Canny,1986)被認為當前最受歡迎的邊緣檢測方法。
  • 基於JTAG接口實現ARM的FPGA在線配置
    SDR終端的實現往往都是基於可重配置的硬體環境,如現場可編程邏輯陣列(Field Programmable Gate Array,FPGA)、數位訊號處理器(Digital Signal Processor,DSP),而不是專用集成電路(Application Specific Integrated Circuit,ASIC)等特定的硬體電路和晶片。
  • 基於FPGA的任意分頻器設計
    儘管目前在大部分設計中還廣泛使用集成鎖相環(如Altera的PLL,Xilinx的DLL)來進行時鐘的分頻、倍頻以及相移設計,但是,對於時鐘要求不太嚴格的設計,通過自主設計進行時鐘分頻的實現方法仍然非常流行。首先這種方法可以節省鎖相環資源,再者這種方式只消耗不多的邏輯單元就可以達到對時鐘的操作目的。