python一維平滑濾波 雙邊濾波器文獻總結(一)

2021-10-14 07:02:52 字數 1882 閱讀 6243

因為最後的dde演算法中,最核心的就是濾波器模組,由於做之前是沒有好好攻讀相關硬體文獻,加上相關背景寫的不好導師一頓痛批,搞得現在要本末倒置,拿結果去找自己值得這麼做的理由。但其實從研究角度來說應該是一件好事的。

(小吐個槽:說起來之前也不算是沒好好讀文獻,實在是調研的時候方向偏差太大,紅外影象增強的vlsi或fpga實現?要麼沒有,要麼都停留在很簡單的加速方式,比如已經被做成ip的直方圖均衡類演算法,甚至有人拿c轉verilog來湊數的!有參考價值的都只是單單說演算法而不是太講實現的。也都是做rtl設計的時候遇著坑了,才想到主要問題可能要去分析濾波器,而搜濾波器的硬體實現才是真的一搜嚇一跳,果然很多時候,我們思維都容易固化在頂層了,畢竟做vlsi或者fpga設計很多時候是沒辦法細份在某個具體應用領域的,都是越通用越好,而用它們加速本身也是一種底層思維,迭代成本很高,更需要我們具有這種底層的意識)。

今天就主要聊聊雙邊濾波器的硬體實現。

首先感覺比較新並且比較系統的應該算是這一篇了

tseng y c , hsu p h , chang t s . a 124 mpixels/s vlsi design for histogram-based joint bilateral filtering[j]. ieee transactions on image processing, 2011, 20(11):3231-3241.

他最好的一點是對很多處理這種濾波器的思路進行了歸類總結,並對時間複雜度和儲存消耗做了整理。

**中的歸類表

我最後的採用的設計方法,也是非常相似於durand的方法,所以我先對這種型別做一說明。雙邊濾波器擁有更多的應用場景就是因為他比一般的空間濾波器(文中稱spatial filter)有更好的邊緣保持性(edge-preserving),理解一下就是邊緣(也可以理解為輪廓)越多的地方,平滑的程度相對於非邊緣區域小一點。一般的空間濾波器,在fpga和vlsi應用中,已經有了很好辦法了,就是用暫存器組,搭建乙個卷積核,並且利用s行緩衝把zig-zag(寫z字母的順序)的順序,變成s行並行。(圖畫的很醜,大家理解)

那麼能不能把f(|c-q|),g(|ic-iq|)也寫到這個卷積核裡呢?答案是不能的,由於位置確定,計算f其實輸入都是常量,但是g的輸入可不是常量,他需要中心畫素點,而這個卷積核每移動一下(整個運算操作可以等效為卷積核按z型移動),中心畫素點都會變。g需要乙個單輸入超越函式運算模型,在硬體實現中,方法有3,一種是多項式分解,一種是cordic演算法,一種就是lut(查詢表)。前兩個這個表中沒有,就不說了,lut顧名思義,就是有限輸入情況,你拿著輸入翻譯成位址到ram裡找,1個週期就能實現,特別適合現在的情況:時間短、吞吐率一致,而且數字影象處理的灰度級本身也是有限的。但是套的時候就發現問題了,我為了簡單只話了乙個3x3的卷積核,如果大了,對於ram面積就是幾何倍的增長,如何能讓這個增長不太大就是去縮減ic-iq的灰度級(subsample),或者用線性插值(piecewise-linear)去進一步簡化lut(y=c--->y=ax+b)。當然也有人直接避開這種計算,比如paris的方法是直接用近似的方法把二維卷積化成了三維卷積(比較怪異不細說)。memory cost應該沒有表裡這樣,就basic而言我覺得應該是這樣的,不少於s*(n-1)+(s*(h+1))^2,第一項是行緩衝,第二項是查詢表加暫存器組(查詢表深度h)。

pham的方法,先x方向上濾波,再y方向上濾波

一維訊號雙邊濾波器 雙邊濾波器文獻總結(一)

因為最後的dde演算法中,最核心的就是濾波器模組,由於做之前是沒有好好攻讀相關硬體文獻,加上相關背景寫的不好導師一頓痛批,搞得現在要本末倒置,拿結果去找自己值得這麼做的理由。但其實從研究角度來說應該是一件好事的。小吐個槽 說起來之前也不算是沒好好讀文獻,實在是調研的時候方向偏差太大,紅外影象增強的v...

快速雙邊濾波 Python實現

介紹 課程的最後乙個實驗是處理雀斑,網上查詢了很多方法,最後我選擇了快速雙邊濾波。但是實驗又不能直接呼叫 opencv 的庫,因此,我參照了 這個部落格,將用 c 寫的快速雙邊濾波改用 python 重新寫了一遍。快速雙邊濾波是啥呢,官方滴說,它是一種非線性的濾波方法。它最大的特點就是既使用了顏色的...

點雲平滑之雙邊濾波適用性分析

雙邊濾波原文 the bilateral filter for point clouds 作者為julie digne carlo franchis下面直接給出 中單點更新的方法 通過單點更新公式可知,更新點為原始點在法線方向上的移動。作者在此處進行了說明,通過半徑搜尋得到的鄰域點集進行法線估計,法...