基于字典学习的地震数据降噪(MATLAB R2021B)

稀疏表示基于研究者们提出了许多变换基函数的方法逐渐成型,比如小波域,曲波域,dreamlet 域等,其原理是利用地震信号在变换域内的稀疏性和可分离性以去除噪声。继 Donoho发表非线性去噪方法-小波阈值萎缩方法,在后续的研究中,该方法因其具备的低熵性、多尺度性、多分辨率、去相关性、选基灵活性而有更好的局部表示特征能力,并且还具有计算量小,容易实现的特点,在去噪领域中得到了广泛应用。

第一代的曲波变换具备多尺度,多方向特性,是非自适应的,但是因为其寻找实现比较复杂的限制,二代曲波变换被提出。二代和一代构造思想不同,与脊波的理论与实现过程也不同。由于曲波是由各向异性的曲线基元构成,因而在对地震波前特征表示方面较之小波和脊波具备更好的稀疏性。

后续由于字典学习的发展,研究者发现曲波变换作为字典精度很高,不需要学习就能取得很好的效果,解决了地震大数据的冗余性问题,并且方法更简单,运算更快,基于此后来的应用者们发展了一系列的插值,去噪,分离,重构方法。曲波变换中的阈值确定方法也从固定阈值到软阈值,到软硬阈值折中等灵活性选取阈值提高精度,应用的前景十分广阔。

而在近十年来的地震数据处理领域,伴随着人工智能的浪潮,人工智能加专业的交叉发展逐渐风靡,在石油勘探领域亦引用了许多方法。机器学习、模式识别、数据挖掘等专业的交叉应用,互相渗透,后续发展出诸如深度学习、人工神经网络、字典学习、K-最近邻等方法。在物探中也引入了许多方法,来进行地震数据的资料的处理和解释。其中无监督学习基于数据的稀疏性表达,因其自适应性和计算速度快等优势被广泛应用。

数据驱动的字典学习通常用两种方法寻找字典:一种是用干净数据训练字典,但是实际上很难找到干净数据,所以通常可以使用模型来进行预训练;而另一种是用实际数据或者含噪数据来训练字典,该方法学习得到的字典会有更强的适用性和鲁棒性,以及更好的表示效果。鉴于此,采用字典学习对地震数据进行降噪,运行环境为MATLAB R2021B。

function [x, cost] = BPD(y, A, AH, lambda, mu, Nit)

% x = BPD(y, A, AH, lambda, mu, Nit)
%
% BASIS PURSUIT DENOISING
% minimize 0.5 * ||y - A x||_2^2 + lambda * || x ||_1
% where
% A * AH = I
%
% INPUT
%   A, AH - function handles
%   mu - Augmented Lagrangian parameter
%   Nit - Number of iterations
%
% OUTPUT
%   x : minimizing vector
%
% Use [x, cost] = BPD(...) to obtain cost function per iteration


if nargout > 1
    ComputeCost = true;
    cost = zeros(1, Nit);
else
    ComputeCost = false;
end    

x = AH(y);
d = zeros(size(x));

for i = 1:Nit
    u = soft(x + d, lambda/mu) - d;
    d = 1/(mu + 1) * AH(y - A(u));
    x = d + u;
    
    if ComputeCost
        residual = y - A(x);
        cost(i) = 0.5 * sum(abs(residual(:)).^2) + sum(abs(lambda * x(:))); 
    end
end

图片

图片

图片

图片

擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。
完整数据和代码通过知乎学术咨询获得:https://www.zhihu.com/consult/people/792359672131756032?isMe=1

上一篇:使用xpath获取网页内容


下一篇:Mattermost:一个强大的开源协作平台