GPR数据增强—添加噪声


前言

利用深度学习网络进行探地雷达(GPR)图像检测、识别等任务需要大量GPR训练数据集,然而实测GPR数据集的获取比较耗时,且成本大,利用一些数据增强方法对雷达数据集进行扩充很有必要。本文主要介绍添加噪声的方法来扩充雷达数据集。


一、去直达波

探地雷达数据一般存在较强的直达波,在添加噪声之前需要先去掉图像中的直达波,常用的去直达波方法为均值法,实现比较简单,就是用图像中的每个像素值减去该像素值所在行的均值。
代码如下:

# 去直达波
def mean_gpr(x):  #传入的x为具有直达波的图像矩阵
    for i in range(x.shape[0]):
        mean_i = np.mean(x[i])
        for j in range(x.shape[1]):
            x[i][j] = x[i][j] - mean_i
    return x

二、添加噪声

对去直达波后的图像进行加噪处理

代码如下:

def Add_noise(x,snr):#传入的是图像矩阵x和信噪比snr(dB)
    '''snr(db) = 10log10(ps/pn)'''
    snr = 10 ** (snr / 10.0)#第一个snr指的倍率
    xpower = np.sum(x ** 2) / np.size(x)
    npower = xpower / snr
    noise = np.random.randn(x.shape[0], x.shape[1]) * np.sqrt(npower)
    x_noise = x + noise
    return x_noise

三、处理结果

if __name__ == '__main__':
    rect_all = []
    file = 'GPR_B-scan.txt'
    x_raw = np.loadtxt(file)#具有直达波的图像矩阵
    plt.imshow(x_raw, aspect='auto',cmap='gray')
    plt.show()
    x_s = mean_gpr(x_raw)  # 去直达波
    plt.imshow(x_s, aspect='auto', cmap='gray')
    plt.show()
    x_noise = Add_noise(x_s,-5)#加噪声,构成信噪比为-5db
    plt.imshow(x_noise, aspect='auto', cmap='gray')
    plt.show()
    #PS:最好是把图像的背景值转换到0附近再做加噪处理

具有直达波的GPR B-scan图像
alt
去直达波后的GPR B-scan图像
请添加图片描述
加入噪声的GPR B-scan图像
请添加图片描述

总结

数据增强方法除了添加噪声之外,还有图像平移、裁剪、缩放等等,此外,更高级的方法可以利用生成对抗网络生成逼真的GPR图像,以此来达到扩充GPR数据集的目的。

  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值