当前位置: 首页 > news >正文

小波变换背景预测matlab和python, pytorch样例

小波变换使用matlab和python或Pytorch

注意1d和2d的函数区别。注意默认参数问题。最终三个版本结果能够对齐。

matlab

load('wave_in.mat')
% res: image of 1536 x 1536

dlevel=7;
wavename='db6';

[m,n] = wavedec2(res, dlevel, wavename);

vec = zeros(size(m));
vec(1:n(1)*n(1)*1) = m(1:n(1)*n(1)*1);

background =  waverec2(vec, n, wavename);
background(background<0.001)=0;

python version1

import time
import torch
from mat_utils import load_mat
import numpy as np
import pywt
import copy

data_dict = load_mat("test_data/wave_in.mat")
res = data_dict["res"]
# res: image of 1536 x 1536

wavename = 'db6'
dlevel = 7
wavelet = pywt.Wavelet(wavename )

coeffs_py = pywt.wavedec2(res, wavename, level=dlevel)

# keep fist one and zero all others
for i in range(1, len(coeffs_py)):
    sub_coefs = list(coeffs_py[i])
    sub_coefs = [np.zeros_like(tensor) for tensor in sub_coefs]
    coeffs_py[i] = sub_coefs

background_py = pywt.waverec2(coeffs_py, wavename)

python version2 with pytorch

使用库

https://github.com/v0lta/PyTorch-Wavelet-Toolbox

import time
import torch
from mat_utils import load_mat
import numpy as np
import pywt
import ptwt
# pip install ptwt

data_dict = load_mat("test_data/wave_in.mat")
res = data_dict["res"]
# res: image of 1536 x 1536
data_torch = torch.from_numpy(res)

wavename = 'db6'
dlevel = 7
wavelet = pywt.Wavelet(wavename)

coeffs_pt = ptwt.wavedec2(data_torch, wavelet, level=dlevel, mode='symmetric')

coeffs_pt = list(coeffs_pt)
# keep fist one and zero all others
for i in range(1, len(coeffs_pt)):
    sub_coefs = list(coeffs_pt[i])
    sub_coefs = [torch.zeros_like(tensor) for tensor in sub_coefs]
    coeffs_pt[i] = tuple(sub_coefs)

coeffs_pt = tuple(coeffs_pt)
background_pt = ptwt.waverec2(coeffs_pt, wavelet).squeeze()

background_pt_np = background_pt.numpy()

相关文章:

  • 《Operating System Concepts》阅读笔记:p147-p158
  • SkyWalking集成Kafka实现日志异步采集经验总结
  • Bsin-PaaS: 微前端设计
  • phpstudy安装教程dvwa靶场搭建教程
  • 掌握CSS弹性盒子:打造灵活且响应式的布局
  • 嵌入式linux学习之opencv交叉编译/移植并使用CmakeList编译demo
  • MySQL 中有哪些锁类型?MySQL 事务的二阶段提交是什么?MySQL 中如果发生死锁应该如何解决?
  • React 源码揭秘 | Effect更新流程
  • MySQL二进制日志(Binlog)是如何落盘
  • 【算法】哈希表详解
  • springboot 引入前端
  • 第2章_保护您的第一个应用程序
  • 待解决 leetcode71 简化路径 栈的应用
  • 【深入探索 Caffeine:Java 缓存利器】
  • 0.MySQL安装|卸载内置环境|配置官方yum源|安装mysql|登录mysql|设置配置文件(centos8.2)
  • docker 部署 rocketmq
  • MySQL在线、离线安装
  • 计算机毕业设计SpringBoot+Vue.js社区医院信息平台(源码+文档+PPT+讲解)
  • Nginx安装并配置https
  • RTSP/Onvif安防平台EasyNVR接入EasyNVS显示服务缺失的原因与解决方案
  • 自己做众筹网站/app广告联盟平台
  • 电视台做网站还是APP/西安自助建站
  • 网站建网站/开发一个网站的步骤流程
  • 本地网站建设电话/北京seo技术
  • 长沙网站排名团队/win7优化大师免安装版
  • 手机做网站时时彩赌博/千锋教育学费