1. 程式人生 > 實用技巧 >維納濾波進行影象去抖動去模糊

維納濾波進行影象去抖動去模糊

首先,我們簡單說明一下利用維納濾波進行影象去抖動去模糊的基本原理,並給出模擬結果。

利用維納濾波器進行影象去抖去模糊的基本原理如下所示:

對原始影象進行維納濾波的演算法是首先估計出每個畫素點的M*N鄰域內的平均值和方差值。有如下兩個表示式計算:

用如下的表示式計算輸出的灰度值。其中a(n1,n2)是調整前的灰度值,b(n1,n2)是調整後的灰度值:

以上這部分是維納濾波的基本原理,在我們提供的一些參考文獻中均有詳細介紹,所以這裡就不多做介紹了,我們主要是對後面的創新部分進行詳細的說明。

注意:由於手機拍攝抖動導致的模糊,在數學上屬於運動模糊,所以,我們為了對比濾波效能的好壞,直接使用運動模糊來模擬抖動效果。然後進行濾波對比。

使用傳統的維納濾波演算法,對抖動模糊的模擬效果如下所示:

執行程式:main.m

車1:

車2:

車3:

其餘結果可自行測試。

下面,我們對維納濾波之後的影象質量進行實際的分析。

執行程式:main_pnsr.m

圖1 圖2

圖3

注意,在程式main_pnsr.m中

上面的圖中:

圖1:引數為LEN=30,Motion=30

圖2:引數為LEN=30,Motion=38

圖3:引數為LEN=30,Motion=20

從模擬結果可知,通過維納濾波之後,影象的質量得到了明顯的提升,和我們肉眼看到的結果一致。

當影象處理端定義的運動模糊模型引數和實際模型完全吻合的時候,影象具有較好的濾波特性,而兩個引數出現偏差的時候,濾波效果較差。這個是維納濾波的一個缺陷,

在分析另一個缺陷:

缺陷分析:

開啟main_test.m

由於在實際中,進行維納濾波的模組都是固定引數的,但是手機拍攝輸入的抖動程度是不一定的,那麼這個時候,會導致某些程度的抖動,系統無法正常工作。我們對這種現象進行測試,效果如下所示:

設定模糊引數LEN=5,運動模型引數motion=10。

很明顯,當兩個引數不一致的時候,濾波效果比較差(注意,在實際中,我們不能直接使用PSF這個引數,因為這個引數僅僅在影象源)。

設定模糊引數LEN=15,運動模型引數motion=10。

假設LEN和motion引數完全相同,這個時候,我們又需要對維納濾波的引數進行設定,

假設LEN = Motion =50;然後設定不同的引數:

0.1:

0.01:

0.001:

0.0001:

0.00001:

0.000001:

即,引數的不同,會對最後的濾波效果有較大的影響。

通過上面分析,使用維納濾波的時候,由於同時需要控制兩個引數,這就大大增加了系統濾波的引數控制難度

注意,在很多現有資料中,程式碼都deconvwnr(Ipsf,PSF)這麼寫,其實這麼做是不完善的,因為PSF是在影象源中加入抖動的時候產生的。實際中PSF的具體值是未知的,只能知道其維度。

所以,直接使用維納濾波具有很大的難度。這裡我們選擇逆卷積+自適應引數控制的方法進行設計。

改進演算法的實現:

% 引數自適應識別

這裡,我們首先需要引入影象模糊度的概念(影象模糊度的參考論文很多,但是我這沒發現利用影象模糊度和去抖動濾波的資料,所以我這裡將這兩種演算法進行結合)

影象模糊度,這裡我提供的文獻如下所示:

首先,我們開啟這個資料夾,執行程式,選擇不同的影象進行測試,這裡,我們隨機的選擇三個影象來測試。模擬結果如下所示:

從上面的模擬結果可知,通過對不同的影象進行測試,我們都可以計算其模糊度來區分該影象的模糊程度,從而選擇一個合適K值。

這裡,我們發現,對於設定不同的模糊度LEN,其值差不多都是0.8左右最小,最大到0.9左右。因此,我們設定如下的對應關係:

即通過計算模糊度,然後根據不同的值,輸入進入逆卷積濾波。

改進後的演算法流程如下所示:

左圖是原始的演算法,有圖是本文介紹的改進後的演算法(看了一些資料,貌似都沒這麼幹)

通過加入模糊度計算之後,我們進行模擬,分別設定抖動程度為

10:

10:

50:

100:

從程式上看,改進後的演算法:

其通過對輸入模糊影象的模糊度估計,得到K值,而INIIPSF是全1的初始值,因此,整個模型,只需要輸入模糊影象即可,而不需要進行其他引數的人為輸入。

同時,我們對改進後的演算法,計算PNSR。

main_psnr1:輸入模糊程度相同的情況,LEN = 50;執行,獲得如下的曲線:

main_psnr2:輸入模糊程度隨機的情況,LEN = 20~100之間隨機變化;執行,獲得如下的曲線:

這個是對同一個場景下的不同抖動程度的模擬,通過分析,可知,對於任意隨機情況下的抖動,系統都能夠自動的獲得加好的去抖動效果。

關於論文的這個部分內容書寫提綱:

1.介紹抖動模糊的一些理論知識——運動模糊

2.介紹維納濾波和逆卷積濾波的理論知識

3.對維納濾波進行模擬分析,分析其優勢,缺陷

4.根據存在的缺陷,給出本問題的演算法

4.1模糊度的介紹(具體參考我發你的資料)

4.2根據模糊度得到逆卷積濾波引數

4.2模擬分析

5將我們的這個去模糊演算法,引入到你的模型中進行測試,分析效能提升了多少。