从本篇介绍 TGD 在三维信号处理中的任务应用。TGD 是我们定义的一种新的“变化率表征”,对连续函数而言是一种新的“广义导数”,对离散序列而言是一种新的差分。在二维应用中,我们详细介绍了 TGD 在图像边缘检测中的优异性能。边缘的定义可以直接从二维图像扩展到三维图像序列,如视频等,即边缘是在三维空间中出现亮度值的跳跃的地方,对应于梯度的局部极大值点。由于 TGD 可以计算三维离散序列的梯度,则基于 TGD 的边缘检测方法自然地可以扩展到三维情况。感兴趣的朋友可直接阅读原始论文,同时欢迎阅读详见前面的章节:
一、对“视频边缘检测”的直觉理解
理论上,物体的物理属性会在空间内形成边缘,因为在这些地方图像亮度值发生了剧烈变化;与此同时,物体的运动也会在时间维度上形成边缘,因为在这些地方图像的亮度值同样随时间发生了剧烈改变。然而后者并不是传统意义上在空间中检测得到的静态边缘(Static edges),即 X X X 或 Y Y Y 轴方向的 TGD 值较大。它们实则是由时间维度上亮度变化所引起的,即可能 X X X 或 Y Y Y 方向的 TGD 值相当小,而时间 T T T 轴方向的 TGD 值很大。
让我们直觉分析一下:考虑一个静止的图片,左上角有一个白色的圆圈,其他地方都是黑色的像素。让这个图片一秒钟都不动,则在一秒钟内的这个时空中,这个白色的圆圈其实是会形成一个圆柱体的,而这个圆柱体在三维时空中会有表面形成边缘。如果这个圆圈在一秒钟内从左上运动到右下,则会在时空中形成一个斜圆柱体,该圆柱体也会在三维时空中会有表面形成边缘。
请注意:我要寻找的不仅是这个斜圆柱体的表面(斜圆柱体的表面在每个单独的帧中进行边缘检测就可以找到,这仅仅是时空中,空间维度上的边缘),我要寻找的,是“时间上的边缘(运动物体)“和”空间上的边缘(静止物体)“。即,通过时空中的信号变化率,理解时空中曾经、当下、未来发生的变与不变!

那么理论上,我在该三维空间中如果沿着时间 T T T 维度进行一维 TGD 计算,就能通过 TGD 值感知 特定空间点 的运动情况(即对于常函数,时空中无运动变化,TGD 值为 0。空间点处有运动物体经过,亮度会发生变化,则时间维度 TGD 值有响应),有 TGD 值响应的部分出来的内容我称之为 “运动边缘(Motion Edge)” 。直觉分析之后,还是要实际看看才能清楚。我拍摄了一个视频,然后用一维一阶 TGD 离散算子对时间维度进行 TGD 计算,展示响应幅度值。嘿,效果不错,静止背景的图像边缘没有响应,运动部分有响应。即当背后的床静止时,没有响应;当手机抖动带来背后的床运动时,有响应。速度越大,时空中像素值变化越快,响应越大,可视化出来越白越亮。(传统的运动检测,是前后帧之间做差,刻画极短时间内有无发生变化;我的 TGD 计算用了很多帧感知一段时间内的运动,后面的实验可以看出来)

此外,直觉上,如果我在三维空间中沿着 X X X 和 Y Y Y 轴进行三维 TGD 计算,然后在单帧上执行图像边缘检测算法,由于我用三维 TGD 进行梯度计算,说不定当前帧被遮住的静态背景边缘,也能通过扩大计算区间(考虑了前后帧),给刻画出来。这样检测出来的内容我称之为 “静态边缘(Static Edge)” 。
二、基于 TGD 的视频边缘检测算法
根据上面的分析,我们很容易设计出基于 TGD 的视频边缘检测算法,也称视频理解算法。说在前面: 该算法不在于解决任何实际问题,而是展示 TGD 能够刻画感知三维空间中的变化,具体这些“变化表征”如何用,如何用得好,是工程问题,是后处理问题 。
准备工作部分,首先准备一个 X X X 和一个 Y Y Y 轴上的三维一阶离散 TGD 算子,再准备一个时间维度的一维一阶和二阶 TGD 离散算子。针对图像序列 I I I ,分别与四个离散 TGD 算子进行卷积,得到 X X X 、 Y Y Y 和 t t t 方向的偏 TGD 序列 d x d_x dx 、 d y d_y dy 、 d t d_t dt 和 d t 2 d^2_t dt2 。此后将接近 0 0 0 的 TGD 小值置 0 0 0 以去除微小噪声影响,并且通过保留小数点后特定位数避免计算误差造成的影响。
准备阶段需要着重说明的两点是:
- 运动检测需要在像素级别进行操作。具有空间平滑效果的三维 TGD 算子可能会导致将静态像素错误地识别为运动像素,因此,我们建议 时间维度使用一维 TGD 算子 。
- 因为一阶 TGD 算子中心为 0 0 0 ,表明它只关注先前状态和后续状态,而不关注当前状态;二阶 TGD 算子两边正,中间负,为此左右两侧一致使得其分不了过去和未来。所以我 需要结合一阶和二阶 TGD 算子,同时感知过去、现在和未来 。
做完准备工作之后,我们的算法包括三个部分。第一部分使用基于一阶 TGD 的图像边缘检测算法,检测 XY 平面上梯度的局部极值点。之后将 d x d_x dx 和 d y d_y dy 纳入非极大值抑制和双阈值选取得到每一帧的“静态边缘”和空间内的边缘朝向。由于我们的方法结合了三维 TGD 算子,以获得 X X X 和 Y Y Y 方向的偏 TGD 值(类似偏导数),从而使算法能够捕捉到被运动物体遮挡的背景细节。第二部分是运动检测,沿时间 T T T 轴的亮度发生显著变化意味着存在运动,为此需要标记出沿时间方向的一阶或二阶 TGD 大于相应阈值的像素作为每一帧的“动态边缘”。第三部分即最后将边缘信息进行融合(我们使用 HSV 颜色空间来进行融合边缘方向和强度信息的可视化)实现对视频的理解。下面分别展示了算法以及算法流程图。


三、实验结果
下列实验旨在介绍如何用 TGD 挖掘三维空间中的变化信息(包括空间中的变化,即静态边缘;以及时间上的变化,即运动边缘),只有定性分析,没有定量分析。不在任何具体任务中刷指标,也不和各种其他视频理解算法做比较。
在实验中,我采用了通过正交构造方法获得的 TGD 算子。 X X X 方向和 Y Y Y 方向的三维 TGD 离散算子采用高斯权重分布函数,而时间 T T T 方向的一维 TGD 离散算子采用线性权重分布函数。卷积核大小分别为 15 × 15 × 15 15 \times 15 \times 15 15×15×15 和 1 × 1 × 15 1 \times 1 \times 15 1×1×15 。此外,我通过复制或跳过帧来缩放时间维度,以保证输入序列长度恒定为 15 15 15 (即实际使用帧可能仅有 5 5 5 帧,但是我将每个帧复制三份,如同一维信号任务中构建阶梯函数一样,将序列长度拓展到 15 15 15 )。
我们先前情回顾一下一维、三维的一阶和二阶 TGD 离散算子,示意图如下所示:


下图展示了基于 TGD 的视频边缘检测结果。在录制的视频中,一个摆锤在前景中不断来回摆动,背景复杂。由于摆锤移动迅速,我通过将每个帧复制三份,如同一维信号任务中构建阶梯函数一样,等效减缓摆锤的运动速度,即用于计算 TGD 的帧序列长度为 15 15 15 ,但有效帧数为 5 5 5 。实验可见:我们很好地获取到了在五个不同时刻摆锤的位置以及正确的静态边缘位置和方向。 虽然观察到了一些运动边缘的不连续性,但这种现象的主要原因是运动物体与背景之间的亮度差异太小。

我们进一步分析上面实验中检测到的边缘中的一些特殊元素。 由于亮度随时间变化,阴影可能被标记为运动边缘。 下面的子图(a)中红色虚线框展示了由摆锤以及阴影产生的运动边缘。从输入帧的局部截图(第二列和第三列)中可以观察到,摆锤的运动在背景上产生了一个阴影,导致该特定空间位置的亮度值随时间变化。一方面,摆锤的运动在时间方向 TGD 上产生了特定的响应,背景从暗变亮,然后又变暗;另一方面,阴影的出现和消失改变了背景颜色,从亮变暗,然后又变亮。因此, 摆锤和阴影产生了相反的正负响应 ,在 TGD 响应中分别表示为红色和蓝色。下面的子图(b)中红色虚线框展示了运动物体和隐藏物体的静态边缘。输入帧序列在 X X X 方向和 Y Y Y 方向的 TGD 响应实则为相邻时间帧的 TGD 响应的加权和。对于在不同帧中存在于不同位置的运动物体,它们在这些位置的 TGD 响应在最终结果上产生了微弱的叠加效应。离中间帧越远,叠加效应就越弱。同样,对于被遮挡后又重新出现的背景,其 TGD 响应也会叠加在最终响应上,使得被遮挡的物体边缘能够被检测识别,如 中间帧的字母“E”被遮挡但是在静态边缘中被完整检测出来了 。可以设想到,TGD 响应能够适应被遮挡的背景以及运动的物体,未来可能有助于实现运动遮挡的视频对象分割及追踪。

让我们在更理想的条件下开展分析。下图展示了在纯黑色背景前摆动的钟摆的视频边缘检测。为了避免镜面反射并保持表面亮度一致,我们对钟摆进行了表面处理。此外,我们还避免了阴影的干扰。这种设置使得我们的算法分析更加理想化。通过将每一帧复制 15 15 15 次、 5 5 5 次和 3 3 3 次,我们将有效帧数量分别设置为 1 1 1 、 3 3 3 和 5 5 5 。请注意,当只有一个有效帧可用时,输入序列是恒定的,此时基于 TGD 的视频边缘检测等同于对中心帧进行相应的图像边缘检测。在输入帧序列中有运动物体的情况下,基于 TGD 的算法能够有效地检测出运动部分,并得到与恒定帧序列中相同的静态边缘结果。随着有效帧数量的增加,能检测到的运动边缘增多,但是每帧中位于不同位置的运动物体的物理边缘在最终结果中会叠加,使得识别出一些在中间帧中不存在的静态边缘。与此同时,中间帧被遮挡的部分物理边缘,因为在其他相邻帧中暴露,从而能被检测得到。

沿时间轴的 TGD 结果不仅能检测特定位置的亮度波动以确定是否有运动物体经过,还能提供对运动的更深入理解,即 d t d_t dt 和 d t 2 d^2_t dt2 本身的数值也很有意义。在此,我们假设运动物体比背景更亮。如下图所示,我们选择了三个案例,每个案例包含五个有效帧,橙色箭头表示摆锤的运动方向。在一阶 TGD 值 d t d_t dt 中,过去帧中的运动物体产生负响应(蓝色),未来帧中的运动物体产生正响应(红色)。而在二阶 TGD 值 d t 2 d^2_t dt2 中,当前帧内的运动物体产生负响应(蓝色),而其他帧中的运动物体产生正响应(红色)。此外,时间距离中间帧越远,响应的强度越小(这是 TGD 的单减约束决定的)。结合这些信息, 我们可以基于 TGD 响应值推断出运动方向及位置 ,这在各种下游应用中至关重要。

最后,我们将算法应用到 XYZ 三维空间,而非视频之类的时空中。输入的序列是连续人体 CT 扫描结果。下图显示,器官的位置及其变化均得到了良好的检测。在用于实验的 CT 片段中,人体外部皮肤基本保持不变,而胸腔体积发生了变化(子图(h)中的白色区域)。白色区域越大,表示器官在连续 5 5 5 张 CT 片范围内( 5 5 5 毫米厚度内)的尺度变化越大。此外,胸椎和腰椎沿 Z Z Z 轴均显示出轻微变化。或许未来医学中可以将 TGD 用于追踪正常患者的变化,并利用这些信息来识别异常患者。对 CT 扫描中的变化进行特征描述可能为医学诊断提供潜在益处,这需要在各学科之间开展进一步的交叉合作研究。



四、结语
TGD 在传统计算机视觉中的应用实践到此就到了一个段落。
我们的实践不是为了直接解决哪类问题,不是为了刷榜和SOTA,那是工程问题,是后处理问题。 我们的目的是展现TGD计算得到的变化率表征是有用的,有大用的 。
除了传统计算机视觉以外,TGD算子作为神经网络中常见的卷积核,TGD卷积输入得到的「 TGD特征 」(如上面可视化图中的 d x d_x dx 、 d y d_y dy 、 d t d_t dt 和 d t 2 d^2_t dt2 )能否在神经网络特征提取中有所帮助?当TGD遇到CNN能否擦出火花 ?
敬请下回分解,谢谢。
知乎原文地址:TGD第九篇:三维应用——视频边缘检测