python一維濾波
㈠ python 中一維數據中值濾波函數,在matlab中有 medfilt1函數,Python中有嗎,只找到了圖像2維的,
有的,在numpy包中
importnumpyasnp
dat=[1,3,5,6,7,2,4]
med=np.median(dat)#med=4.0
㈡ 什麼是維納濾波,對於python里的函數scipy.signal.wiener(im,mysize
文檔很細致啊。
im : ndarray
An N-dimensional array.
mysize : int or arraylike, optional
A scalar or an N-length list giving the size of the Wiener filter window in each dimension. Elements of mysize should be odd. If mysize is a scalar, then this scalar is used as the size in each dimension.
noise : float, optional
The noise-power to use. If None, then noise is estimated as the average of the local variance of the input.
㈢ 一維中值濾波詳細計算方法
摘要 1、取連續采樣值N(N大於等於3)點,N為奇數,去掉最小值和最大值,去中間的值作為中間點的采樣值。
㈣ python如何實現類似matlab的小波濾波
T=wpdec(y,5,'db40');
%信號y進行波包解層數5T波樹plot看
a10=wprcoef(T,[1,0]);
%a10節點[1,0]進行重構信號貌似沒層重構說吧能某層某節點進行重構節點編號波樹%以下為濾波程序(主要調節參數c的大小)
c=10;
wn=0.1;
fs=50000; %采樣頻率;
b=fir1(c,wn/(fs/2),hamming(c+1));
y1=filtfilt(b,1,y);%對y濾波。
㈤ 如何使用fir濾波 python
如何用python實現圖像的一維高斯濾波 建議你不要使用高斯濾波。 推薦你使用一維中值濾波 matlab的函數為 y = medfilt1(x,n); x為數組,是你要處理原始波形,n是中值濾波器的參數(大於零的整數)。y是濾波以後的結果(是數組) 後面再 plot(y); ...
㈥ 一維頻率濾波
所謂一維濾波,是指信號或其譜以及濾波因子都是單變數函數的濾波。該變數可以是頻率或時間,也可以是波數或空間,原理方法都相同。實際工作中頻率濾波用得最為廣泛,故以一維頻率濾波為例加以介紹。
(一)理想一維頻率濾波
1.理想濾波器
最理想的濾波器是有效波在其頻率范圍內完全無畸變地通過,干擾完全被壓制掉。因此,要求其頻率響應為
地震勘探
這意味著其相位響應特性為零h(f)=0,故理想濾波器一定是零相濾波器,一定是非物理可實現的。當然,它也隱含著在有效波頻帶內不要有干擾,否則無法濾掉。
理想濾波器的頻率響應函數圖形是一個矩形,像門一樣,所以也稱之為門式濾波。
2.理想低通濾波器
在有效波和干擾的頻譜分布如圖4-13a所示的情況下,可以設計理想低通濾波器。其頻率響應如圖4-14a所示,其數學模型為
地震勘探
圖4-13 有效波和干擾波的頻譜例舉
通過傅里葉反變換可求出相應的脈沖響應
地震勘探
該脈沖響應曲線繪於圖4-14b中。
圖4-14 理想低通濾波器的頻率和脈沖響應
3.理想帶通濾波器
一般情況下,既有高頻干擾,又有低頻干擾(圖4-13b),需要設計帶通濾波器。其數學表達式為
地震勘探
求其脈沖響應hb(t)的方法有二。
一是利用低通濾波器組合。因為帶通濾波器的頻率響應等於兩個截頻不同的低通濾波器的頻率響應之差(圖4-15)。根據傅里葉變換的線性性質,帶通濾波器的脈沖響應也等於這兩個低通濾波器的脈沖響應之差。故帶通濾波器的脈沖響應可直接寫出為
地震勘探
圖4-15 理想帶通濾波器的頻率響應
式中:f0為通頻帶的中心頻率,Δf為半帶寬,f0=(f1+f2)/2,Δf=(f2-f1)/2。
第二種方法是直接計算Hb(f)的傅里葉反變換,可以得到相同的結果。
4.理想高通濾波器
其頻率響應為
地震勘探
而脈沖響應的計算也可採用相減法或直接計算傅里葉反變換的方法,得
地震勘探
(二)數字濾波的特殊性
數字濾波必須在數字計算機上進行運算,它面臨著兩個特殊問題。一個問題是數字濾波只能對離散時間序列而不是連續時間函數進行運算,即所謂離散性。另一個問題是脈沖響應只能取有限長度而不是理論要求的無限長,也就是有限性。由於存在這些特殊性,運算結果不能達到門式濾波的「理想」情況。而會發生畸變。
1.偽門現象
如果將脈沖響應函數h(t)按采樣間隔Δ進行離散采樣,則采樣後得到的脈沖響應時間序列h(nΔ)的頻率特性除了有與h(t)的頻率特性相對應的「正門」之外,還存在著以為周期的無數個「偽門」。下面用簡單的頻率褶積定理來證明這一點。
間隔為Δ的無數個δ脈沖所組成的無窮序列Δ(t)(圖4-16b)稱為采樣函數,因為它與脈沖響應函數h(t)(圖4-16a)相乘就得到采樣後的脈沖響應時間序列h(nΔ)(圖4-16c)。Δ(t)的傅里葉變換是頻率采樣函數Δ(f)(圖4-16e)。它由間隔為 幅度為 的無數個δ脈沖所組成。h(t)的傅里葉變換是H(f)(圖4-16d)。根據頻率褶積定理,h(nΔ)的傅里葉變換應是H(f)與Δ(f)的褶積,是一個周期為 的函數(圖4-16f)。這樣,在正門之外出現了無數個偽門。
圖4-16 用頻率褶積定理證明偽門的存在圖中箭頭表示傅里葉變換對
由於偽門的存在,某些干擾波的頻譜可能出現在偽門范圍內被保留下來,達不到濾波效果。此外,當采樣頻率 小於截止頻率fc的二倍時,這些周期性的濾波門會發生重疊,若頻率響應本身是曲線形;則這種重疊還會導致響應的畸變(圖4-17)。
為了解決偽門問題,可採取適當地選擇采樣間隔Δ的辦法,使第一個偽門出現在干擾波頻率范圍之外,這樣做也可以防止響應畸變這種假頻效應出現。
圖4-17 采樣間隔不足引起的畸變
2.吉普斯現象
所有理想濾波器的頻率響應函數在截止頻率處(fc或f1、f2)都是間斷的,間斷函數的傅里葉反變換(脈沖響應函數)必定是無限長的。實際計算中脈沖響應函數只能取有限長,即要對它截斷。截斷後的脈沖響應所對應的頻率響應函數不再是一個理想的「門」,而是接近於這個門的一條幅值有波動的曲線。這種現象稱為吉普斯現象。
仍然可以用頻率褶積定理來說明這一問題。無限長的脈沖響應h(t),與矩形函數p(t)相乘得到截斷後的脈沖響應h'(t)(圖4-18a、b、c)。函數p(t)也稱為截斷時窗,其數學定義是
地震勘探
它的傅里葉變換為
地震勘探
圖4-18 用頻率褶積定理證明吉普斯現象的存在雙向箭頭表傅里葉變換對
其形狀與理想低通濾波器的脈沖響應函數類似(圖4-18e)。根據頻率褶積定理,h'(t)所對應的頻率響應函數H'(f)應為H(f)與P(f)相褶積的結果(圖4-18d、e、f)。它是一條連續、光滑、有波動的曲線(圖4-18f)。數學上可以證明:在不連續點處的波動幅度最大,約等於原來矩形幅度的9%,隨著遠離不連續點,波動的幅度越來越小。由於頻率特性曲線在通頻帶內是波動的曲線,濾波後有效波必定會發生畸變。另外在通頻帶外亦是波動的曲線,必定不能有效地壓制干擾。
為了避免吉普斯現象,可採用若干方法。其中之一是鑲邊法,它從頻率域角度考慮問題,在矩形頻率特性曲線的不連續點處鑲上連續的邊,使頻率特性曲線變為連續的曲線。
例如,鑲邊後的低通濾波頻率響應為(圖4-19)
圖4-19 鑲邊後低通濾波器的頻率響應
地震勘探
其中鑲邊函數g(f)要求滿足條件
地震勘探
滿足此條件的函數很多,餘弦鑲邊函數
地震勘探
即為其中之一。確定了鑲邊函數後,利用傅里葉反變換求出相應的h*(t),再進行褶積濾波就可減小吉普斯現象的影響。使用餘弦鑲邊函數(4-39)的低通濾波脈沖響應為
地震勘探
也可以採用乘因子法。這是從時間域角度考慮問題的方法。即在截斷h(t)時不使用矩形時窗函數,而代之以一個逐漸衰減的時窗函數。一個好的時窗函數應具有如下性質:①時間區間應盡可能地長,以使對應的頻譜能量集中在其主瓣;②時窗形狀應盡可能圓滑,沒有陡的傾角。滿足這些條件的時窗函數很多。例如地震勘探中用得較多的三角形窗,其數學表達式為
地震勘探
它的傅里葉變換是
地震勘探
W(f)是sinc函數的平方,不會有負的旁瓣,是一種較好的時窗。
鑲邊法和乘因子法雖然是從不同的角度考慮問題所得到的方法,但二者的本質是一樣的———加速時間域中脈沖響應函數的衰減,減少截斷帶來的誤差,其結果也是相似的———降低了頻率域中濾波器的選擇性,使頻率響應曲線的陡度變小。
㈦ 對於一個一維數組來說,對它進行濾波的物理含義是什麼
先說第二個問題,濾波器的設置有好幾種方法,你說的這個低通截止頻率,如果只是一個參數的話,那就是衰減3dB的點,也就是我們說的3dB帶寬。 另外,由於我們濾波器都是有限長度的,所以不可能是理想濾波器,這就難免通阻帶帶內衰減不相同,只是大體上將0.125*fs/2以上的信號給濾掉了。
再說第一個問題,采樣頻率是指你得到這些點的采樣頻率,如果你每隔1ms采一個點,那麼你的采樣速率就是1kHz。無論采樣速率是多少,濾波過程都會將所有點作為樣本的。區別在於,如果你不設置采樣速率,采樣速率默認是1。采樣速率跟截止頻率的比例一定,那得到的濾波器就是一樣的。
舉個例子:
hs = fdesign.lowpass(0.4,0.5,1,80,2)
h=design(hs)
fvtool(h)
你可以運行一下,看一下參數對應的含義。
㈧ 如何用python實現圖像的一維高斯濾波
如何用python實現圖像的一維高斯濾波
建議你不要使用高斯濾波。
推薦你使用一維中值濾波
matlab的函數為
y = medfilt1(x,n);
x為數組,是你要處理原始波形,n是中值濾波器的參數(大於零的整數)。y是濾波以後的結果(是數組)
後面再
plot(y);
就能看到濾波以後的結果
經過medfilt1過濾以後,y里儲存的是低頻的波形,如果你需要高頻波形,x-y就是高頻波形
順便再說一點,n是偶數的話,濾波效果比較好。
N越小,y里包含的高頻成分就越多,y越大,y里包含的高頻成分就越少。
記住,無論如何y里保存的都是整體的低頻波。(如果你看不懂的話,濾一下,看y波形,你馬上就懂了)
㈨ python中怎麼生成基於窗函數的fir濾波器
SciPy提供了firwin用窗函數設計低通濾波器,firwin的調用形式如下:
firwin(N, cutoff, width=None, window='hamming')
其中N為濾波器的長度;cutoff為以正規化的頻率;window為所使用的窗函數。
㈩ 如何用python實現圖像的一維高斯濾波器
如何用python實現圖像的一維高斯濾波器
現在把卷積模板中的值換一下,不是全1了,換成一組符合高斯分布的數值放在模板裡面,比如這時中間的數值最大,往兩邊走越來越小,構造一個小的高斯包。實現的函數為cv2.GaussianBlur()。對於高斯模板,我們需要制定的是高斯核的高和寬(奇數),沿x與y方向的標准差(如果只給x,y=x,如果都給0,那麼函數會自己計算)。高斯核可以有效的出去圖像的高斯雜訊。當然也可以自己構造高斯核,相關函數:cv2.GaussianKernel().
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread(『flower.jpg『,0) #直接讀為灰度圖像
for i in range(2000): #添加點雜訊
temp_x = np.random.randint(0,img.shape[0])
temp_y = np.random.randint(0,img.shape[1])
img[temp_x][temp_y] = 255
blur = cv2.GaussianBlur(img,(5,5),0)
plt.subplot(1,2,1),plt.imshow(img,『gray『)#默認彩色,另一種彩色bgr
plt.subplot(1,2,2),plt.imshow(blur,『gray『)