f-x反褶积

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

简介

f − x f-x fx 反卷积是一种地震数据去噪方法,其基本假设是具有线性同向轴的地震数据在 f − x f-x fx域中的每个频率切片都可以进行自回归表示。 f − x f-x fx反卷积方法是很多算法的基础,因此理论推导写的比较详细。之所以称为反卷积,可以理解为求卷积系数,也可以理解为求降噪数据。(一般反卷积是指求数据,而不是系数)。

理论

一般理论

含有线性同向轴的二维地震数据在 t − x t-x tx域可以标示成如下形式:
u ( t , x ) = ∑ i = 1 n v ( t i + t − p i x ) u(t,x)=\sum_{i=1}^nv(t_i+t-p_ix) u(t,x)=i=1nv(ti+tpix)
其中 n n n为同向轴个数, t i t_i ti为初至, p i p_i pi为斜率, v v v为地震子波。在两侧分别对时间进行傅里叶变换,根据傅里叶变换的性质:
F ( f ( x − a ) ) = e − i a ω F ( f ( x ) ) F(f(x-a))=e^{-ia\omega}F(f(x)) F(f(xa))=eiaωF(f(x))
得到(注意,上标 i i i表示虚数单位,下标 i i i表示索引):
u ^ ( ω , x ) = ∑ i = 1 n v ^ ( ω ) e i ( t i − p i x ) ω \hat u(\omega,x)=\sum_{i=1}^n\hat v(\omega)e^{i(t_i-p_ix)\omega} u^(ω,x)=i=1nv^(ω)ei(tipix)ω

简化情况

对于简单的情况,同向轴只有一条,并且经过原点,上式可以简化为:
u ^ ( ω , x ) = v ^ ( ω ) e − i p x ω \hat u(\omega,x)=\hat v(\omega)e^{-ipx\omega} u^(ω,x)=v^(ω)eipxω
x x x方向上进行离散化, x = n Δ x x=n\Delta x x=nΔx,得到:
u ^ ( ω , i Δ x ) = v ^ ( ω ) e − i p n Δ x ω \hat u(\omega,i\Delta x)=\hat v(\omega)e^{-ipn\Delta x \omega} u^(ω,iΔx)=v^(ω)eipnΔxω
U i = u ^ ( ω , i Δ x ) U_i=\hat u(\omega,i\Delta x) Ui=u^(ω,iΔx) K = e − i p Δ x ω K=e^{-ip\Delta x\omega} K=eipΔxω则:
U i = U i − 1 K U_i=U_{i-1}K Ui=Ui1K
则频率切片的自回归形式为:
U i − K U i − 1 = 0 U_i-KU_{i-1}=0 UiKUi1=0
将所有关系式写到一起,形成一个线性方程组,然后通过最小二乘方法可以得到对所有 i i i最优的 K K K(注意 p p p最开始是未知的, K K K也是未知的,所以需要通过最小二乘来求)。得到 K K K之后,为了实现去噪,虽然自回归滤波器的长度为2,但我们可以利用更多的相邻到来实现叠加去噪,即:
U i = 1 m ∑ j = i − m j = i − 1 K j U j U_i=\frac 1 m \sum_{j=i-m}^{j=i-1}K^jU_{j} Ui=m1j=imj=i1KjUj

含噪情况

事实上,由于数据中含有噪声, U i = U i − 1 K U_i=U_{i-1}K Ui=Ui1K并不严格成立,此时可以利用更多的相邻道实现更长(长度为 m m m)的自回归滤波器:
U i = ∑ j = i − m j = i − 1 K j U j U_i=\sum_{j=i-m}^{j=i-1}K_jU_{j} Ui=j=imj=i1KjUj
同理,可以根据最小二乘法求取 K j K_j Kj,得到 K j K_j Kj之后再利用相同的公式进行自回归去噪,即 f − x f-x fx反卷积的一般形式。

反推一般情形

此部分推导相对复杂一些,之前一直没整明白,这次写文档算是整明白了。假设数据中含有多个线性同向轴(并且都通过原点 t i = 0 t_i=0 ti=0),则频率域的关系式为:
u ^ ( ω , k Δ x ) = v ^ ( ω ) ∑ j = 1 n e − i p j k Δ x ω \hat u(\omega,k\Delta x)=\hat v(\omega)\sum_{j=1}^ne^{-ip_jk\Delta x \omega} u^(ω,kΔx)=v^(ω)j=1neipjkΔxω
U k = u ^ ( ω , k Δ x ) U_k=\hat u(\omega,k\Delta x) Uk=u^(ω,kΔx) K j = e − i p j Δ x ω K_j=e^{-ip_j\Delta x\omega} Kj=eipjΔxω V = v ^ ( ω ) V=\hat v(\omega) V=v^(ω)则:
U k = V ( ∑ j = 1 n K j k ) U_k=V(\sum_{j=1}^n K_j^k) Uk=V(j=1nKjk)
需要证明在 p j p_j pj任意取值的时候, U k , U k + 1 , . . . , U k + n − 1 U_k,U_{k+1},...,U_{k+n-1} Uk,Uk+1,...,Uk+n1线性相关。首先假设它们线性相关,即下面方程存在解:
∑ j = k k + n − 1 a j − k U j = 0 \sum_{j=k}^{k+n-1}a_{j-k}U_j=0 j=kk+n1ajkUj=0
U j U_j Uj带入可以得到:
∑ j = k k + n − 1 a j − k ∑ i = 1 n K i j = 0 \sum_{j=k}^{k+n-1}a_{j-k} \sum_{i=1}^n K_i^j=0 j=kk+n1ajki=1nKij=0
由于对于任意 p j p_j pj成立,即对任意 K j K_j Kj成立,因此我们按 K K K对上式进行整理。由于后面的求和下标与 j j j无关,所以可以把 a j a_j aj放进去,得到:
∑ j = k k + n − 1 ∑ i = 1 n a j − k K i j = 0 \sum_{j=k}^{k+n-1}\sum_{i=1}^n a_{j-k} K_i^j=0 j=kk+n1i=1najkKij=0
两组求和下标之间也没有关系,因此求和可以交换顺序:
∑ i = 1 n ∑ j = k k + n − 1   a j − k K i j = 0 \sum_{i=1}^n \sum_{j=k}^{k+n-1}\ a_{j-k} K_i^j=0 i=1nj=kk+n1 ajkKij=0
由于上式对于任意 K i K_i Ki成立,所以令(对于所有 i i i):
∑ j = k k + n − 1   a j − k K i j = 0 \sum_{j=k}^{k+n-1}\ a_{j-k} K_i^j=0 j=kk+n1 ajkKij=0
两边再除以 K i k K_i^k Kik得到:
∑ j = 0 n − 1   a j K i j = 0 \sum_{j=0}^{n-1}\ a_j K_i^j=0 j=0n1 ajKij=0
可以得到一个具有 n n n个未知数的方程,对于所有的 i i i,共有 n n n个方程,因此可以解出来 a j a_j aj
此时可知 U k U_k Uk是线性自回归的,并且回归系数与 p i p_i pi有关。解出来回归系数之后,可以通过某一道与相邻道之间的线性回归关系来进行去噪。

n = 1 n=1 n=1的情况类似,在含有噪声的情况下,我们通常会选择更长的自回归滤波器,以达到更好的去噪效果。

n = 2 n=2 n=2时的特例

n = 2 n=2 n=2时的方程组为:
a 0 + a 1 K 1 + K 1 2 = 0 a 0 + a 1 K 2 + K 2 2 = 0 \begin{aligned} a_0+a_1K_1+K_1^2=&0\\ a_0+a_1K_2+K_2^2=&0 \end{aligned} a0+a1K1+K12=a0+a1K2+K22=00
可以得到:
a 0 = K 1 K 2 a 1 = − K 1 − K 2 \begin{aligned} a_0&=K_1K_2 \\ a_1&=-K_1-K_2 \end{aligned} a0a1=K1K2=K1K2

初至、通解

对于加入初至的情况,直接令 K j = e i ( t j − p j Δ x ) ω K_j=e^{i(t_j-p_j\Delta x)\omega} Kj=ei(tjpjΔx)ω即可。

一般情况也存在通解,只不过表达式比较复杂,并且并没有在算法中使用,所以就不推导了。

算法

基本算法是:

  1. 将地震数据变换到 f − x f-x fx域;
  2. 提取某一频率切片数据进行自回归表示(需要设定长度),求取自回归系数;
  3. 利用求得的自回归系数对频率切片进行自回归;
  4. 对每一频率切片重复2-3;
  5. 将数据变回到 t − x t-x tx域。

如果数据非线性很强,需要分窗口处理。

代码

代码源自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;                           %重新做滤波得到去噪后数据

总结

在分析多线性同向轴的自回归模型是所用理论虽不困难,但也需要一些技巧,通过分别将含有 K j i K_j^i Kji(对任意 i i i)的项组合然后分别另其为零即可推导出自回归性质。这篇短文给出了所有的推导细节,作为之后的理论基础,在Spitz f − x f-x fx插值(据作者所知,去噪称为 f − x f-x fx反褶(卷)积,插值称为 f − x f-x fx预测滤波,因为包含一步预测)、MSSA、降秩方法中都用到类似的推导。

你可能感兴趣的:(Geophysics,地球物理,f-x,fan'zhe'j,地震去噪,反褶积)