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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

维纳滤波python 函数_加性高斯白噪声及维纳滤波的基本原理与Python实现

發布時間:2023/12/14 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 维纳滤波python 函数_加性高斯白噪声及维纳滤波的基本原理与Python实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 加性高斯白噪聲

1.1 特點

加性高斯白噪聲屬于白噪聲的一種,有如下兩個特點:

功率譜密度為常數,即白

高斯則為其幅度的概率密度函數服從高斯分布

1.2 高斯分布的一維概率密度函數

為標準差

為均值

1.3 Python內置庫說明

random.gauss(mu, sigma)其值即服從高斯分布,若想要是實現加性高斯白噪聲,循環作加即可

1.4 Code

import numpy as np

import random

def gaussian_white_noise(intput_signal, mu, sigma):

'''

加性高斯白噪聲(適用于灰度圖)

:param intput_signal: 輸入圖像

:param mu: 均值

:param sigma: 標準差

:return:

'''

intput_signal_cp = np.copy(intput_signal) # 輸入圖像的副本

m, n = intput_signal_cp.shape # 輸入圖像尺寸(行、列)

# 添加高斯白噪聲

for i in range(m):

for j in range(n):

intput_signal_cp[i, j] = intput_signal_cp[i, j] + random.gauss(mu, sigma)

return intput_signal_cp

1.5 測試對比

均值為0,標準差為10時的加行高斯白噪聲前后對比圖

2. 逆濾波

實際上逆濾波是維納濾波的一種理想情況,當不存在加性噪聲時,維納濾波與逆濾波等同。

2.1 基本原理

在時域內有

為輸入信號

為系統函數

為輸出信號

根據時域卷積定理,我們知道時域卷積等于頻域乘積

分別為輸出信號,輸入信號,系統函數的傅里葉變換

則有

這意味著,當我們已知系統函數時,我們可以很簡單的完成濾波。

2.2 Code

import numpy as np

def inverse_filtering(input_singal, h):

'''

逆濾波

:param input_singal: 輸入信號

:param h: 退化函數(時域)

:return: 濾波后的信號(幅值)

'''

output_signal = [] #輸出信號

output_signal_fft = [] #輸出信號的傅里葉變換

h_fft = np.fft.fft2(h) # 退化函數的傅里葉變換

input_singal_fft = np.fft.fft2(input_singal) # 輸入信號的傅里葉變換

output_signal_fft = input_singal_fft / h_fft

output_signal = np.abs(np.fft.ifft2(output_signal_fft))

return output_signal

3 維納濾波

3.1 直觀認識

理解了逆濾波的基本過程之后,實際上維納濾波就不是太大問題了。實際上,逆濾波對于絕大多數情況濾波效果都不好,因為逆濾波是通過傅里葉變換將信號由時域轉換到頻域,再根據時域卷積定理,在頻域作除法。對于乘性干擾這當然是沒問題的,甚至是完美的。而如果存在加性噪聲,例如:加性高斯白噪聲。逆濾波效果就不好了,某些情況下幾乎無法完成濾波情況。

3.2 數學解釋

輸入信號經過系統函數后

時域上

頻域上

若存在加性噪聲則為

時域上

其中

頻域上

其中

于是,從上面對輸入信號的估計表達式可以看出,多出了一項加性噪聲的傅里葉變換與系統函數的比值。尤其當

相對于

很小時,濾波后的信號差距十分嚴重。

3.3 維納濾波表達式

而我們又知道:白噪聲的白為噪聲的功率譜為常數,即

為常數,于是,從直觀上看,當

相對于

較大時,則

較小,上式第一項則較小,而第二項較大從而保持相對平穩。

3.4 Code

import numpy as np

def wiener_filtering(input_signal, h, K):

'''

維納濾波

:param input_signal: 輸入信號

:param h: 退化函數(時域)

:param K: 參數K

:return: 維納濾波后的信號(幅值)

'''

output_signal = [] # 輸出信號

output_signal_fft = [] # 輸出信號的傅里葉變換

input_signal_cp = np.copy(input_signal) # 輸入信號的副本

input_signal_cp_fft = np.fft.fft2(input_signal_cp) # 輸入信號的傅里葉變換

h_fft = np.fft.fft2(h) # 退化函數的傅里葉變換

h_abs_square = np.abs(h_fft)**2 # 退化函數模值的平方

# 維納濾波

output_signal_fft = np.conj(h_fft) / (h_abs_square + K)

output_signal = np.abs(np.fft.ifft2(output_signal_fft * input_signal_cp_fft)) # 輸出信號傅里葉反變換

return output_signal

4 維納濾波與逆濾波對比

camera

coins

5 GitHub

總結

以上是生活随笔為你收集整理的维纳滤波python 函数_加性高斯白噪声及维纳滤波的基本原理与Python实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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