运用时间增益方法对 gprmax 模拟的探地雷达数据进行处理

GPR 对地下进行探测时,随着电磁信号向下传播,雷达信号的幅值往往衰减很快。与浅层目标的回波相比,深层回波信号的幅度很小。这些信号需要经过校正处理后才能同时显示出来,即对快速衰减的深层回波信号进行补偿处理。对时变幅度进行补偿在GPR应用中被称为时间增益或距离增益。


文章目录

  • 运用时间增益方法对 gprmax 模拟的探地雷达数据进行处理
  • 一、时间增益效果
  • 1、原始的 GPR 图像
  • 2、时间增益后的 GPR 图像
  • 3、时间增益函数
  • 二、Matlab 代码分享


一、时间增益效果

GPR 应用非常广泛,其信号衰减也变化很大。在某些低损耗探测环境中,探测深度可达数十米。而在某些高损耗环境中,探测深度甚至不到一米。GPR 数据的读取和显示需要和当时的探测环境相一致。

1、原始的 GPR 图像

用gprMax模拟的地下空洞异常的图像。

探地雷达python实现奇异值分解算法 探地雷达数据处理步骤_matlab


由于电磁波衰减变化很大,从图中只能看到很模糊的双曲线。

2、时间增益后的 GPR 图像

对原始数据进行时间增益,结果如下

探地雷达python实现奇异值分解算法 探地雷达数据处理步骤_探地雷达python实现奇异值分解算法_02


此图像比原始图像更加直观,反射双曲线清晰可见。

3、时间增益函数

运用时间增益对 GPR 数据进行校准的方法有多种。关键是需要基于先验的物理模型来确定时间增益函数,而不是任意选择某个函数进行校准,这样才可能使得人为产生的干扰信号最小。

时间增益处理是非线性的。从上面两幅图看出经过时间增益处理后,信号形式明显发生了改变。

一般地,电磁波能量变化服从指数变化的规律,因此,时间增益函数选择指数增益形式:
探地雷达python实现奇异值分解算法 探地雷达数据处理步骤_探地雷达_03
式中,x为采样率或时间,这里用的是采样率。

探地雷达python实现奇异值分解算法 探地雷达数据处理步骤_探地雷达_04 时,绘制的时间增益函数图像为:

探地雷达python实现奇异值分解算法 探地雷达数据处理步骤_matlab_05


一般要对时间增益函数值的最大值进行限定,不能无限增大。

二、Matlab 代码分享

close all
clear
clc

% 
% 
% 
% 

% 读取探地雷达数据
data = dlmread("shangxiang.txt");

% 构造时间增益函数
% 这里应用的是指数补偿增益
x = 1:length(data);
% y = 1.1.^(x*1e-2);
% y = 1.2.^(x*1e-2);
y = 1.3.^(x*1e-2)-0.5;
% y = 1.4.^(x*1e-2);
% y = 1.5.^(x*1e-2);

% 设置最大增益倍数
ymax = 25;
% 限制增益倍数
y(y>ymax) = ymax;


% 绘制时间增益函数图像
figure(1),
plot(y,'k','lineWidth',2);
axis([0 inf 0 30]);
data_new = data.*y';

% 绘制增益后的探地雷达图像
figure(2)
imagesc(data_new);
colorbar;
xlabel('trace number');
ylabel('samples');
title('revised image');

% 绘制原始探地雷达图像
figure(3)
imagesc(data);
colorbar
xlabel('trace number');
ylabel('samples');
title('original image');