激光雷达信号处理(1) Gm-APD信号提取去噪学习2025.3.31

发布于:2025-04-01 ⋅ 阅读:(32) ⋅ 点赞:(0)

前言

最近在学习激光雷达信号处理领域相关的研究,通过文献阅读和资料搜集,Gm-APD信号通常具有特定的噪声和信号特征,而类高斯匹配滤波,极大似然估计等算法可用于增强信号或抑制噪声来进行信号提取,再通过十字邻域方法进行去噪,可以有效提高目标信号的信噪比,通过仿真实验进行测试,这里将示例分享给大家,MATLAB版本为MATLAB2018a。

一. MATLAB仿真-类高斯匹配滤波(1)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%功能:基于加权一阶类高斯匹配滤波的Gm-APD信号提取算法
%环境:Win7,Matlab2018a
%Modi: C.S
%时间:2025-3-28 16:56:27 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% I. 清空环境变量
clear all
clc

tic
% 生成模拟的Gm - APD信号
t = 0:0.01:10; % 时间向量
signal = sin(2*pi*0.5*t) + 0.5*sin(2*pi*2*t); % 模拟信号
noise = 0.2*randn(size(t)); % 高斯噪声
noisy_signal = signal + noise; % 含噪信号

% 定义加权一阶类高斯匹配滤波器参数
tau = 1; % 时间常数
t_filter = -5:0.01:5; % 滤波器时间向量
filter = (1/tau) * exp(-t_filter/tau) .* (t_filter >= 0); % 一阶类高斯匹配滤波器
weight = exp(-(t_filter.^2)/(2*(0.5^2))); % 加权函数
weighted_filter = weight .* filter; % 加权一阶类高斯匹配滤波器

% 归一化滤波器
weighted_filter = weighted_filter / sum(weighted_filter);

% 应用加权一阶类高斯匹配滤波器
extracted_signal = conv(noisy_signal, weighted_filter, 'same');

% 绘制结果
figure;
subplot(3,1,1);
plot(t, signal);
title('原始信号');
xlabel('时间 (s)');
ylabel('幅值');

subplot(3,1,2);
plot(t, noisy_signal);
title('含噪信号');
xlabel('时间 (s)');
ylabel('幅值');

subplot(3,1,3);
plot(t, extracted_signal);
title('提取的信号');
xlabel('时间 (s)');
ylabel('幅值');    

toc

在这里插入图片描述

二. MATLAB仿真-极大似然估计(2)


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%功能:基于极大似然估计算法的Gm-APD信号提取算法
%环境:Win7,Matlab2018a
%Modi: C.S
%时间:2025-3-28 17:03:42 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% I. 清空环境变量
clear all
clc

tic
% 模拟 Gm - APD 信号
t = 0:0.01:10; % 时间向量
signal = sin(2*pi*0.5*t) + 0.5*sin(2*pi*2*t); % 模拟信号

% 添加噪声
noise = 0.2*randn(size(t)); % 高斯噪声
noisy_signal = signal + noise; % 含噪信号

% 极大似然估计
% 假设信号是由正弦波组成,我们可以通过优化来估计正弦波的参数
% 定义目标函数,这里我们最小化含噪信号与估计信号之间的误差平方和
fun = @(params) sum((noisy_signal - (params(1)*sin(2*pi*params(2)*t) + params(3)*sin(2*pi*params(4)*t))).^2);

% 初始参数猜测
initial_params = [1, 0.5, 0.5, 2];

% 使用 fminsearch 进行优化
estimated_params = fminsearch(fun, initial_params);

% 根据估计的参数生成提取的信号
extracted_signal = estimated_params(1)*sin(2*pi*estimated_params(2)*t) + estimated_params(3)*sin(2*pi*estimated_params(4)*t);

% 绘制结果
figure;
subplot(3,1,1);
plot(t, signal);
title('原始信号');
xlabel('时间 (s)');
ylabel('幅值');

subplot(3,1,2);
plot(t, noisy_signal);
title('含噪信号');
xlabel('时间 (s)');
ylabel('幅值');

subplot(3,1,3);
plot(t, extracted_signal);
title('提取的信号');
xlabel('时间 (s)');
ylabel('幅值');
    
toc

在这里插入图片描述

三. MATLAB仿真-十字邻域去噪(3)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%功能:基于十字邻域的Gm-APD信号去噪算法
%环境:Win7,Matlab2018a
%Modi: C.S
%时间:2025-3-28 18:47:27 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% I. 清空环境变量
clear all
clc

tic


% 示例使用
% 生成一些示例数据(这里简单用随机数据模拟 Gm - APD 信号数据)
data = rand(100, 100);

% 调用去噪函数
denoised_data = cross_neighborhood_denoising(data);

% 显示原始数据和去噪后的数据
figure;
subplot(1, 2, 1);
imshow(data, []);
title('原始数据');
subplot(1, 2, 2);
imshow(denoised_data, []);
title('去噪后的数据');    

toc

function denoised_data = cross_neighborhood_denoising(data)
    % 获取数据的大小
    [rows, cols] = size(data);
    
    % 初始化去噪后的数据
    denoised_data = zeros(rows, cols);
    
    % 遍历数据中的每个像素
    for i = 1:rows
        for j = 1:cols
            % 处理边界像素
            if i == 1
                up = data(i, j);
            else
                up = data(i - 1, j);
            end
            
            if i == rows
                down = data(i, j);
            else
                down = data(i + 1, j);
            end
            
            if j == 1
                left = data(i, j);
            else
                left = data(i, j - 1);
            end
            
            if j == cols
                right = data(i, j);
            else
                right = data(i, j + 1);
            end
            
            % 计算十字邻域的平均值
            denoised_data(i, j) = (up + down + left + right + data(i, j)) / 5;
        end
    end
end

在这里插入图片描述

四. 小结

数字信号处理中,一般的带噪数据,不同的噪声背景,所呈现的噪声特性不同,需结合实际场景进行噪声特性分析建模,通过需找到一个较为拟合的去噪模型,则可以将数据中的噪声部分进行一般性去除,从而保留更多真实信号的信息。再通过不同的去噪算法,进一步将目标信号数据提纯,则可以得到可以进行下一步检测跟踪识别的数据,这里有线性滤波与非线性滤波等许多不同的算法值得检验测试,本示例仅作参考,后期可能会用到,所以这里做个笔记。每天学一个算法小知识,大家一起来学习进步阿!


网站公告

今日签到

点亮在社区的每一天
去签到