【多维定向滤波器组和表面波】表面变换:用于高效表示多维 s 的多分辨率变换(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

文献来源:

1992年,班贝格和史密斯提出了定向滤波器组(DFB),用于2D信号的有效定向分解。由于系统的不可分离性,将DFB扩展到更高的维度,同时仍保留其吸引人的功能是一个具有挑战性且以前未解决的问题。我们提出了一个名为NDFB的新滤波器组系列,它可以通过简单高效的树形结构实现任意N维(Nges2)信号的定向分解。在三维中,所提出的NDFB的理想通带是基于矩形的金字塔,从原点向不同方向辐射并平铺整个频率空间。所提出的NDFB通过N-D冗余因子为N的迭代滤波器组实现了完美的重构。所提出的NDFB的角分辨率可以通过简单的展开规则调用更多级别的分解来迭代细化。通过将NDFB与新的多尺度金字塔相结合,我们提出了表面变换,可用于在多维数据中有效地捕获和表示类似表面的奇点 

原文摘要:

Abstract:

In 1992, Bamberger and Smith proposed the directional filter bank (DFB) for an efficient directional decomposition of 2-D signals. Due to the nonseparable nature of the system, extending the DFB to higher dimensions while still retaining its attractive features is a challenging and previously unsolved problem. We propose a new family of filter banks, named NDFB, that can achieve the directional decomposition of arbitrary N-dimensional (Nges2) signals with a simple and efficient tree-structured construction. In 3-D, the ideal passbands of the proposed NDFB are rectangular-based pyramids radiating out from the origin at different orientations and tiling the entire frequency space. The proposed NDFB achieves perfect reconstruction via an iterated filter bank with a redundancy factor of N in N-D. The angular resolution of the proposed NDFB can be iteratively refined by invoking more levels of decomposition through a simple expansion rule. By combining the NDFB with a new multiscale pyramid, we propose the surfacelet transform, which can be used to efficiently capture and represent surface-like singularities in multidimensional data

随着现代计算机和成像设备功能的增长,高分辨率 3D 甚至更高维度的体积数据越来越多地用于广泛的应用,包括生物医学成像、地震成像、河外天文学、计算机视觉以及视频处理和压缩。为了有效地分析和表示如此大量的数据,我们需要创建和使用来自各个工程领域的新工具,包括信号处理。在本文中,我们提出了一套新的工具,即N-维度定向滤波器组 (NDFB) 和表面,可以捕获和表示位于光滑表面上的信号奇异点。这种奇点通常在3D医学图像中观察到,其中图像大多是平滑的,除了在某些边界表面上,以及在视频信号中,移动物体在3-D空间/时间空间中雕刻出光滑的表面。

对于2-D信号,沿着平滑曲线捕获奇点的类似问题已经得到了广泛的研究。在不声称详尽无遗的情况下,我们想举几个例子,包括可操纵金字塔 [1]、定向滤波器组 [2]、二维定向小波 [2]、曲线 [3]、复杂小波 [4]、[5]、轮廓 [6]、带状 [7] 和剪切 [8]。在所有这些二维表示中,我们特别感兴趣的一种方法是定向滤波器组(DFB),它最初由班贝格和史密斯[2]提出,随后由几位作者[2]-[10]改进。德国足协通过l-级树结构分解,导致2l具有楔形频率分区的子带,如图1(a)所示。同时,DFB是一种非冗余变换,并提供完美的重建,即原始信号可以从其抽取的通道中精确重建。DFB的方向选择性和高效结构使其成为许多图像处理应用的有吸引力的候选者。通过将DFB与拉普拉斯金字塔相结合,Do和Vetterli [7]构建了轮廓,为稀疏图像表示提供了定向多分辨率变换。

📚2 运行结果

 

 部分代码:

%% We add Gaussian noise to the video sequence
disp(' ');
disp('Step 2: Add white Gaussian noise to the sequence.');
sigma = 20; % standard deviation
Xn = double(X) + sigma * randn(size(X));
r = input('Press <enter> to play the noisy sequence ...');
PlayImageSequence(uint8(Xn));

%% Surfacelet Denoising
disp(' ');
disp('Step 3: Apply surfacelet transform on the noisy sequence and hard-threshold the coefficients');
r = input('Press <enter> to continue ...');

disp(' ');
disp('Processing ...');

Pyr_mode = 1.5; % For better performance, choose Pyr_mode = 1. However, this setting requires more RAMs.
Xd = surfacelet_denoising_3D(Xn, Pyr_mode, sigma);
Xd(Xd > 255) = 255;
Xd(Xd < 0) = 0;


disp('Done!');
disp(' ');
r = input('Press <enter> to show the denoised sequence ...');
skip = 10; % To exclude the boundary effect
PlayImageSequence(uint8(Xd(:,:, skip+1 : end - skip)));

% Plot the frame-by-frame PSNR values
PSNR_surf = zeros(size(Xd, 3) - 2 * skip, 1);
for n = skip+1 : size(Xd, 3) - skip
   PSNR_surf(n - skip) = PSNR(double(X(:,:, n)), Xd(:,:,n)); 
end

figure
plot([(skip+1) : (size(Xd, 3) - skip)], PSNR_surf);
axis tight;
title(['Average PSNR = ' num2str(mean(PSNR_surf))], 'FontSize', 12);
xlabel('Frame Number', 'FontSize', 12);
ylabel('PSNR (dB)', 'FontSize', 12);

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

 Multidimensional Directional Filter Banks and Surfacelets | IEEE Journals & Magazine | IEEE Xplore

🌈4 Matlab代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/30448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 基础函数

Mathf&#xff1a; //1.π-PI print(Mathf.PI); //2.取绝对值-Abs print(Mathf.Abs(-10)); print(Mathf.Abs(-20)); print(Mathf.Abs(1)); //3.向上取整-Ce il To In t float f 1.3f; int i (int)f; …

如何在群辉NAS系统下安装cpolar套件,并使用cpolar内网穿透?

如何在群辉NAS系统下安装cpolar套件,并使用cpolar内网穿透&#xff1f; 文章目录 如何在群辉NAS系统下安装cpolar套件,并使用cpolar内网穿透&#xff1f;前言1. 在群辉NAS系统下安装cpolar套件2. 管理隧道列表3. 创建固定数据隧道 前言 群晖作为大容量存储系统&#xff0c;既可…

bootloader跳转APP注意事项

在gd32f427 时跳转异常 参考文章&#xff1a; https://club.rt-thread.org/ask/question/425321.html%20https:/club.rt-thread.org/ask/question/eab19452583b5959.html https://club.rt-thread.org/ask/question/eab19452583b5959.html 关闭全部中断&#xff0c;并且清除中…

springcloud3 springcloud stream的学习以及案例

一 springcloud stream的作用 1.1 springcloud stream作用 stream屏蔽底层消息中间件的差异&#xff0c;降低切换成本&#xff0c;统一消息的编程模型。 stream中的消息通信模式遵循了“发布-订阅”模式。 1.2 Binder作用 通过定义绑定器Binder作为中间层&#xff0c;实现…

力扣hot100刷题记录

二刷hot100&#xff0c;坚持每天打卡&#xff01;&#xff01;&#xff01;Today&#xff1a;2023-8-10 1. 两数之和 // 先求差&#xff0c;再查哈希表 public int[] twoSum(int[] nums, int target) {Map<Integer,Integer> map new HashMap<>();for(int i 0;i&…

SpringBoot 升级内嵌Tomcat

SpringBoot 更新 Tomcat 最近公司的一个老项目需要升级下Tomcat&#xff0c;由于这个项目我完全没有参与&#xff0c;所以一开始我以为是一个老的Tomcat项目&#xff0c;升级它的Tomcat依赖或者是Tomcat容器镜像&#xff0c;后面发现是一个SpringBoot项目&#xff0c;升级的是…

Dockerfile 简单实战

将flask项目打包成镜像 1. 准备flask文件 创建 app.py 文件&#xff0c;内容如下 from flask import Flask app Flask(__name__)app.route(/) def hello_world():return Hello Worldif __name__ __main__:app.run(host0.0.0.0, port8000, debugTrue) 并开启外网访问&#xf…

vue消息订阅与发布,实现任意组件间通讯

第一步&#xff1a;下载第三方消息订阅与发布库&#xff0c;例如常用的pubsub.js,他可以在任何框架中使用包括vue、react、anglar等等。 命令&#xff1a;npm i pubsub-js 注意是pubsub-js(不是点); 第二步&#xff1a;引入库&#xff1b; import pubsub from pubsub-js 第…

Java并发编程(二)并发理论[JMM/重排序/内存屏障/Happens-Before 规则]

JMM(Java内存模型) 概述 JMM即Java内存模型(Java Memory Model),是一种抽象的概念,并不真实存在,JMM描述的是一组规则或规范,通过这组规范定义了程序中各个变量的访问方式Java内存模型中规定所有变量都存储在主内存,主内存是共享内存区域,所有线程都可以访问,但线程对变量的操…

Android AOSP源码编译——AOSP下载(一)

一、电脑配置 Ubuntu16.04 16G&#xff0c;硬盘的大小最好大于300G (我这边是找了个win电脑装了双系统 没有使用虚拟机的方式) 二、基础环境配置 1、安装git sudo apt install git配置git email和name git config --global user.email "youexample.com" git conf…

数据结构—树和二叉树

5.树和二叉树 5.1树和二叉树的定义 树形结构&#xff08;非线性结构&#xff09;&#xff1a;结点之间有分支&#xff0c;具有层次关系。 5.1.1树的定义 树&#xff08;Tree&#xff09;是n&#xff08;n≥0&#xff09;个结点的有限集。 若n0&#xff0c;称为空树&#x…

LVS工作环境配置

一、LVS-DR工作模式配置 模拟环境如下&#xff1a; 1台客户机 1台LVS负载调度器 2台web服务器 1、环境部署 &#xff08;1&#xff09;LVS负载调度器 yum install -y ipvsadm # 在LVS负载调度器上进行环境安装 ifconfig ens33:200 192.168.134.200/24 # 配置LVS的VIP…

Java自学网站推荐,专业教学快速提升

Java自学网站可以是学习Java的有用资源之一。它们通常提供了丰富的教学材料、在线课程、编程练习和实例项目&#xff0c;帮助初学者系统地学习Java编程语言和相关技术。 动力节点是一家专业的Java培训机构&#xff0c;他们提供在线视频学习平台&#xff0c;你可以参考他们的官方…

数据结构----结构--线性结构--链式存储--链表

数据结构----结构–线性结构–链式存储–链表 1.链表的特点 空间可以不连续&#xff0c;长度不固定&#xff0c;相对于数组灵活自由 搜索&#xff1a; 时间复杂度O(n) 增删: 头增头删时间复杂度O(1) 其他时间复杂度为O(n) 扩展&#xff1a;单向循环链表的特性 从任意节…

Web前端之NodeJS、Vue

文章目录 一、Babel转码器1.1 Babel安装流程1.2 Babel命令行转码 二、Promise对象三、测试方式四、Vue&#xff08;渐进式JS框架&#xff09;4.1 准备4.2 创建一个项目4.3 运行一个项目 五、模板语法5.1 文本5.2 原始html5.3 属性Attribute5.4 使用JavaScript表达式 六、条件渲…

idea常用插件

idea常用插件 1、MyBatis Log Free 打印完整的sql语句 控制台打印的sql语句是需要自己手动补充完整&#xff0c;才能在Navicat中执行。这个插件可以直接帮我们把sql语句完整的打印出来 安装成功后可以直接在控制台右击使用即可 使用效果 2、Maven Helper 解决 maven 依赖冲突…

【LangChain学习】基于PDF文档构建问答知识库(二)创建项目

这里我们使用到 fastapi 作为项目的web框架&#xff0c;它是一个快速&#xff08;高性能&#xff09;的 web 框架&#xff0c;上手简单。 一.创建 FastAPI 项目 我们在IDE中&#xff0c;左侧选择 FastAPI &#xff0c;右侧选择创建一个新的虚拟环境。 创建成功&#xff0c;会有…

需要数电发票接口的,先熟悉下数电发票基本常识

最近有一些技术小伙伴来咨询数电发票接口的时候&#xff0c;对数电发票的一些常识不太了解&#xff0c; 导致沟通起来比较困难。比较典型的这三个问题&#xff1a; 一、开具数电票时&#xff0c;如何设置身份认证频次&#xff1f; 请公司的法定代表人或财务负责人登录江苏省电…

json-server的入门

由于前端开发的时候&#xff0c;需要向后端请求数据&#xff0c;有的时候后端还没有准备好&#xff0c;所以需要使用一些简单的静态数据&#xff0c;但是我们更加希望能够模拟请求以及请求回来的过程&#xff0c;这个时候就需要使用json-server Json-Server的介绍 json-server…

第十六章、【Linux】程序管理与SELinux初探

16.1 什么是程序 &#xff08;process&#xff09; 在Linux 系统当中&#xff1a;“触发任何一个事件时&#xff0c;系统都会将他定义成为一个程序&#xff0c;并且给予这个程序一个 ID &#xff0c;称为 PID&#xff0c;同时依据启发这个程序的使用者与相关属性关系&#xff…