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

          歡迎訪問 生活随笔!

          生活随笔

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

          python

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

          發布時間:2023/12/14 python 39 豆豆
          生活随笔 收集整理的這篇文章主要介紹了 维纳滤波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实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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