f-x反褶積

f-x反褶積(鏈接
Canales, 1984, Random noise reduction, 54.th. Ann. Internat. Mtg., Soc. Expl. Geophys., Expanded Abstracts, pp. 525-527

簡介

fxf-x 反捲積是一種地震數據去噪方法,其基本假設是具有線性同向軸的地震數據在fxf-x域中的每個頻率切片都可以進行自迴歸表示。fxf-x反捲積方法是很多算法的基礎,因此理論推導寫的比較詳細。之所以稱爲反捲積,可以理解爲求卷積係數,也可以理解爲求降噪數據。(一般反捲積是指求數據,而不是係數)。

理論

一般理論

含有線性同向軸的二維地震數據在txt-x域可以標示成如下形式:
u(t,x)=i=1nv(ti+tpix)u(t,x)=\sum_{i=1}^nv(t_i+t-p_ix)
其中nn爲同向軸個數,tit_i爲初至,pip_i爲斜率,vv爲地震子波。在兩側分別對時間進行傅里葉變換,根據傅里葉變換的性質:
F(f(xa))=eiaωF(f(x))F(f(x-a))=e^{-ia\omega}F(f(x))
得到(注意,上標ii表示虛數單位,下標ii表示索引):
u^(ω,x)=i=1nv^(ω)ei(tipix)ω\hat u(\omega,x)=\sum_{i=1}^n\hat v(\omega)e^{i(t_i-p_ix)\omega}

簡化情況

對於簡單的情況,同向軸只有一條,並且經過原點,上式可以簡化爲:
u^(ω,x)=v^(ω)eipxω\hat u(\omega,x)=\hat v(\omega)e^{-ipx\omega}
xx方向上進行離散化,x=nΔxx=n\Delta x,得到:
u^(ω,iΔx)=v^(ω)eipnΔxω\hat u(\omega,i\Delta x)=\hat v(\omega)e^{-ipn\Delta x \omega}
Ui=u^(ω,iΔx)U_i=\hat u(\omega,i\Delta x)K=eipΔxωK=e^{-ip\Delta x\omega}則:
Ui=Ui1KU_i=U_{i-1}K
則頻率切片的自迴歸形式爲:
UiKUi1=0U_i-KU_{i-1}=0
將所有關係式寫到一起,形成一個線性方程組,然後通過最小二乘方法可以得到對所有ii最優的KK(注意pp最開始是未知的,KK也是未知的,所以需要通過最小二乘來求)。得到KK之後,爲了實現去噪,雖然自迴歸濾波器的長度爲2,但我們可以利用更多的相鄰到來實現疊加去噪,即:
Ui=1mj=imj=i1KjUjU_i=\frac 1 m \sum_{j=i-m}^{j=i-1}K^jU_{j}

含噪情況

事實上,由於數據中含有噪聲,Ui=Ui1KU_i=U_{i-1}K並不嚴格成立,此時可以利用更多的相鄰道實現更長(長度爲mm)的自迴歸濾波器:
Ui=j=imj=i1KjUjU_i=\sum_{j=i-m}^{j=i-1}K_jU_{j}
同理,可以根據最小二乘法求取KjK_j,得到KjK_j之後再利用相同的公式進行自迴歸去噪,即fxf-x反捲積的一般形式。

反推一般情形

此部分推導相對複雜一些,之前一直沒整明白,這次寫文檔算是整明白了。假設數據中含有多個線性同向軸(並且都通過原點ti=0t_i=0),則頻率域的關係式爲:
u^(ω,kΔx)=v^(ω)j=1neipjkΔxω\hat u(\omega,k\Delta x)=\hat v(\omega)\sum_{j=1}^ne^{-ip_jk\Delta x \omega}
Uk=u^(ω,kΔx)U_k=\hat u(\omega,k\Delta x)Kj=eipjΔxωK_j=e^{-ip_j\Delta x\omega}V=v^(ω)V=\hat v(\omega)則:
Uk=V(j=1nKjk)U_k=V(\sum_{j=1}^n K_j^k)
需要證明在pjp_j任意取值的時候,Uk,Uk+1,...,Uk+n1U_k,U_{k+1},...,U_{k+n-1}線性相關。首先假設它們線性相關,即下面方程存在解:
j=kk+n1ajkUj=0\sum_{j=k}^{k+n-1}a_{j-k}U_j=0
UjU_j帶入可以得到:
j=kk+n1ajki=1nKij=0\sum_{j=k}^{k+n-1}a_{j-k} \sum_{i=1}^n K_i^j=0
由於對於任意pjp_j成立,即對任意KjK_j成立,因此我們按KK對上式進行整理。由於後面的求和下標與jj無關,所以可以把aja_j放進去,得到:
j=kk+n1i=1najkKij=0\sum_{j=k}^{k+n-1}\sum_{i=1}^n a_{j-k} K_i^j=0
兩組求和下標之間也沒有關係,因此求和可以交換順序:
i=1nj=kk+n1 ajkKij=0\sum_{i=1}^n \sum_{j=k}^{k+n-1}\ a_{j-k} K_i^j=0
由於上式對於任意KiK_i成立,所以令(對於所有ii):
j=kk+n1 ajkKij=0\sum_{j=k}^{k+n-1}\ a_{j-k} K_i^j=0
兩邊再除以KikK_i^k得到:
j=0n1 ajKij=0\sum_{j=0}^{n-1}\ a_j K_i^j=0
可以得到一個具有nn個未知數的方程,對於所有的ii,共有nn個方程,因此可以解出來aja_j
此時可知UkU_k是線性自迴歸的,並且迴歸係數與pip_i有關。解出來迴歸係數之後,可以通過某一道與相鄰道之間的線性迴歸關係來進行去噪。

n=1n=1的情況類似,在含有噪聲的情況下,我們通常會選擇更長的自迴歸濾波器,以達到更好的去噪效果。

n=2n=2時的特例

n=2n=2時的方程組爲:
a0+a1K1+K12=0a0+a1K2+K22=0\begin{aligned} a_0+a_1K_1+K_1^2=&0\\ a_0+a_1K_2+K_2^2=&0 \end{aligned}
可以得到:
a0=K1K2a1=K1K2\begin{aligned} a_0&=K_1K_2 \\ a_1&=-K_1-K_2 \end{aligned}

初至、通解

對於加入初至的情況,直接令Kj=ei(tjpjΔx)ωK_j=e^{i(t_j-p_j\Delta x)\omega}即可。

一般情況也存在通解,只不過表達式比較複雜,並且並沒有在算法中使用,所以就不推導了。

算法

基本算法是:

  1. 將地震數據變換到fxf-x域;
  2. 提取某一頻率切片數據進行自迴歸表示(需要設定長度),求取自迴歸係數;
  3. 利用求得的自迴歸係數對頻率切片進行自迴歸;
  4. 對每一頻率切片重複2-3;
  5. 將數據變回到txt-x域。

如果數據非線性很強,需要分窗口處理。

代碼

代碼源自SeismicLab工具包,fx_decon程序,只摘錄其核心部分。

  aux_in  = DATA_FX(k,:)'; %提取一個頻率切片
  [aux_out_f,aux_out_b] = ar_modeling(aux_in,lf,mu); %自迴歸函數,lf爲迴歸濾波器長度,mu應該是最二乘添加的約束項權重。

ar_modeling的核心代碼爲:

% backward ar-modeling 此部分爲向後ar迴歸,同時可以再次進行向前ar迴歸,將兩次結果作平均作爲最後結果。

   y  = x(1:nx-lf,1);    %輸出
   C  = x(2:nx-lf+1,1);  
   R  = x(nx-lf+1:nx,1);
   M = hankel(C,R);      %輸入,M*ab=y結構如下
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   x_2          x_3 ...         x_lf+1      a_1     x_1
   x_3          x_4 ...         x_lf+2  *   a_2  =  x_2
   ...  
   x_nx-lf+1    x_nx-lf+2 ...   x_nx        a_lf    x_nx-lf
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   B = M'*M;  beta = B(1,1)*mu/100;     %兩邊同時乘以M',M'*M*ab=M'*y
   ab = (B + beta*eye(lf))\M'*y;        %ab=(M'M+mu*I)^-1*M'y 加入權重
   yb = M*ab;                           %重新做濾波得到去噪後數據

總結

在分析多線性同向軸的自迴歸模型是所用理論雖不困難,但也需要一些技巧,通過分別將含有KjiK_j^i(對任意ii)的項組合然後分別另其爲零即可推導出自迴歸性質。這篇短文給出了所有的推導細節,作爲之後的理論基礎,在Spitz fxf-x插值(據作者所知,去噪稱爲fxf-x反褶(卷)積,插值稱爲fxf-x預測濾波,因爲包含一步預測)、MSSA、降秩方法中都用到類似的推導。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章