數字圖像處理——2D降噪

????????圖像降噪處理主要分為2D(空域)與3D降噪(時域/多幀),而2D降噪由于相關的實現算法豐富,效果各異,有著豐富的研究價值。理解2D降噪算法的流程,也對其他的增強算法有很大的幫助,本文將介紹均值濾波到非局部均值濾波算法的原理及實現方式。

????????細數主要的2D降噪算法,如下圖所示,從最基本的均值濾波到相對最好的BM3D降噪,本文將詳解這些算法的實現流程,并給予一定的FPGA加速實現的實現思路。

一、均值/中值濾波

? ? ? ? 現所有濾波算法都是通過當前像素周邊的像素,以一定的權重來計算濾波的像素值。因此主要涉及兩個變量:窗口的大小,以及窗口內像素的權重。以最簡單的均值濾波/中值濾波,3*3窗口為例,計算及優缺點如下:

圖片

均值濾波? ? ? ??

????????對于FPGA的硬件加速實現,過程還好,唯一頭疼的就是涉及了除法,由于除法計算時鐘周期長且耗費LE,我們需要升級改造下,因此優化公式如下(sum為9個像素累加的結果),將除法巧妙變成乘法:

圖片

因此實現的流程如下

1)sum1=P0+P1+P2; sum2=P3+P4+P5; sum3=P6+P7+P8,即先求每行3像素累加

2)sum=sum1+sum2+sum3,即求三行9像素累加

3)sum*144,取結果的[17:10],即為均值濾波的結果。

4)以上過程流水線,最終每個clk輸出一個計算結果。

備注:這里1024/9取了floor,這樣保證不會溢出。

中值濾波

對于中值濾波而言,本身計算并不復雜,就看怎么取巧最快得到中間數,網上流傳了一個三步法,即如下圖所示,

圖片

那么FPGA硬件加速實現,流程如下:

1)計算每行3個像素的最大中、中值、最小值

2)計算三個最大值的最小值,中間值的中間值,以及最小值的最大值。

3)對上述三個值求得中間值。

4)以上過程流水線,最終每個clk輸出一個計算結果。

中值濾波計算相對均值濾波稍微復雜一點,但是好處是只用了比較器,沒用乘法器,比均值濾波更省資源。

對于椒鹽圖像的均值濾波、中值濾波計算效果對比,如下所示,分別為椒鹽圖像、均值濾波、中值濾波結果。

圖片

二、高斯濾波

????????前面講的均值/中值濾波,對于窗口內每個像素的權重都是一樣的,噪聲在圖像當中常表現為一引起較強視覺效果的孤立像素點或像素塊,那么他必然不是平均分布。

????????正態分布是最重要的一種概率分布,也叫做高斯分布。在正態分布里,中間狀態是常態,過高和過低都屬于少數,因此正態分布具有相當的普遍性。

圖片

?????????因此以概率論及中心極限定理猜想,大部分噪聲應該也符合正態分布/高斯分布(高斯白噪聲),所以也就有了高斯濾波,及根據正態分布進行權重計算的濾波方法。上圖曲線是高斯分布的一維函數,而圖像應該是二維的,圖解如下二維高斯分布:

圖片

????????既然已經得到二維高斯分布函數,那么根據窗口到目標像素的距離,就可以是計算出周邊像素的權重——高斯模板。均值濾波每個像素的權重都是1/9,再通過卷積后計算得到結構,而高斯濾波就是根據正態分布,去計算當前像素相對距離的權重值,假定σ=1.5(σ就是濾波的強度),3*3的高斯模板計算計算過程如下:

圖片

????????但是這還不夠,畢竟我們的目標是直接上FPGA,那必須頂定點化,因此假設擴大1024倍,則3*3的高斯模板定點化如下:

圖片

????????對于3*3或者5*5,選定的σ,高斯模板那么,現在計算就簡單了,卷積后再縮小1024倍即可,采用FPGA計算,過程如下:

1)計算9個像素的對應卷積參數的乘法

2)9累加9個乘法結果

3)右移10bit或取結果的[17:10],即為高斯濾波的結果。

4)以上過程流水線,最終每個clk輸出一個計算結果。

備注:當然實現還可優化,比如只用3個乘法器,算一行累加一行,也就4個時鐘算完。

最后,暫且盜用別人針對不同σ的3*3高斯濾波效果圖,如下(σ越大越模糊):

圖片

?三、雙邊濾波

????????雙邊濾波是一種非線性濾波器,它可以達到保持邊緣、降噪平滑的效果。和其他濾波原理一樣,雙邊濾波也是采用加權平均的方法,用周邊像素亮度值的加權平均代表某個像素的強度,所用的加權平均基于高斯分布。

????????但是,雙邊濾波的權重不僅考慮了像素的歐式距離(如高斯濾波)——核域,還考慮了像素范圍域中的輻射差異(比如像素與中心像素之間相似程度)——值域,計算時同時考慮這兩個權重。?圖片

????????借用上網的一個圖,如上為同時考慮核域與值域的像素濾波計算公式,其中space weight和range weight都符合高斯分布,但前者僅靠了距離,后者考慮了差值,因此兩者結合就是同時考慮了space & range濾波。上述公式太抽象,重新梳理如下(其中1/Wp為歸一化因子):

圖片

????????由于雙邊濾波同時考慮了空間距離和像素相似度的影響,因此尤其在具有邊緣梯度的圖像中,能夠有不錯的效果。即在平坦區域,空間距離占優勢,在邊緣區域,像素間相似度占優勢,可以直觀的用下面這個圖來表示:

圖片

圖片

圖片

根據上圖,繼續進一步細化步驟,詳解在FPGA中的實現方式,如下:

1)提前計算好高斯模板,和用于值域權重計算的256地址數據(均已擴大1024倍定點化)

2)根據3*3原圖和中心點差值判斷,得到值域模板

3)將提前準備的高斯模板和上一步的值域模板相乘,得到雙邊權重模板

4)將得到的3*3個新的權重累加,

5)根據累加結果,歸一化(歸1024化)完成最終權重模板的計算

6)最新模板和原始3*3原圖卷積,得到新的目標像素。

7)以上過程流水線,最終每個clk輸出一個計算結果。

OK,搞定,巧妙使用1024倍定點化,及查找表的方法,所有指數相關操作全部解決,在允許的誤差范圍內,實現FPGA的加速運算。

雙邊濾波其實就是個磨皮算法,用于美容養顏還是不錯,所以網上找了一個圖給大家參考下,如此下:

圖片

????但是,這里的歸一化還是有不盡人意的地方,因為不確定9個權重累加的值是多少,因此無法采用乘法來替代除法,這一塊暫且在后面想好了再追加討論。

參考文章

  1. https://blog.csdn.net/qinghuaci666/article/details/81737624
  2. https://www.cnblogs.com/yoyo-sincerely/p/6058944.html
  3. https://www.jianshu.com/p/73e6ccbd8f3f
  4. https://blog.csdn.net/abcjennifer/article/details/7616663
  5. https://blog.csdn.net/u013066730/article/details/87859184

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253745.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253745.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253745.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

項目開發(Require + E.js)

最近在做的幾個項目,分別用了不同的框架跟方式,有個H5的項目,用了vue框架, 這個項目我還沒有正式加入進去, 等手頭的這個項目完成就可以去搞vue了, 現在手頭的這個項目是一個招聘的項目, 用到了…

五個常用的Linux監控腳本代碼

bash中 2>&1 & 的解釋 1、首先,bash中0,1,2三個數字分別代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即標準輸入(一般是鍵盤),標準輸出(一般是顯示屏,準…

AHB協議學習

1. 簡介 AHB(Advanced High Performance Bus)總線規范是AMBA(Advanced Microcontroller Bus Architecture) V2.0總線規范的一部分,AMBA總線規范是ARM公司提出的總線規范,被大多數SoC設計采用,它規定了AHB (Advanced High-performance Bus)、A…

jquery lazy load

LazyLoad是一個Js編寫的Jq插件,它可以延遲加載頁面中的圖片,在瀏覽器可視范圍中的圖片會被加載。如何使用&#xff1a;LazyLoad依賴于Jquery&#xff0c;在html的結尾處 ,就是在</body>前。<script type"text/javascript" src"jquery.js"><…

linux內核中的循環緩沖區

Linux內核中的循環緩沖區&#xff08;circular buffer&#xff09;為解決某些特殊情況下的競爭問題提供了一種免鎖的方法。這種特殊的情況就是當生產者和消費者都只有一個&#xff0c;而在其它情況下使用它也是必須要加鎖的。 循環緩沖區定義在include/linux/kfifo.h中&#xf…

js的規范寫法ES5(自己以后按照這樣寫)

1、引號的使用&#xff0c;單引號 優先&#xff08;如果不是引號嵌套&#xff0c;不要使用雙引號&#xff09; 正常情況&#xff1a;console.log(hello there) 雙引號轉碼&#xff1a; $("<div classbox>") 2、空格的使用問題&#xff1a;&#xff08…

刪除本地git的遠程分支和遠程刪除git服務器的分支

在項目中使用git管理代碼后&#xff0c;有些時候會創建很多不同名稱的分支&#xff0c;以此區分各個分支代碼功能。 而隨著代碼的合并&#xff0c;以前的分支就可能不再需要保存了&#xff0c;所以就要對沒有用的分支進行刪除&#xff0c;包括緊急回滾時從中抽取某一個版本記錄…

數字圖像處理——引導濾波

一、概述 引導濾波是由何愷明等人于2010年發表在ECCV的文章《Guided Image Filtering》中提出的&#xff0c;后續于2013年發表。引導過濾器根據局部線性模型原理&#xff0c;通過考慮引導圖像的內容來計算過濾輸出&#xff0c;引導圖像可以是輸入圖像本身或另一個不同的圖像。具…

Ubuntu 18.04換國內源

2019獨角獸企業重金招聘Python工程師標準>>> 參考文檔&#xff1a; https://blog.csdn.net/zhangjiahao14/article/details/80554616 https://blog.csdn.net/xiangxianghehe/article/details/80112149 1.復制源文件備份&#xff0c;以防萬一 我們要修改的文件是sour…

video4linux簡介

Video4linux&#xff08;簡稱V4L),是linux中關于視頻設備的內核驅動,現在已有Video4linux2&#xff0c;還未加入linux內核&#xff0c;使用需自己下載補丁。在Linux中&#xff0c;視頻設備是設備文件&#xff0c;可以像訪問普通文件一樣對其進行讀寫&#xff0c;攝像頭在/dev/v…

動態DPC算法學習

造成壞點的原因 感光元件芯片自身工藝技術瑕疵造成;光線采集存在缺陷;制造商產品差異;壞點分類 hot pixel: 固定保持較高的像素值,一般呈現為畫面高亮的點;dead pixel: 固定保持較低的像素值,一般在畫面中呈現為暗點;noise pixel:信號強度隨光照呈現的變化規律不符合正…

windows 郵槽mailslot 在服務程序內建立后客戶端無權限訪問(GetLastError() == 5)的問題...

郵槽創建在服務程序內&#xff0c;可以創建成功&#xff0c; 但外部客戶端連接時 m_hMailslot CreateFile("\\\\.\\mailslot\\zdpMailslot",GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);GetLastError返回錯誤 5 &#xff0c;無權…

遞歸下降分析

對于給定的文法G[E] : E→ET|E-T|TT→T*F| T/F|FF→(E)|i 消除左遞歸后的文法是&#xff1a;E→TE E→TE|-TE|∑ T→FT T→*FT|/FT|∑ F→(E)|i 是否是LL(1)文法&#xff1f; select(E→TE)first(TE){(,i}select(E→TE)first(TE){}select(E→-TE)first(-TE){-}select(E→∑)fol…

SYS簡介

"sysfs is a ram-based filesystem initially based on ramfs. It provides a means to export kernel data structures, their attributes, and the linkages between them to userspace.” --- documentation/filesystems/sysfs.txt 可以先把documentation/filesystems/…

數字后端——布圖規劃

布圖規劃&#xff08;floorplan&#xff09;與布局&#xff08;place&#xff09;在芯片設計中占據著重要的地位&#xff0c;它的合理與否直接關系到芯片的時序收斂、布線通暢、電源穩定以及良品率。所以在整個芯片設計中&#xff0c;從布圖規劃到完成布局一般需要占據整個物理…

利用SSH傳輸文件

在linux下一般用scp這個命令來通過ssh傳輸文件。 1、從服務器上下載文件scp usernameservername:/path/filename /var/www/local_dir&#xff08;本地目錄&#xff09; 2、上傳本地文件到服務器scp /path/filename usernameservername:/path 例如scp /var/www/test.php root19…

App WebView實例化

a&#xff0c;高級設置里的環境變量 jdk的配置 b&#xff0c;下載Google的sdk&#xff0c;里面直接包含eclipse 1&#xff0c;新建一個項目 2&#xff0c;起個名字 3&#xff0c;設么走不做&#xff0c;next 4&#xff0c;只操作選擇顯示的三種方式 5&#xff0c;next什么都不做…

[動態代理三部曲:下] - 從動態代理,看Retrofit的源碼實現

前言 關于動態代理的系列文章&#xff0c;到此便進入了最后的“一出好戲”。前倆篇內容分別展開了&#xff1a;從源碼上&#xff0c;了解JDK實現動態代理的原理&#xff1b;以及從動態代理切入&#xff0c;學會看class文件結構的含義。 如果還沒有看過這倆篇文章的小伙伴&#…

Ti的DM368系列芯片的所有PDF資料匯總

http://www.ti.com/sc/docs/psheets/man_dsp.htm

劉浩(專業打劫三十年)20155307的預備作業02:

我的技能&#xff1f;比大多數人好&#xff1f;經驗是什么&#xff1f;與老師的經驗的共同之處&#xff1f; 我的技能之一就是單詞翻譯王——其實看了婁老師的學習經驗之后便有些自慚形穢了&#xff0c;我目前的單詞量是7300,扇貝上測的&#xff0c;而且測試時是嚴格的“不會就…