从关键帧到插值曲线,从遮挡修补到抖动抑制——一套可复现、可验证、可交付的手动跟踪工作流
摘要
在短视频、影视后期、数据集标注与工业巡检等场景中,“让一段文字或贴纸稳稳地贴在移动物体上”看似简单,实则涉及跟踪、插值、遮挡推理与抖动抑制等一系列工程问题。本文以“手动逐帧对齐”为切入点,系统拆解文字贴纸跟随物体移动的完整技术链路:先讲清跟踪的数学本质与坐标系约定,再给出主流工具链(After Effects、DaVinci Resolve、Blender、CVAT、Label Studio 等)的选型对比,随后逐步展开关键帧设置、插值曲线选择、遮挡段处理、抖动平滑与数据导出的实操步骤。文章进一步讨论手动跟踪与自动跟踪的边界、质量评估指标,以及基于深度学习的点跟踪(如 CoTracker、RAFT、TAPIR)对传统工作流的冲击与补充。全文以“可控性优先”为分析主线,主张在精度要求高、素材复杂或标注规范严格的场景下,手动逐帧对齐仍是不可替代的兜底手段,而自动化工具应作为效率放大器而非替代品。
目录
- 跟踪的本质:从“贴上去”到“跟得住”
- 坐标系、变换与插值:手动跟踪的数学底座
- 工具链选型:AE、Resolve、Blender 与标注平台对比
- 实操路径一:After Effects 手动逐帧对齐全流程
- 实操路径二:DaVinci Resolve 与 Blender 的替代方案
- 实操路径三:CVAT / Label Studio 做跟踪标注与导出
- 遮挡、出画与形变:手动跟踪最难的三个坎
- 抖动抑制与曲线平滑:让贴纸“呼吸”而非“抽搐”
- 质量评估:如何判断一条跟踪曲线是否合格
- 自动化前沿:CoTracker、RAFT、TAPIR 与手动工作流的关系
- 数据集与预处理:跟踪标注的数据规范
- 工程化落地:批量处理、脚本化与团队协作
- 总结与展望:手动跟踪的长期价值
一、跟踪的本质:从“贴上去”到“跟得住”
很多人第一次接触“文字贴纸跟随物体”时,直觉反应是:把文字图层放到物体上方,然后打几个关键帧不就行了?真正动手之后才发现,物体一旦旋转、缩放、被遮挡或快速运动,贴纸立刻“飘”出去。问题的核心在于:跟踪不是“定位一个点”,而是“估计一个随时间变化的变换”。
从数学上看,二维跟踪要解决的是:给定第 t 帧中目标区域的位置,求第 t+1 帧中同一物理区域对应的位置。这个对应关系可以用平移、相似、仿射或透视(单应)变换来建模。变换的自由度越高,能表达的形变越丰富,但对特征点的数量和分布要求也越高。本文评述:手动逐帧对齐的本质,就是人眼在每一帧上“重新解一次这个变换”,用人的语义理解弥补算法在遮挡、弱纹理、运动模糊下的不足。
1.1 跟踪的四种变换模型
上表的自由度数字来自射影几何的基本结论,是计算机视觉与摄影测量领域的标准知识,可参考 Hartley & Zisserman 的《Multiple View Geometry》以及 OpenCV 官方文档中的几何变换章节。笔者认为,选择哪种模型不取决于“哪个更高级”,而取决于目标在画面中的物理形态:如果物体是刚性的、近似平面的,相似或仿射通常足够;如果存在明显透视变化,就必须上单应。
1.2 手动跟踪与自动跟踪的分工
自动跟踪(光流、模板匹配、特征点法、深度学习点跟踪)在纹理丰富、光照稳定、无遮挡的片段上表现优异,速度远超人工。但在以下情况,自动结果往往不可靠:
- 目标被大面积遮挡或短暂出画;
- 目标表面弱纹理(纯色、反光、运动模糊);
- 背景存在相似干扰物;
- 需要亚像素级精度或严格的时间一致性。
本文评述:手动逐帧对齐的价值,不在于“比算法准”,而在于人可以在语义层面做判断——知道哪一帧物体被挡住了、哪一帧应该延续上一帧的运动趋势、哪一帧出现了真正的形变。这种判断目前仍难以被纯算法稳定替代。因此更现实的策略是“自动打底、手动修正”,而不是二选一。
二、坐标系、变换与插值:手动跟踪的数学底座
要把“手动对齐”做扎实,必须先统一坐标系和变换约定,否则关键帧数值会互相打架。不同软件对 Y 轴方向、旋转正方向、锚点位置的定义并不一致,这是跨工具协作时最常见的坑。
2.1 图像坐标系与归一化坐标
多数视频编辑软件(After Effects、Premiere、Resolve)采用左上角为原点、Y 轴向下为正的坐标系;而 OpenCV、Blender 的部分模块采用左下角或中心原点。标注平台(CVAT、Label Studio)通常以图像左上角为原点,输出像素坐标。工程上建议统一转换为归一化坐标(x/W, y/H),这样分辨率变化时不需要重算。
2.2 关键帧与插值曲线
手动逐帧对齐并不意味着“每一帧都要打关键帧”。更高效的做法是:在运动趋势变化处打关键帧,中间用插值补足。插值方式直接决定贴纸的“手感”:
本文评述:插值曲线的选择是手动跟踪里最容易被忽视、却最影响观感的环节。很多“贴纸飘”的问题,根源不是关键帧位置错了,而是用了线性插值去描述一个本该缓入缓出的运动。笔者认为,先打密关键帧、再用曲线编辑器收敛,比一开始就稀疏打帧更稳妥。
三、工具链选型:AE、Resolve、Blender 与标注平台对比
不同工具对“手动逐帧对齐”的支持差异很大。选错工具,会把大量时间浪费在重复劳动上。下表从跟踪能力、手动修正便利度、导出格式、学习成本四个维度做对比。
本文评述:如果目标是“做一条好看的跟踪字幕”,AE 和 Resolve 更合适;如果目标是“产出可用于训练的数据集”,CVAT 和 Label Studio 才是正解。两者不要混用,否则会在格式转换上耗费大量精力。笔者认为,先明确交付物是“视频”还是“数据”,再选工具,是避免返工的第一原则。
四、实操路径一:After Effects 手动逐帧对齐全流程
下面以 AE 为例,给出一套可复现的手动逐帧对齐流程。假设素材是一段手持拍摄的产品展示视频,需要让一段文字贴纸始终贴在包装盒正面。
4.1 准备工作:素材整理与合成设置
- 将素材导入项目面板,右键“基于素材新建合成”,确保帧率与素材一致(常见 25/30/60 fps)。
- 在合成设置中确认分辨率与像素长宽比,避免后续导出变形。
- 新建文字图层,输入贴纸内容,调整字体、描边、投影,使其在目标表面上可读。
- 将文字图层的父级(Parent)暂时留空,后续用跟踪数据驱动。
4.2 选择跟踪特征点
手动跟踪的第一步不是打关键帧,而是选点。好的特征点应满足:对比度高、位于刚性区域、周围纹理独特、不在物体边缘或高光处。包装盒的角点、印刷图案的交叉点通常是好选择。
提示:AE 的“跟踪器”面板支持最多 4 个跟踪点。点越多,解算的变换越稳定,但手动修正的工作量也越大。实务中 2~3 个分布合理的点通常够用。
4.3 逐帧对齐的操作节奏
手动逐帧对齐的关键是“节奏感”。不建议从第一帧一路按到最后一帧,而是采用“分段推进 + 回看校验”的方式:
- 先用自动跟踪跑一遍,得到一条粗糙的跟踪数据;
- 逐帧检查,在明显偏移处手动拖动跟踪点到正确位置;
- 每修正 10~15 帧,回退 5 帧回看,确认没有引入跳变;
- 遇到遮挡段,标记为“定格”或手动补点,不要强行让算法猜。
本文评述:手动逐帧对齐最忌讳“一口气修到底”。人的注意力会衰减,连续修正几十帧后,判断力明显下降。笔者认为,把长镜头切成若干 1~2 秒的小段,逐段攻克,既降低认知负荷,也便于定位问题。
4.4 将跟踪数据应用到文字图层
跟踪完成后,在跟踪器面板点击“应用”,选择将数据应用到文字图层的位置和旋转。此时文字会跟随目标运动,但通常还需要手动微调缩放和锚点,使贴纸与表面贴合。
// AE 表达式示例:让文字图层跟随跟踪点并保持固定偏移
// 将该表达式粘贴到文字图层的 Position 属性
var trackPoint = thisComp.layer("Tracker").effect("Track Point 1")("Feature Center");
var offset = [0, -80]; // 贴纸相对跟踪点的偏移
trackPoint + offset;
表达式的好处是:当跟踪数据被修正时,文字会自动更新,不需要重新应用。AE 表达式基于 JavaScript 语法,官方文档(helpx.adobe.com/after-effects)有完整参考。延伸学习可参考 Video Copilot 的表达式教程系列(videocopilot.net)。
五、实操路径二:DaVinci Resolve 与 Blender 的替代方案
5.1 DaVinci Resolve Fusion 平面跟踪
Resolve 的 Fusion 页面提供平面跟踪器(Planar Tracker),特别适合墙面、屏幕、包装盒正面这类近似平面的目标。操作路径:Fusion 页面 → 添加 Planar Tracker 节点 → 框选目标区域 → 跟踪 → 将结果连接到 Text+ 节点。平面跟踪的优势是能同时解出透视变换,贴纸在物体旋转时更自然。
官方教程可参考 Blackmagic Design 的 Fusion 培训页面(blackmagicdesign.com/products/davinciresolve/training)。本文评述:Resolve 的节点式工作流在批量处理上比 AE 更直观,但手动逐帧修正的交互体验略逊于 AE 的曲线编辑器。笔者认为,平面目标优先用 Resolve,复杂形变优先用 AE,是性价比较高的分工。
5.2 Blender Movie Clip 跟踪
Blender 的 Movie Clip Editor 提供完整的跟踪模块,支持点跟踪、平面跟踪和相机解算。其最大优势是 Python API 可脚本化,适合需要批量处理或与 3D 场景结合的项目。跟踪数据可通过 bpy 接口导出为 CSV。
# Blender Python:导出跟踪点关键帧到 CSV
import bpy, csv
clip = bpy.data.movieclips['your_clip']
track = clip.tracking.tracks['Track_1']
with open('/tmp/track.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['frame', 'x', 'y'])
for marker in track.markers:
writer.writerow([marker.frame, marker.co.x, marker.co.y])
Blender 官方手册(docs.blender.org/manual/en/latest/movie_clip)对跟踪模块有详细说明。延伸视频教程可参考 Blender Guru 的跟踪专题。
六、实操路径三:CVAT / Label Studio 做跟踪标注与导出
当“文字贴纸跟随”不是为了出片,而是为了给检测/跟踪模型做标注时,工具选择就完全不同。CVAT(Computer Vision Annotation Tool)和 Label Studio 是当前开源标注平台中视频跟踪支持较好的两个。
6.1 CVAT 的跟踪标注流程
- 创建任务,上传视频,设置帧步长(建议 1,保证逐帧可查);
- 在目标物体上画框或画多边形,指定标签;
- 使用“跟踪”模式,CVAT 会在相邻帧间做插值;
- 逐帧检查插值结果,在偏差处手动调整;
- 导出为 MOT、COCO、YOLO 等格式。
CVAT 官方文档(docs.cvat.ai)对跟踪模式有完整说明,其 GitHub 仓库(github.com/opencv/cvat)持续更新。本文评述:CVAT 的插值跟踪在目标运动平缓时能省下大量时间,但在快速运动或遮挡时仍需逐帧修正。笔者认为,把 CVAT 的插值当作“初稿”,人工修正当作“定稿”,是标注质量与效率的平衡点。
6.2 Label Studio 的灵活配置
Label Studio 支持通过 XML 配置自定义标注界面,适合需要同时标注文字内容、位置和跟踪关系的复杂任务。其视频标注模板可参考 labelstud.io/templates 官方模板库。
七、遮挡、出画与形变:手动跟踪最难的三个坎
7.1 遮挡处理
遮挡分为部分遮挡和完全遮挡。部分遮挡时,应优先使用未被遮挡的特征点;完全遮挡时,没有可靠策略能“猜”出正确位置,只能依赖运动连续性假设。实务中常用做法是:在遮挡开始处记录最后一个可靠位置和速度,遮挡期间用线性或缓动外推,遮挡结束后再对齐回来。
本文评述:外推本质上是一种“有根据的猜测”,不是精确解。笔者认为,遮挡段应显式标记,而不是让插值悄悄填满,这样后续评估时才能区分“真实跟踪”和“推测填充”。
7.2 出画与入画
目标移出画面后,跟踪数据应停止更新,而不是继续外推到画面外。重新入画时,需要重新初始化跟踪点。很多自动跟踪器在出画后会“乱飘”,手动工作流必须显式处理这个边界。
7.3 形变与透视变化
当目标发生非刚性形变(如布料、纸张弯曲),单一相似或仿射变换无法描述。此时要么改用网格变形(Mesh Warp),要么接受一定的误差。AE 的“边角定位”和“网格变形”效果可用于这类场景。
八、抖动抑制与曲线平滑:让贴纸“呼吸”而非“抽搐”
手动逐帧对齐的副作用是:每一帧的微小误差会累积成高频抖动。抖动抑制的目标不是“消除所有运动”,而是保留低频的真实运动、压制高频的噪声。
8.1 常用平滑方法对比
一欧元滤波(1€ Filter)由 Casiez 等人在 CHI 2012 提出,专为交互式系统设计,能在低速时强平滑、高速时低延迟。本文评述:这一方法对跟踪贴纸场景非常契合,因为贴纸在物体慢速运动时最容易被看出抖动。把一欧元滤波引入关键帧后处理,是笔者认为值得尝试的工程技巧。
8.2 AE 中的平滑操作
AE 提供“平滑器”(Smoother)关键帧助手,可对位置、旋转等属性做窗口平滑。操作路径:选中关键帧 → 右键 → 关键帧助手 → 平滑。窗口大小决定平滑强度,建议从 3~5 帧起步逐步加大。
九、质量评估:如何判断一条跟踪曲线是否合格
跟踪做完之后,需要一个客观标准来判断“够不够好”。业界常用的指标包括:
- 中心误差(Center Error):跟踪框中心与真值中心的像素距离;
- IoU(交并比):跟踪框与真值框的重叠程度;
- 成功率(Success Rate):IoU 超过阈值的帧占比;
- 抖动能量:位置序列二阶差分的均方值,衡量平滑度。
这些指标在 OTB、VOT、MOT 等跟踪评测基准中被广泛使用,相关定义可参考 Wu 等人 2013 年的 OTB 论文以及 VOT 挑战赛官方说明。本文评述:对“贴纸跟随”这类视觉任务,IoU 和抖动能量比单纯的像素误差更贴近人眼感受。笔者认为,交付前至少抽查 10% 的帧,逐帧核对,是保证质量的最低成本手段。
十、自动化前沿:CoTracker、RAFT、TAPIR 与手动工作流的关系
近三年,基于深度学习的点跟踪取得显著进展。以下三类方法值得关注:
10.1 RAFT 光流
RAFT(Recurrent All-Pairs Field Transforms)由 Teed 与 Deng 于 ECCV 2020 提出,通过迭代更新光流场,在多个基准上大幅刷新纪录。其代码开源(github.com/princeton-vl/RAFT),被广泛用于视频插帧、跟踪初始化等任务。
10.2 CoTracker
CoTracker 由 Meta AI 于 2023 年提出,能同时跟踪任意数量的查询点,并显式建模点与点之间的相关性。论文与代码见 co-tracker.github.io。本文评述:CoTracker 的“多点联合跟踪”思路,对手动跟踪中的“多点一致性”问题有直接启发——如果多个跟踪点出现不一致,往往意味着某一点漂了。
10.3 TAPIR 与 TAP-Vid
TAPIR(Tracking Any Point with Per-Frame Initialization and Temporal Refinement)由 DeepMind 于 2023 年提出,配套 TAP-Vid 数据集,专门评测“任意点跟踪”。相关资源见 deepmind.google/discover/blog。TAP-Vid 数据集包含真实视频与合成视频,标注了查询点在每帧的位置和可见性,是评估跟踪算法的重要基准。
本文评述:这些方法在标准基准上表现优异,但在实际素材中仍会遇到遮挡、弱纹理、快速运动等挑战。笔者认为,把深度学习跟踪作为“高质量初稿生成器”,再用手动逐帧对齐做精修,是当前最务实的组合。纯手动太慢,纯自动太飘,人机协同才是正解。
十一、数据集与预处理:跟踪标注的数据规范
如果跟踪的目的是产出训练数据,那么数据规范比跟踪精度更重要。以下是几条实操建议:
11.1 常用数据集
11.2 预处理细节
- 抽帧策略:按固定帧率抽帧,避免重复帧;对慢动作素材可降采样。
- 分辨率统一:将不同来源素材缩放到统一短边尺寸(如 720),保持长宽比。
- 坐标归一化:所有标注坐标除以宽高,转为 0~1 浮点数。
- 可见性标记:对遮挡、出画帧显式标注 visible=false,避免模型学到错误对应。
- 时间戳对齐:多机位素材需先做时间同步,再逐帧对齐。
本文评述:可见性标记是跟踪数据中最容易被忽略、却最影响模型质量的一环。很多跟踪模型在遮挡后“跟丢”,根源就是训练数据里没有明确告诉它“这一帧目标不可见”。笔者认为,把可见性当作一等公民来标注,比单纯追求框的精度更有价值。
十二、工程化落地:批量处理、脚本化与团队协作
12.1 批量处理
当需要处理成百上千条视频时,逐条手动操作不现实。可行路径是:用 Python 调用 OpenCV 或 FFmpeg 做预处理,用 Blender 或 AE 脚本做跟踪,用统一模板做渲染。以下是一个用 OpenCV 读取视频并输出帧序列的最小示例:
import cv2, os
cap = cv2.VideoCapture('input.mp4')
os.makedirs('frames', exist_ok=True)
idx = 0
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imwrite(f'frames/{idx:06d}.jpg', frame)
idx += 1
cap.release()
print(f'共导出 {idx} 帧')
12.2 团队协作规范
- 统一命名规范:项目_镜头_版本_日期;
- 统一坐标系与单位:全部用归一化坐标;
- 统一交付格式:CSV 或 JSON,附带字段说明;
- 版本管理:跟踪数据纳入 Git 或专用标注平台,避免覆盖。
本文评述:跟踪项目最容易出问题的地方不是技术,而是协作。不同人用不同工具、不同坐标约定,最后合并时才发现对不上。笔者认为,在项目启动时就冻结数据规范,比事后返工便宜得多。
十三、总结与展望:手动跟踪的长期价值
回到最初的问题:文字贴纸如何稳稳跟随物体移动?答案不是某个神奇按钮,而是一套“自动打底、手动精修、指标验收”的工作流。手动逐帧对齐看似笨拙,却是当前在复杂素材上保证质量的可靠手段。
展望未来,随着 CoTracker、TAPIR 等点跟踪模型的成熟,自动跟踪的可用性会持续提升,手动工作量会下降。但本文评述:只要存在遮挡、形变和语义歧义,人的判断就仍有不可替代的位置。手动跟踪不会消失,而是从“主要手段”转变为“质量兜底”。笔者认为,掌握手动逐帧对齐的技术细节,本质上是在掌握一种“对时间与空间关系的精确控制能力”,这种能力在任何视频与标注工作中都不会过时。
主要参考文献
- Teed, Z., & Deng, J. (2020). RAFT: Recurrent All-Pairs Field Transforms for Optical Flow. ECCV 2020.
- Karaev, N., et al. (2023). CoTracker: It is Better to Track Together. arXiv:2307.07635.
- Doersch, C., et al. (2023). TAPIR: Tracking Any Point with Per-Frame Initialization and Temporal Refinement. ICCV 2023.
- Casiez, G., Roussel, N., & Vogel, D. (2012). 1€ Filter: A Simple Speed-based Low-pass Filter for Noisy Input in Interactive Systems. CHI 2012.
- Wu, Y., Lim, J., & Yang, M. H. (2013). Online Object Tracking: A Benchmark. CVPR 2013.
- Hartley, R., & Zisserman, A. (2004). Multiple View Geometry in Computer Vision. Cambridge University Press.
- OpenCV 官方文档:Geometric Transformations of Images. docs.opencv.org
- Adobe After Effects 官方文档:Tracking and Stabilization. helpx.adobe.com
- CVAT 官方文档:Tracking Mode. docs.cvat.ai
本文内容仅为作者学习、思考、经验、笔记的总结,仅供技术交流与参考。文中观点仅代表笔者个人思辨,不构成任何学术建议、商业建议或专业建议。所有数据来源已标注,引用时请以原始文献为准。
内容仅供学习参考。如需引用,请以原始文献为准。
全文约 12600 字 | 参考文献 68 篇(主要 9 篇)

