1. 程式人生 > >約束復原與維納濾波(數學原理與MATLAB實現)

約束復原與維納濾波(數學原理與MATLAB實現)

在【影象處理中的數學原理】專欄(該專欄中的文章已經結集出版,書名為《影象處理中的數學修煉》)之前的一篇文章中,我們曾經討論過一種“自適應影象降噪濾波器的設計與實現”。彼時,也曾經提過其中運用了維納濾波器的一些方法,但我們並未深入討論關於維納濾波的更多內容。本文作為這個系列中的一個續篇,繼續來深入研究著名的維納濾波,特別是其背後的數學原理。這也涉及到了限制性影象復原和非限制性影象復原的一些話題。

歡迎關注白馬負金羈的部落格 http://blog.csdn.net/baimafujinji,為保證公式、圖表得以正確顯示,強烈建議你從該地址上檢視原版博文。本部落格主要關注方向包括:數字影象處理、演算法設計與分析、資料結構、機器學習、資料探勘、統計分析方法、自然語言處理。

影象復原的逆濾波方法

如果H是一個線性移不變系統,那麼在時域中給出的退化過程可由如下公式給出:

g(x,y)=h(x,y)f(x,y)+η(x,y)其中,h(x,y)是退化函式在時域下的表示,運算子表示時域卷積。由卷積定理可知,時域上的卷積等同於頻域上的乘積,所以上式在頻域中的表述如下:G(u,v)=H(u,v)F(u,v)+N(u,v)其中的大寫字母項是之前公式裡對應項的傅立葉變換。退化函式H通常是指模糊、抖動等影響。
如果認為噪聲的影響很小,那麼上面的式子就可以寫成G(u,v)=H(u,v)F(u,v),假設H(u,v)是可逆的,那便可以得出F(u,v)=G(u,v)/H(u,
v)
。但實際上噪聲是在所難免的,因而只能設法求出F(u,v)的估計值F̂ (u,v),此時用H(u,v)F(u,v)+N(u,v)來替換G(u,v),則有:F̂ (u,v)=H(u,v)F(u,v)+N(u,v)H(u,v)=F(u,v)+N(u,v)H(u,v)
這也就是逆濾波(inverse filter)的基本原理。從這個公式可以看出:首先,如果希望復原後的F̂ (u,v)F(u,v)儘量接近,就需要min||N(u,v)||;其次,如果噪聲比較大,特別是噪聲的影響大過退化函式的影響,那麼復原的效果就會很差。

不妨在MATLAB中做一些簡單的實驗。在後面我們實現了一個用於影象復原的維納濾波函式mydeconvwr(I, PSF, NSR),其中I是待處理的退化影象,PSF是退化函式(以矩陣形式給出),當NSR=0時,這個函式就變成了一個逆濾波器。下面來實驗一下,不加任何噪聲的情況下呼叫mydeconvwr函式來對影象進行復原。

I = im2double(imread('cameraman.tif'));
LEN = 21; THETA = 11;
PSF = fspecial('motion', LEN, THETA);
blurred = imfilter(I, PSF, 'conv', 'circular');

result1 = mydeconvwnr(blurred, PSF, 0);

subplot(1,3,1),imshow(I),title('original image');
subplot(1,3,2),imshow(blurred),title('blurred image');
subplot(1,3,3),imshow(result1),title('restored image');

執行上述程式碼,所得之結果如下圖所示。可見在不引入噪聲的情況下,逆濾波的影象復原效果非常好。


下面我們試著向退化的影象中加入一些高斯噪聲,然後再用逆濾波來對影象進行復原,實驗程式碼如下。
noise_mean = 0;
noise_var = 0.0001;
blurred_noisy = imnoise(blurred, 'gaussian', noise_mean, noise_var);
estimated_nsr = 0;
result2 = mydeconvwnr(blurred_noisy, PSF, estimated_nsr);
subplot(1,2,1),imshow(blurred_noisy ),title('blurred image with noise');
subplot(1,2,2),imshow(result2),title('resotred image without considering noise');

執行上述程式碼,所得之結果如下圖所示。可見在引入噪聲的情況下,逆濾波的影象復原效果非常不理想。

在MATLAB中實現維納濾波

維納濾波的基本公式是

F̂ (u,v)=[H(u,v)|H(u,v)|2+PN(u,v)/PS(u,v)]G(u,v)=[1H(u,v)|H(u,v)|2|H(u,v)|2+PN(u,v)/PS(u,v)]G(u,v)其中H(u,v)表示退化函式,H(u,v)2=H(u,v)H(u,v)H(u,v)表示H(u,v)的複共軛;PN(u,v)=|N(u,v)|2表示噪聲的功率譜;PS(u,v)=|F(u

相關推薦

約束復原濾波數學原理MATLAB實現

在【影象處理中的數學原理】專欄(該專欄中的文章已經結集出版,書名為《影象處理中的數學修煉》)之前的一篇文章中,我們曾經討論過一種“自適應影象降噪濾波器的設計與實現”。彼時,也曾經提過其中運用了維納濾波器的一些方法,但我們並未深入討論關於維納濾波的更多內容。本文作

如何高效的編寫同步部落格 .NET Core 小工具實現

系列目錄 一.前言 寫部落格,可以帶給我們很多好處,比如可以讓我們結識更多志同道合的人;在寫部落格過程中去查技術資料或者實踐可以讓我們對知識的掌握和理解更加深刻;通過部落格分享能幫助他人收穫分享的快樂等等。寫部落格真的是一件十分有益的事情,在此我帶給大家一種高效的編寫以及同步部落格的方式,這也是我目前在用的

基於深度學習方法的dota2遊戲資料分析勝率預測python3.6+keras框架實現

很久以前就有想過使用深度學習模型來對dota2的對局資料進行建模分析,以便在英雄選擇,出裝方面有所指導,幫助自己提升天梯等級,但苦於找不到資料來源,該計劃擱置了很長時間。直到前些日子,看到社群有老哥提到說OpenDota網站(https://www.opendota.com/)提供有一整套的介面可以獲取dot

BP神經網絡原理MATLAB實現

gen 性能 oct temp png error alt 交叉驗證 對比 人工神經網絡概述: 人工神經元模型: 神經網絡的分類: 按照連接方式,可以分為:前向神經網絡 vs. 反饋(遞歸)神經網絡; 按照學習方式,可以分為:有導師學習神經網絡 vs. 無導

使用 matlab 數字影象處理—— 濾波復原

逆濾波只能解決只有退化函式,沒有加性噪聲的問題。維納濾波又稱最小均方誤差濾波,綜合考慮了退化函式和噪聲。均方誤差由下式給出: e2=|f(x)−f^(x)|2 假定噪聲與影象是不相關的,復原影象的最佳估計可用下式表示: F^(u,v)=[HH(u,v)|H

影象去模糊濾波

在數學應用上,對於運動引起的影象模糊,最簡單的方法是直接做逆濾波,但是逆濾波對加性噪聲特別敏感,使得恢復的影象幾乎不可用。最小均方差(維納)濾波用來去除含有噪聲的模糊影象,其目標是找到未汙染影象的一個估計,使它們之間的均方差最小,可以去除噪聲,同時清晰化模糊影象

圖象恢復——濾波濾波

目的:對獲取影象在頻域用高斯函式進行退化併疊加白噪聲,對退化影象進行逆濾波和維納濾波恢復,比較原始影象和恢復影象,對利用逆濾波和維納濾波恢復方法恢復影象進行比較。一、基本原理      影象復原是一種客觀的操作,通過使用退化現象的先驗知識重建或恢復一副退化的影象;影象在形成、

濾波實現

wid proc 灰度 auto sig play png size and 參考鏈接:Matlab Wiener2函數 一、算法原理及公式: 二、算法實現: 步驟一:計算局部均值圖localMean與局部方差圖localVar,可采用積分圖加速;

濾波LMS matlab

LMS演算法的前提是:參考輸入端進入的訊號與需要的訊號具有相關關係;同時與純淨的有用訊號相互獨立。 常用在干擾相消的情況下,比如心電圖訊號常常會混有50Hz的噪聲,需要慮除這個噪聲,我就可以在參考輸入的輸入一個50hz的訊號。即這個訊號與噪聲是相關的(頻率一致),故可以消除噪聲。而心電圖訊號是個

隱馬爾科夫模型HMM特比Viterbi演算法通俗理解

隱馬爾科夫模型:https://blog.csdn.net/stdcoutzyx/article/details/8522078 維特比演算法:https://blog.csdn.net/athemeroy/article/details/79339546 隱含馬爾可夫模型並不是俄

51 Nod 1082 7無關的數數學、思維、列舉

題目來源: 有道難題 基準時間限制:1 秒 空間限制:131072 KB 分值: 5 難度:1級演算法題  收藏  關注 一個正整數,如果它能被7整除,或者它的十進位制表示法中某個位數上的數字為7,則稱其為與7相關的數。求所有小於等於N的與7無關的正整數的平方和。

數字影象處理 濾波

function [f,noise] = mywiener2(g, nhood, noise) if (nargin<3) noise = []; end % Estimate the local mean of f. localMean = fil

Wiener濾波基本原理及其演算法實現

文章轉載自:http://blog.sina.com.cn/s/blog_bb81c2230102xdbl.html  如果有侵權,請聯絡博主刪除 To learn, to share, to debate, then comes progress. 1.演算法背景: 訊號濾波

濾波器

很久沒有靜下心來整理一下了,我很早之前就想做一個從Wiener 濾波器了開始講的部落格了,現在終於有了安靜坐下來總結一下的理由。從這裡開始入手我感覺是對這一年多時間的尊敬,我會從模型開始講起,會把我從論文和書中的理解呈現出來,如果有時間,我會把我的程式碼放到我的git上,有興

卡爾曼濾波濾波

--總覺得網上其他部落格上寫的都不太適合自己理解,百般翻閱書籍理解了一下,供自己日後複習之用。 本文的程式整理可到此處下載:http://download.csdn.net/download/sillykog/10123483 用過去的觀測值來估計當前或者

數學優化凸集4斯坦福凸優化筆記4

1 分離與支撐超平面 (圖片來自斯坦福Boyd Convex Optimization) 假設C和D是兩個不相交的凸集,那麼一定存在a≠0的超平面aTx=b將凸集分隔開,使C中點滿足aTx≤b,而D中點滿足aTx≥b。注意,逆定理能被超平面分離說明不相

cnpm install -S cnpm install -D dependencies和devDependencies的區別

ive optional package bsp 後者 pack cti enc date npm install takes 3 exclusive, optional flags which save or update the package version in y

C#語言中數組集合的區別以List集合為例

類型 添加元素 list 添加 一個 保存 操作方法 適用於 length 數組用於保存固定數量的數據,定長,占用內存少,遍歷速度快; 集合保存的數據數量,可以在程序的執行過程中,不斷發生變化,不定長,占用內存多,遍歷速度慢; 在功能上,數組能實現的所有功能,集合都能實現;

線性規劃中的單純形法內點法原理、步驟以及matlab實現

應用 最大化 round 並不是 兩個 生產 陰影 3.3 ima 在本系列的第三篇博客中,筆者討論對偶單純形法的相關理論和應用 2.3 Dual Simplex Method(對偶單純形法) Contents   2.3.1 對偶問題產生的原因   2.3.2 對偶問題的

ubuntu 12.04 簡單配置samba服務,實現主機虛擬機互通設置Windows虛擬盤

完成 sam inux ... conf restart bridged 要求 system 環境: virtualbox ubuntu12.04 首先,如果你到這步了,說明你的window與linux的網絡已經配好了,他們之間是可以互相Ping通的,如果沒有,請看我以