日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab 维纳滤波恢复运动模糊,运动模糊恢复专题

發布時間:2023/12/18 循环神经网络 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab 维纳滤波恢复运动模糊,运动模糊恢复专题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

相關背景知識

1.運動模糊的定義

wiki百科上的定義是:運動模糊或運動模糊(motion blur)是靜態場景或一系列的圖片像電影或是動畫中一樣快速移動,使物體產生明顯運動痕跡。

[圖片上傳失敗...(image-9eedb7-1574308075917)]

從狹義上來說,我們僅僅關注造成人眼和相機運動模糊的原因。

對于人眼來說,由于視覺暫留原理,當前景象與視網膜殘留的景象重合產生運動模糊。

對于相機,由于在曝光時間內,被攝物體與鏡頭產生相對位移,使得底片上同一個像素點被來自不同位置的光照射,導致運動模糊。

從以上描述,我們可以看到,對于相機和人眼,運動模糊的產生主要的條件就是感光設備與被觀測物體的相對運動。

運動模糊的分類

根據模糊核的性質可以分為:

a. 線性模糊

b. 旋轉模糊

c. 縮放模糊

根據模糊的范圍,可以分為:

a. 局部模糊

b. 全局模糊

2.如何去除圖像模糊

圖像的運動模糊本質上也是一種圖像退化過程,因此我們可以將其歸于圖像退化恢復任務。

圖像退化模型

頻域(以下涉及的所有公式中,大寫大寫代表在頻域中計算,小寫代表在時域中計算):

在這里,F(x,y)是我們原本的清晰圖像,H(x,y)為我們的模糊核,G(x,y)指我們觀測到的模糊圖像,而N(x,y)是指噪聲。

PSF(點擴散函數)

當上式中H具備空間不變性時,我們可以將其稱之為點擴散函數,其定義如下:

PSF

參考運動模糊算法推論, 引用其圖片如下:

PSF示意圖其中

表示模糊方向,L表示模糊尺度,我們可以理解為在一個濾波器卷積核,以中心為原點,L/2為半徑的圓中,與水平方向的家夾角為

的直徑上的像素值為1/L,其余像素值為0。(注意:這只是理想上的psf,實際拍攝中,psf值不一定是均勻的。)

3.相關去模糊算法

當前比較傳統的去模糊算法都是基于其退化函數來去模糊。根據點擴散函數是否已知,可以將相關去模糊算法分為盲圖復原算法和非盲圖復原算法。如下圖所示。

相關去模糊算法

傳統去模糊算法

1.非盲圖去模糊算法

逆濾波算法

該算法直接根據公式(1)得出

,并且不考慮噪聲

,因此該算法對噪聲十分敏感。

從公式(2)中,我們很容易發現,當無噪聲時,該方法能很好的恢復原圖,但當噪聲存在,且H比較小的時候,等式右邊第二項將會給圖像恢復造成極大的麻煩。

python 代碼實現如下:

#inverse filter

def inverse(input, PSF): # 逆濾波

input_fft = np.fft.fft2(input)

PSF_fft = np.fft.fft2(PSF)

result = np.fft.ifft2(input_fft / PSF_fft) #計算F(u,v)的傅里葉反變換

result = np.real(fft.fftshift(result))

result[np.isinf(result)] = 0

result[result > 255.0] = 255

result[result < 0] = 0

return result

維納濾波算法

考慮到逆濾波算法的缺陷,人們又提出一種維納濾波算法,該算法從的主要思想是想找到一個濾波器

使得其可以直接將模糊圖像

轉為清晰圖像

為了求出這樣一個濾波器

,需要最小化公式(4)。

解該方程可以得到:

其中:

T(x,y)和H(x,y)是所求濾波器t(x,y)和psf h(x,y)在頻率域的傅里葉變換。

S(x,y)是原清晰圖f(x,y)的功率譜。

N(f)是噪聲的n(x,y)的功率譜。

上標?代表復數共軛

python代碼實現如下:

def wiener(input,PSF,K=0.01): #維納濾波,K=0.01

input_fft=np.fft.fft2(input)

PSF_fft=np.fft.fft2(PSF)

PSF_fft_1=np.conj(PSF_fft) /(np.abs(PSF_fft)**2 + K)

result=np.fft.ifft2(input_fft * PSF_fft_1)

result=np.real(fft.fftshift(result))

result[result > 255.0] = 255

result[result < 0] = 0

return result

約束最小二乘方算法

從維納濾波的公式推導中我們可以看到,要很好的恢復原圖,必須求出噪信比(噪聲與原圖功率譜的比值),然而這是很難獲得的,并且當噪聲為0時,維納濾波就退化為逆濾波。為此,研究人員提出了約束最小二乘方算法,該算法只需要噪聲的方差和均值,并能有效抑制恢復后圖像的噪聲。為了抑制恢復后圖像噪聲,需要最小化以下公式:

其約束為:

利用拉格朗日數乘法解得:

這里P為lapula斯算子:

python代碼實現

#約束最小二乘方濾波器

def Least_square_filter(input, psf, r = 0.001):

lp = np.array([[0,-1,0],

[-1,4,-1],

[0,-1,0]])

result = np.real(fft.ifft2(numerator * F_input / (F_psf**2 + r * F_lp**2)))

result[np.isinf(result)] = 0

result[result > 255.0] = 255

result[result < 0] = 0

return result

Richardson–Lucy_deconvolution算法

該算法基于貝葉斯估計,泊松分布以及極大似然估計對圖像進行修復。此處直接給出其迭代式:

python代碼實現

#Richardson–Lucy_deconvolution算法(露西-理查德森)

def RL_deconv_f(input, psf, iteration, eps):

ut = input

otf = psf2otf(psf) #該函數為matlab中psf2otf函數的python實現

for i in range(iteration):

ut_f = np.fft.fft2(ut)

temp1 = ut_f * otf

itemp1 = np.real(np.fft.ifft2(temp1))

ratio = input / itemp1

ratio[np.isinf(ratio)] = 255

ratio = np.nan_to_num(ratio)

iratio = np.fft.fft2(ratio)

res = iratio * np.conj(otf)

ires = np.real(np.fft.ifft2(res))

ut = ut * ires

ut[np.isinf(ut)] = 0

ut[ut > 255.0] = 255

ut[ut < 0] = 0

return ut

迭代次數實驗對比

模糊圖

迭代60次

迭代5次

迭代30次

傳統算法實驗結果對比(無噪聲)

清晰圖

模糊圖

逆濾波

維納濾波

約束最小二乘方法

RL跌代30次

傳統算法實驗結果對比(添加均值為0,方差為0.01的高斯噪聲)

清晰圖

模糊圖

逆濾波

維納濾波

約束最小二乘方法

RL跌代30次

2. 盲圖去模糊算法

一般來說,盲圖去模糊算法首先是估計點擴散函數,當點擴散函數已知時,便可以將問題轉化到非盲圖去模糊問題。但也有另外迭代的方法,即利用各種先驗知識,迭代估計psf和原圖以達到最佳效果。本節提到的是一種估計psf的經典算法。

倒頻譜法

本文主要參考博文, 以及論文0181208.htm,論文201811/20/20181120154225821.pdf

說到估計psf,主要就是估計psf的兩個重要參數,即模糊尺度

和模糊角度

。這里我們先預設一個模糊核:

,并用該模糊核模糊原圖。

PSF

估計模糊方向

a. 將模糊圖像轉化到頻域,并用對數進行動態壓縮。

原圖

模糊圖

頻域圖

b. 將壓縮后的矩陣先平方,再逆傅里葉變換回時域,然后移位到中心。

移位到中心

c . 截取取圖像中間部分,先進行閉運算,得到這條斜線。

截取圖像中間

d. 然后對閉運算結果二值化,并提取其骨架。最后一步就是估計骨架的角度,即我們要求的模糊尺度θ, 我們可以使用Radon、霍夫直線檢測、最小二乘法等方法,我這里用的是最小二乘法。

估計角度$\theta$

2.估計模糊尺度

像素

a. 將模糊圖像轉化到頻域后,移位到中心(經過對數動態壓縮) 。

b. 將步驟a中的結果反色,取得我們需要的暗通道圖。

c. 剩下的步驟和方向估計一樣,最終取得暗通道的骨架圖,估計中心兩骨架之間的距離

,則所求

。

頻域圖

移位圖

反色提取圖

最后在我實現的方法中,估計出來的

, 我們可以看到雖然有一些誤差,但是已經很接近我們的真實值了。

3.為了驗證算法的有效性,我取

共構建36種psf模糊核,分別模糊同一張圖像,然后用到頻譜法估計其參數,結構如下:

模糊核尺度

估計結果

尺度估計結果

模糊角度

估計結果

角度估計結果

從圖中我們可以看到,模糊尺度估計的偏差比較大,而且在

時,估計結果偏差很大,初步估計是前面提取暗通道過程中,提取結果不夠精確。而模糊方向

的估計就比較精確了,基本上都在準確值

的范圍內。但是在測試的時候葉發現當角度

時, 預測的模糊角度就會有較大的偏差。

4.利用到頻譜法,結合之前提到的非盲圖去模糊算法,我們做一個盲圖去模糊實驗,這里我們取

,利用到頻譜法估計出來的模糊核參數(

), 實驗結果如下。

清晰圖

模糊圖

逆濾波

維納濾波

約束最小二乘方法

RL跌代30次

我們可以看到實驗結果基本上和我們之前分析的相同,其中RL算法繼續迭代的話,效果還能有一定的提升。

總結

本文只簡要提及了一些傳統的去模糊算法,近些年還有許多表現優秀的去模糊算法被提出,例如,迭代優化求解類,超分辨類,神經網絡類等等。大家如果想進一步了解運動去模糊相關算法,強烈推薦這個github鏈接收錄了近十幾年的去模糊論文,包括各種應用場景,只能說真香!

總結

以上是生活随笔為你收集整理的matlab 维纳滤波恢复运动模糊,运动模糊恢复专题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。