图谱滤波(Graph Spectral Processing)-1

news2024/11/19 5:27:06

        时域和空域信号的滤波是图像处理的基本技术之一,迄今已得到广泛的研究。Graph Spectral Processing(GSP)可以处理不规则结构的信号,这些信号在数学上用图形表示。利用谱图理论研究了图信号滤波的理论和方法。在图像处理中,图是表示像素形成的结构的强有力工具,如边和纹理。

        图信号的滤波不仅是对标准时域和空域信号滤波的扩展,而且具有自身的性质特点。例如,GSP可以将传统的基于像素的图像滤波方法表示为图谱域滤波器。此外,在信号和图像处理中被广泛研究的小波和滤波器组的理论和设计方法也被用于图信号的处理。

1、时域信号滤波

        在离散时间线性时不变(Linear Time-Invariant LTI )系统的滤波中,假设一维离散时间信号x_{n}是通过对其连续时间对应信号x(t)进行采样得到的,采样周期T固定,即x_{n}=x(n T)。在水平和垂直两个方向上进行采样,同样可以得到二维图像信号。所以,空间采样周期通常对应一个光学传感器阵列之间的间距。假设先验给定一个滤波器h_{n}的脉冲响应,LTI系统中的离散时间滤波信号y_{n}x_{n}h_{n}通过卷积计算如下:

y_{n}=h_{n} * x_{n}:=\sum_{k=-\infty}^{\infty} h_{n-k} x_{k}=\sum_{k=-\infty}^{\infty} x_{n-k} h_{k}

        众所周知,时域中的卷积运算在频率(即频率)中有一个等价的表达式如下:

\hat{y}(\omega)=\hat{h}(\omega) \hat{x}(\omega)

即:

\hat{x}(\omega):=\sum_{n=-\infty}^{\infty} x_{n} e^{-j \omega n}

其中,\hat{x}(\omega)x_{n}的离散时间傅里叶变换( DTFT ),时域卷积与频域乘法可视为等价运算。固定滤波器具有相应的固定频率响应,因此可以从频率响应直观地了解滤波器特性。相比之下,信号相关滤波器的频率响应在一般情况下并不总是清楚的,但这种缺点可以用图谱域视角得到部分解决。

2、图形信号滤波

        首先考虑线性图滤波器,深度学习中使用的滤波器为非线性图形滤波器。在LTI系统中,滤波后的信号表示为:

\mathbf{y}=\mathbf{H x}

其元素x_{n}的表示与时域滤波方程中相同,即:

y_{n}:=\sum_{k=0}^{N-1}[\mathbf{H}]_{n, k} x_{k}

其中,[\cdot]_{n, k}是矩阵中的n,k元素,与离散时间信号类似,图信号滤波可以定义在顶点域(Vertex Domain)和图频域(Graph Spectral Domain)两种方式。

2.1 Vertex Domain

        顶点域滤波是时域滤波的一种模拟,但是图信号处理(GSP)系统不是移位不变的。这意味着节点索引一般不具有任何物理意义。因此基于节点指标的图信号移位,类似于离散时间信号的移位不具有实用性。此外底层图会表现出高度不规则的连通性,即每个节点的度会有很大的变化。例如,图1.1所示的星图有一个中心节点和N-1个周围节点。显然,N-1条边与中心节点相连,即中心节点有度N-1,而周围所有节点都有度1。在图像处理的角度,这样的不规则性来源于边缘和纹理区域。图1.1右侧提供了一个示例。如同我们构造一个基于像素强度的图,即像素是节点,它们之间通过权值w较高的边相连。

 顶点域过滤可定义如下,设\mathcal{N}_{n, p}为第n个节点的一个集合的第p个邻域节点,显然\left|\mathcal{N}_{n, p}\right|n而变化。图谱滤波的顶点域滤波,通常可以定义为邻域样本的局部线性组合:

y_{n}:=\sum_{k \in \mathcal{N}_{n, p}}[\mathbf{H}]_{n, k} x_{k}

由于\mathcal{N}_{n, p}n的变化,[{H}]_{n, k}所有nk应该适当地确定,方程的矩阵形式可以表示为:

\mathbf{y}=\left(\operatorname{diag}\left([\mathbf{H}]_{0,0}, \ldots,[\mathbf{H}]_{N-1, N-1}\right)+h(\mathbf{W})\right) \mathbf{x}

其中h(\mathbf{W})是一个包含滤波器系数h[n,k](n=k)作为邻接矩阵\mathbf{W}的函数的矩阵,其中[h(\mathbf{W})]_{n, k}=0,如果k \notin \mathcal{N}_{n, p}。方程[1.9]和[1.10]中的顶点域滤波一般需要确定\sum_{n}\left|\mathcal{N}_{n, p}\right|滤波器系数;此外它有时需要增加计算复杂度。通常[\mathbf{H}]_{n, k}可以参数化为以下形式:

\mathbf{y}=\left(\sum_{p=0}^{P-1} h_{p} \mathbf{W}_{p}\right) \mathbf{x}

其中h_{p}是一个实值,\mathbf{W}_{p} \in \mathbb{R}^{N \times N}是一个掩蔽邻接矩阵,只包含w的跳包邻域元素,表示为

\left[\mathbf{W}_{p}\right]_{n, k}= \begin{cases}{[\mathbf{W}]_{n, k}} & \text { if } k \in \mathcal{N}_{n, p} \\ 0 & \text { otherwise }\end{cases}

方程中所要求的参数数为P,明显小于第一个方程中所要求的参数数量。我们可以发现方程的时域滤波与参数化顶点域滤波有相似之处。事实上,如果基础图是一个循环图,两个方程存在一致性。但是,在一般情况下它们不一致:由于图的不规则性质,很容易证实滤波系数矩阵的和不是常数,而在时域滤波中确是一个常数。因此,应仔细确定滤波系数矩阵的参数。

2.2 Graph Spectral Domain

        上文引入的顶点域滤波能够直观地并行于时域滤波,但是从频率的角度看仍然存在不足。时域滤波和频域滤波与DTFT(Discrete-time Fourier Transform)完全相同。但一般来说,这种简单的关系在实际使用中并不适用。顶点域滤波方程的简单实现并不反映在图频域上有对角线响应变化。即滤波器系数矩阵H并不总是可以被GFT矩阵U对角化,即UHU一般不是对角化的。因此当在顶点域内进行滤波时,H的图频率响应并不存在清晰的对应关系。这是离散时间信号和图信号的滤波之间的明显的区别。

        定义在图频域的图信号滤波是傅里叶域滤波的模拟,其中图信号滤波的谱域定义具有许多理想的特性:对角图频率响应;快速计算;像素相关图像滤波的可解释性为图谱滤波。根据以上对应,h_{n}x_{n}在时域上的卷积是\hat{h}(\omega)\hat{x}(\omega)在傅里叶域上的乘积,图频域的滤波利用这种模拟来定义广义卷积(Shumanetal.2016b):

 \hat{y}_{i}:=\hat{h}\left(\lambda_{i}\right) \hat{x}_{i}

其中\hat{x}_{i}=\left\langle\mathbf{u}_{i}, \mathbf{x}\right\rangle是x的第i个GFT系数,图算子方程的特征分解给出了GFT基u_{i},此外,\hat{h}(\lambda_{i})是图滤波器的图频率响应。通过将ˆy转换为y_{n}=\sum_{i=0}^{N-1} \hat{y}_{i}\left[\mathbf{u}_{i}\right]_{n}可得到y[n],其中\left[\mathbf{u}_{i}\right]_{n}u_{i}的第n个元素。这同样是用矩阵的形式写成的:

\begin{aligned} \mathbf{y} &=\mathbf{U}\left[\begin{array}{lll} \hat{h}\left(\lambda_{0}\right) & & \\ & \ddots & \\ & & \hat{h}\left(\lambda_{N-1}\right) \end{array}\right] \mathbf{U}^{\top} \mathbf{x} \\ &=\left(\sum_{i=0}^{N-1} \hat{h}\left(\lambda_{i}\right) \mathbf{P}_{\lambda_{i}}\right) \mathbf{x} \end{aligned}

其中:

\mathbf{P}_{\lambda}:=\sum_{k \in \sigma(\lambda)} \mathbf{u}_{k} \mathbf{u}_{k}^{\top}

是一个投影矩阵,其中\sigma(\lambda)是重复特征值的一组指标,即一组指标,如\mathbf{L} \mathbf{u}_{k}=\lambda \mathbf{u}_{k} \text {. }

        假设所有的特征值都是不同的,在给定的GFT基U下,通过在\hat{h}(\lambda_{i})中指定N个图的频率响应来实现图频域滤波。由于这是一个对角矩阵,如公式所示,其顶点域滤波观察到的频率特性变得相当清晰。请注意,方程的简单实现需要特定的\lambda_{i}值,即图的频率值。因此,在滤波之前必须给出图算子的特征值。相反,在这种情况下,我们可以参数化连续谱响应\hat{h}(\lambda)\lambda \in\left[\lambda_{\min }, \lambda_{\max }\right]。这种与图无关的设计过程已经在许多谱图滤波器中被广泛地应用,因此特征值在不同的谱图滤波器中经常有显著的变化。对于经典的傅里叶域滤波,只要考虑频率范围\omega \in[-\pi, \pi](或任意的2π区间)就足够了。然而,图的频率根据底层图和/或所选的图操作符而变化。例如,对称归一化图的拉普拉斯函数在[0,2],wh内有特征值

\lambda_{N-1} \leq \max \left\{d_{u}+d_{v} \mid(u, v) \in \mathcal{E}\right\}

 其中d_{u}是顶点u的度。在文献中也发现了其他一些方面的改进。虽然上面提到的图拉普拉斯函数有一个最大特征值的界,但这些界并不适用于邻接矩阵。考虑到这一点,在设计图滤波器时,必须适当地注意图的频率范围。如前所述,图频域滤波是傅里叶域滤波的一种模拟方法。然而,这并不意味着我们总是得到一个类似于顶点域的表达式。因此,我们需要计算输入信号的GFT,这就提出了如下所述的计算问题。对于GFT,特征向量矩阵U必须由图算子计算出来。对于一个密集的矩阵2,特征分解需要O(N3)的复杂度。这个计算往往变得越来越复杂,特别是对于大数据应用程序,包括图像处理。通常,图形光谱图像处理矢量化图像像素。假设我们有一个大小为W×H像素的灰度图像。它的向量化版本是\mathbf{x} \in \mathbb{R}^{W H},它对应的图算子是\mathbb{R}^{W H \times W H}。例如,4K超高清分辨率对应于W=3840和H=2160,这导致了WH>8×10^6:这太大了,无法进行特征分解,即使是最近的高规格计算机也是如此。

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

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

相关文章

华为云云耀云服务器L实例评测|RabbitMQ的Docker版本安装 + 延迟插件安装 QQ邮箱和阿里云短信验证码的主题模式发送

前言 最近华为云云耀云服务器L实例上新,也搞了一台来玩,期间遇到各种问题,在解决问题的过程中学到不少和运维相关的知识。 本篇博客介绍RabbitMQ的Docker版本安装和配置,延迟插件的安装;结合QQ邮箱和阿里云短信验证码…

Gurobi设置初始可行解

目录 1. 决策变量的Start属性直接设置变量的初始值 1.1 Start:MIP变量的起始值(初值)double类型,可更改 1.2 StartNodeLimit:限制了在完善一组输入部分变量的初始解时,MIP所探索的分支定界的节点的数量 …

SAAS软件营销——利用人工智能帮助企业了解客户

软件营销部队(Salesforce)是全球领先的客户关系管理(CRM)解决方案供应商之一,其产品和服务旨在帮助企业成长,并追踪与客户的关系。 在1999 年成立时,它就率先提出了通过互联网(现在通常称为“云”)实现“软件即服务”(SaaS)的概念。 SaaS提…

周期性触发的自定义触发器

背景 本文我们实现一个周期性触发的自定义触发器,顺便看下实现自定义触发器的一些要点 周期性触发器实现 实现一个每分钟触发一次的自定义事件时间触发器,实现代码和注意事项如下所示 package wikiedits.trigger;import org.apache.flink.api.common…

线程通信初始

简单认识一下线程通信 目录 简单认识一下线程通信线程通信定义线程通信模型之一释疑示例案例案例要求案例简单实现 拓展等待和唤醒API 参考视频 注:线程通信 前提是 线程安全 线程通信定义 当多个线程共同操作共享的资源时,线程间通过某种方式互相告知自…

【算法训练-二分查找 三】【特殊二分】寻找峰值

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【数组的二分查找】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为…

Vue3+TS+ECharts5实现中国地图数据信息显示

1.引言 最近在做一个管理系统,主要技术栈使用的是Vue3TSViteElementPlus,主要参考项目是yudao-ui-admin-vue3,其中用到ECharts5做数字大屏,展示中国地图相关信息,以此基础做一个分享,写下这篇文章。 &quo…

解决ASP.NET Core的中间件无法读取Response.Body的问题

概要 本文主要介绍如何在ASP.NET Core的中间件中,读取Response.Body的方法,以便于我们实现更多的定制化开发。本文介绍的方法适用于.Net 3.1 和 .Net 6。 代码和实现 现象解释 首先我们尝试在自定义中间件中直接读取Response.Body,代码如…

Appleid苹果账号自动解锁改密(自动解锁二验改密码)

目前该项目能实现以下功能: 多用户使用,权限控制多账号管理账号分享页,支持设置密码、有效期、自定义HTML内容自动解锁与关闭二步验证自动/定时修改密码自动删除Apple ID中的设备代理池与Selenium集群,提高解锁成功率允许手动触发…

先输入列,再输入行

想要的表格行数和列数是 5 行 5 列,以下是相应的代码实现: # 定义表格行数和列数 rows 5 cols 5# 创建一个二维列表作为表格 table [[ for j in range(cols)] for i in range(rows)]print("请输入表格数据:")while True:# 获取…

Python无废话-办公自动化Excel读取操作

openpyxl模块介绍 openpyxl是一个用于处理Excel文件的Python库,用于读取/写入Excel2010 xlsx/xlsm/xltx/xltm文件(不支持xls格式)。通过使用openpyxl库,可 以轻松地在Python程序中实现对Excel文件的操作。 openpyxl 安装 方式1:使用pip 命令安装&…

操作系统学习笔记1

文章目录 1、OS的一个宏观比喻2、OS的目的和功能3、OS的发展4、OS的运行机制5、OS的特征6、OS的体系结构 参考视频:操作系统 1、OS的一个宏观比喻 2、OS的目的和功能 3、OS的发展 4、OS的运行机制 中断、系统调用、异常。 5、OS的特征 6、OS的体系结构

【逐步剖C++】-第二章-C++类和对象(下)

前言:本文是对类和对象知识点的最后一篇总结,前两篇的链接如下: 【逐步剖C】-第二章-C类和对象(上) 【逐步剖C】-第二章-C类和对象(中) 这三篇加起来就是笔者学习在类和对象中的所有总结了&…

计算机网络网络层、应用层、数据链路层协议详解

目录 一、计算机网络 二、网络层 三、应用层 四、数据链路层 一、计算机网络 计算机网络是将多台计算机和其他网络设备通过通信链路连接起来,以实现数据交换和资源共享的系统。它是现代信息社会的基础设施之一,为人们提供了快速、可靠、安全的数据传…

学校项目培训之Carla仿真平台之Carla学习内容

一、Blender Blender入门:https://www.bilibili.com/video/BV1fb4y1e7PD/ Blender导入骨骼:https://www.bilibili.com/video/BV1hc41157nL 做一个车:https://www.bilibili.com/video/BV1hY411q7w2 二、Roadrunner RoadRunner Scenario…

Flink状态管理与检查点机制

1.状态分类 相对于其他流计算框架,Flink 一个比较重要的特性就是其支持有状态计算。即你可以将中间的计算结果进行保存,并提供给后续的计算使用: 具体而言,Flink 又将状态 (State) 分为 Keyed State 与 Operator State: 1.1 算子状态 算子状态 (Operator State):顾名思义…

计组—— I/O系统

📕:参考王道课件 目录 一、I/O系统的基本概念 1.什么是“I/O”? ​编辑2.主机如何和I/O设备进行交互? 3.I/O控制方式 (1)程序查询方式 (2)程序中断方式 (3&#x…

【MATLAB源码-第41期】基于压缩感知算法的OFDM系统信道估计和LS算法对比仿真。

操作环境: MATLAB 2013b 1、算法描述 压缩感知(Compressed Sensing, CS)是一种从稀疏或可压缩信号中重构完整信号的数学理论和技术。下面详细介绍压缩感知和它在OFDM信道估计中的应用。 1. 压缩感知基本概念 在传统采样理论中&#xff0…

数字电路逻辑与设计 之循环码和 移存码

有发现错误的能力,不能纠正 只能检查单次的错误,不能完全抗干扰 可以按照上面的方法来循环构造 移存码可以通过前推后推来实现

pytorch_神经网络构建1

文章目录 pytorch简介神经网络基础分类问题分析:逻辑回归模型逻辑回归实现多层神经网络多层网络搭建保存模型 pytorch简介 为什么神经网络要自定义数据类型torch.tensor? tensor可以放在gpu上训练,支持自动求导,方便快速训练,同时支持numpy的运算,是加强版,numpy不支持这些 为…