You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

一维信号去噪的适配评估指标选择及多指标组合实现咨询

一维小波去噪的评估指标选择与参数筛选方案

指标选择建议

1. 噪声抑制能力:归一化均方根误差(NRMSE)

normalized_root_mse 衡量去噪信号与原始干净信号的数值偏差,数值越小说明噪声抑制效果越好——它消除了信号幅值差异的影响,适合不同尺度的一维信号评估。

2. 结构相似性:结构相似性指数(SSIM)

structural_similarity 从亮度、对比度、结构三个维度评估信号的结构一致性,数值越接近1说明去噪后信号保留的原始结构信息越多,完全匹配时得分为1。

不推荐Hausdorff距离

Hausdorff距离主要用于衡量两个点集/轮廓的最大偏差,更适合图像形状匹配,对一维信号的结构保留评估针对性不强,因此不建议选用。

多指标组合方案

可以通过加权综合得分同时兼顾噪声抑制和结构保留,核心思路是:

  • 将NRMSE转化为1 - NRMSE(数值越大代表噪声抑制效果越好)
  • 结合SSIM(数值越大代表结构保留越好)
  • 给两个指标分配权重(比如根据需求调整w_nrmse和w_ssim,总和为1),综合得分公式:
    combined_score = (1 - nrmse) * w_nrmse + ssim * w_ssim
    
    选择综合得分最高的参数组合即可。

Python代码示例

import numpy as np
from skimage.restoration import denoise_wavelet
from skimage.metrics import normalized_root_mse, structural_similarity

# 1. 生成模拟一维信号(干净信号+高斯噪声)
np.random.seed(42)
clean_signal = np.sin(np.linspace(0, 10*np.pi, 1000))  # 原始干净正弦信号
noisy_signal = clean_signal + 0.3 * np.random.randn(len(clean_signal))  # 添加高斯噪声

# 2. 定义待筛选的参数网格
param_grid = {
    'wavelet': ['sym3', 'sym5', 'db4'],
    'wavelet_levels': [2, 3, 4],
    'method': ['BayesShrink', 'VisuShrink']
}

# 3. 初始化最优参数和得分
best_score = -np.inf
best_params = {}
best_denoised = None

# 4. 遍历所有参数组合,计算指标并筛选最优
w_nrmse = 0.4  # NRMSE权重,可根据需求调整
w_ssim = 0.6   # SSIM权重

for wavelet in param_grid['wavelet']:
    for levels in param_grid['wavelet_levels']:
        for method in param_grid['method']:
            # 小波去噪
            denoised_signal = denoise_wavelet(
                noisy_signal,
                rescale_sigma=True,
                wavelet=wavelet,
                wavelet_levels=levels,
                method=method,
                mode='soft'
            )
            # 计算评估指标
            nrmse = normalized_root_mse(clean_signal, denoised_signal)
            ssim = structural_similarity(clean_signal, denoised_signal)
            # 计算综合得分
            combined_score = (1 - nrmse) * w_nrmse + ssim * w_ssim
            
            # 更新最优参数
            if combined_score > best_score:
                best_score = combined_score
                best_params = {
                    'wavelet': wavelet,
                    'wavelet_levels': levels,
                    'method': method
                }
                best_denoised = denoised_signal

# 输出结果
print("最优参数组合:", best_params)
print("最优综合得分:", best_score)
print("对应NRMSE:", normalized_root_mse(clean_signal, best_denoised))
print("对应SSIM:", structural_similarity(clean_signal, best_denoised))

代码说明

  • 先生成模拟的一维干净信号和带噪信号,方便快速测试
  • 定义参数网格覆盖你关注的小波基、分解层数、阈值方法
  • 遍历每个参数组合,计算NRMSE和SSIM,再计算加权综合得分
  • 最终保留综合得分最高的参数组合和对应的去噪信号

内容的提问来源于stack exchange,提问作者Bharat Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 18:18:36