想象一下,你翻出家里的老胶片放映机,想重温小时候的生日聚会。可胶片放出来的画面,中间总是有一大块黑斑——那是当年保存不当,胶片被霉菌和划痕啃掉了一块。小偷在画面里闪过的那一幕,脸正好缺了一半;外婆切蛋糕的笑脸,正中间正好被一个污渍盖住。你想把这块缺失的画面补回来,但老胶片里的人物还在移动,小狗还在跑来跑去,光补一张照片根本不够。 视频修复要做的,就是当一段视频的某些区域“坏死”时,参考前后帧里还活着的像素,把坏掉的地方一点点填回去。它靠的不是凭空想象,而是三条“侦查线索”:光流传播(顺着运动轨迹找像素)、时域注意力传播(翻遍整本老相册找最相似的参考画面)、双向传播(从头到尾修一遍,再从尾到头校一遍,互相印证)。这套思路被整合在 ProPainter 这样的开源工具里,已经从论文走进了工业界的短视频、老片修复和视频后期流水线。
掌握视频修复,你就能处理所有“视频内容缺失”类问题——从老电影去划痕、去污点,到监控画面去遮挡物、视频中抠掉路人补背景。这是 AI 视频编辑工程师的必修技能之一。
可视化演示
展示ProPainter视频修复三大核心技术:光流引导像素传播、时域注意力多帧搜索加权融合、双向传播遮挡处理与修复融合。
本节配有交互动效(进入视口后自动加载,约 3KB)。
光流引导像素传播 光流计算帧间像素位移向量,将已知帧像素搬运至遮罩区 前后帧双向传播覆盖缺失区域 flow(t-1→t) = warp(frame_t-1, opticalFlow) 光流传播对中小区域遮挡修复高效,大区域需生成模型补充。
修复任务概述
回到那卷老胶片。当你按下放映键,最头疼的不是“有一帧坏了”,而是“有一串帧在同一位置都坏了”。每次画面追到那个位置,就出现一块黑斑。修复师的第一件事,就是拿一支笔在胶片上把坏掉的区域圈出来——这个“圈”在技术里叫掩码(Mask)。它告诉算法:屏幕上哪些像素是病人,需要治疗;哪些是健康的,可以借来组织。
视频修复的任务,就是在一个视频序列里,给定一个掩码标记的破损区域,自动生成合理的像素填进去。它不是凭空捏造,而是像拼拼图一样,从其它帧的对应位置“借”缺失的内容。这个任务和图像修复(Inpainting)最大的不同,是多了一个时间维度:画面里的物体在动,背景在变,补出来的每一块都必须跟上运动。
形式化地说,一个破损视频的退化过程可以写成:
修复的最终目标,就是让 \( \mathbf{V}_{fill} \) 足够自然,以至于人眼看不出这块是后来补上去的。下面几节,我们逐个拆解 ProPainter 用来得到 \( \mathbf{V}_{fill} \) 的三件法宝。
- 输入视频 \( \mathbf{V}_{in} \)表示拍摄出来的、带有破损的原始视频,就是我们肉眼看到的有黑斑的那卷胶片。
- 掩码矩阵 \( \mathbf{M} \)一个与画面同尺寸的 0/1 矩阵,1 标记破损位置,0 标记完好位置,相当于修复师在胶片上画的圈。
- 修复结果 \( \mathbf{V}_{fill} \)算法为破损区域生成的填充像素,是我们要重点打磨的“补丁”。
- 逐元素合成 \( \odot,\ (1-\mathbf{M}) \)完好位置保留原像素,破损位置替换成补丁像素,两者按掩码无缝拼接成最终输出。
光流传播原理
修补老胶片时,最依赖的线索是“运动”。你看到小狗在院子里从左往右跑,那它在下一帧里大概会出现在左边还是右边?答案是:顺着它跑的方向猜。如果第三帧里小狗的脸被污渍挡住,而第二帧里它的脸是完好的,你只要知道它在这两帧之间跑动了几步,就能把第二帧的那张脸“平移”到第三帧的正确位置上。
这个“从一帧运动到另一帧”的位移图,就叫光流(Optical Flow)。光流是视频修复的导航仪:它告诉你画面里每个像素点在相邻帧之间“搬了几步、朝哪个方向搬”。有了导航仪,我们就可以把参考帧的像素沿运动轨迹“搬到”破损帧,覆盖掉坏像素。这个搬家过程在图形学中叫 Warp(重映射)。
光流传播的核心公式极简,就是把一个已知像素沿着光流场搬到目标时间点:
光流传播很像修复师照着运动轨迹追着贴补丁:只要运动估计得准,补丁就能严丝合缝。但光流也有失手的时候——比如物体被遮住、光流算错,这时就需要下一节的“时域注意力”救场。
- 目标像素 \( \mathbf{P}_{t} \)第 \( t \) 帧上某个位置缺失的像素值,是我们要补的目标。
- 参考像素 \( \mathbf{P}_{t+k} \)第 \( t+k \) 帧上对应同一个物理物体、但尚未被遮挡的像素,是补丁的来源。
- 光流场 \( \mathbf{F}_{t+k\to t} \)从第 \( t+k \) 帧指向第 \( t \) 帧的逐像素运动矢量,记录了物体在这段时间内的位移。
- Warp 算子 \( \mathcal{W} \)按光流场把参考帧像素重新采样到目标位置,相当于“照着地图把补丁搬过去”。
时域注意力传播
光流导航仪也有失灵的时候:画面里物体快速闪动、被噪声干扰,运动轨迹变得不可靠。这时候修复师会换一种思路——不只看紧邻的一两帧,而是把整卷胶片翻出来,找“看起来像”的画面。比如外婆的脸在第三帧坏了,但第十帧里她做着同样的表情,第三十帧里光线类似,这些都能拿来参考。
这就是时域注意力传播(Temporal Attention Propagation)的直觉:让每个破损像素“投票”,从所有帧中选出特征最相似的候选像素,再用相似度作为权重把它们融合起来。它不依赖精确的运动轨迹,而是靠“长得像”来推理。在 Transformer 架构中,这个机制可以统一写成:
时域注意力是“广撒网”式的修复,它能在光流失效时找到远距离的相似线索。ProPainter 把光流传播和时域注意力编成了两阶段流水线:先由光流传出大部分内容,再用注意力修补光流遗漏的角落。
- 查询向量 \( Q_i \)破损位置 i 的特征编码,描述“这一块缺了什么、本来长什么样”。
- 键向量 \( K_j \)第 j 个候选位置的特征编码,描述“我有什么”。它与 \( Q_i \) 的点积衡量两者的匹配程度。
- 缩放点积 \( Q_iK_j^{\top}/\sqrt{d} \)点积越大代表越相似;除以特征维度 \( d \) 的平方根,防止内积数值过大导致 softmax 饱和。
- Softmax 归一化 \( \alpha_{ij} \)把所有候选位置的相似度变成和为 1 的权重——越像的候选拿到的注意力越大。
- 值向量加权求和 \( \hat{P}_i \)\( V_j \) 是第 j 个候选的实际像素内容,按权重 \( \alpha_{ij} \) 融合,得到最终补全结果。
双向传播修复
修补胶片时,聪明的修复师会补两遍:先从头到尾顺着放一遍胶片,把能补的补上;再倒着放一遍,把第一遍遗漏的补丁再校一遍。为什么要这么麻烦?因为破损区域往往不只一处,前面的破损没补好,后面的帧就会把错误“传染”下去。倒着再修一遍,等于给每一帧找了一个“从未来回头看”的机会。
这正是双向传播(Bidirectional Propagation)的核心思想:既用过去帧预测当前帧(正向传播),也用未来帧回推当前帧(反向传播),最后把两个方向的补丁按置信度融合。这样即使某一帧两头都被破坏,也能从两个方向同时收到的信息中拼接出结果:
双向传播让每一帧都成为“前后夹击”的受益者。补完这一轮,大部分肉眼可见的洞都被填上了,但还有一个难啃的骨头——被物体挡住的区域。
- 正向传播 \( \mathcal{P}_{\text{fwd}}(\mathbf{V}_{t-1}) \)用第 \( t-1 \) 帧、沿正向光流地把像素传到第 \( t \) 帧,像从过去寄来的一封信。
- 反向传播 \( \mathcal{P}_{\text{bwd}}(\mathbf{V}_{t+1}) \)用第 \( t+1 \) 帧、沿反向光流往第 \( t \) 帧送像素,像从未来寄回的一封信。
- 权重因子 \( \lambda \)一个 0 到 1 之间的数,调节“过去”和“未来”谁更可信;破损离哪边更近,哪边权重就更大。
- 加权合成 \( \mathbf{V}_t \)将两封信按信任度合并成一个补丁,互相纠错、抵消单方向传播的偏差。
遮挡处理技巧
老胶片里有个经典难题:画面前景里有人走过,把后面壁炉上的老座钟挡得严严实实。你很想把钟表补出来,但这一帧里它根本不存在——它被“遮挡”了。修复师的办法是:别在这一帧里找钟,回到钟还没被挡住的那几帧里,把它剪下来,贴回正确的位置。
遮挡处理的关键,是识别出“这个区域之所以补不上,是因为物体被挡了,而不是光流错了”。算法需要做三件事:检测遮挡、搜索可见帧、置信度加权融合。其中置信度加权可以看成是“找证人打分”——每个候选像素提供一条证词,可信度高的证词权重大:
遮挡处理的本质是“换一个时间做视角补全”——这个位置现在看不见,不代表永远看不见。把“看不见”当成“待查证”而非“无解”,正是时域修复比单帧修复高明的地方。
- 候选像素 \( \mathbf{P}_{j\to t}(x) \)从第 j 帧用光流/注意力搬过来的、针对位置 \( x \) 的候选补丁。
- 匹配代价 \( d_j(x) \)候选补丁与当前帧周围内容的差异程度——差异越小,说明这个证词越可信。
- 置信度权重 \( w_j(x) \)对匹配代价做负指数变换,让代价小的候选拿到更大的权重;温度系数 \( \tau \) 控制打分的“软硬程度”。
- 加权归一化合成 \( \mathbf{V}_{fill}(x) \)所有候选按置信度加权平均,分母保证权重归一化,最终输出可信度最高的补全结果。
时域一致性
修复终于接近尾声,但如果直接把每帧单独补完再拼起来播放,你会发现画面像接触不良的老灯管一样闪烁:同一面墙,一会儿偏亮,一会儿偏暗;同一片天空,一会儿偏蓝,一会儿偏灰。这是因为每一帧的补丁都只盯着“自己这一帧好看”,却没有跟邻居打招呼。
时域一致性(Temporal Consistency)要求修复结果在时间轴上平稳变化。就好比把相册翻成动画片,每张照片之间不能跳调子,颜色、纹理、光影都要一脉相承。实现上,最朴素的手段就是在训练或优化时,加一项“相邻帧不许差太多”的约束:
时域一致性让修复结果从“每帧都完美”走向“整段都自然”。有了这道保险,补出来的胶片才能经得起逐帧放映的考验。
- 逐帧差分 \( \mathbf{V}_t-\mathbf{V}_{t-1} \)计算第 t 帧与前一帧逐像素的差值,差分结果越小,说明两帧越连贯。
- L2 范数的平方 \( \|\cdot\|_2^2 \)把差值的每个分量的平方求和,既放大较大偏差,又处处可微,方便梯度下降。
- 时间求和 \( \sum_{t=2}^{T} \)把整个视频所有相邻帧对的“跳动量”累加,总跳动越小,视频越稳定。
实操与评估
修好一卷胶片之后,验收标准是什么?修复师会拿着放大镜对比原片和修复片,看细节有没有糊、颜色有没有偏。在工程上,这个“放大镜”就是各种质量评估指标。最常用的是 PSNR(峰值信噪比)和 SSIM(结构相似度)。PSNR 衡量像素级的误差有多大,数值越高代表误差越小:
在实操中,ProPainter 这类工具把上述思想全部封装:输入一段视频和一张掩码,输出补全后的视频。工程师要调的参数主要是传播轮数、时域窗口大小和光流预计算精度。拿到结果后,先用 PSNR/SSIM 跑一遍客观指标,再放一遍视频做主观验收——毕竟最终拍板的是人眼,而不是公式。
- 像素峰值 \( \text{MAX}_I \)图像像素的最大可能值,8 位图像通常取 255。
- 均方误差 MSE所有破损位置的重建像素与真实像素差值的平方平均,是“平均每处错了多少”。
- 信噪比转换 \( 10\cdot\log_{10}(\cdot) \)把误差的倒数取对数放大,压缩量纲,让小的误差变化也能被直观感知。
- PSNR 值通常 30dB 以上人眼看不出明显损伤,25dB 以下就有明显画质劣化;SSIM 则额外评估亮度、对比度、结构的相似度。
AI 应用场景
老电影与视频档案修复
阶段:视频后期修复(数字化档案增强)
解决的问题:大量上世纪的老电影胶片存在划痕、污渍、霉斑和胶片断裂等成片损伤,人工逐帧修补一部 90 分钟的电影需要数周。AI 视频修复能用光流传播和时域注意力,自动识别破损掩码并从相邻帧补全,把修复时间压缩到以小时计。
具体案例:某电影资料馆将《马路天使》4K 修复项目中的划痕去除环节交给 ProPainter 流水线,算法先在 GPU 上做光流预计算,再双向传播补全损坏帧,最后人工只审核 10% 的疑难镜头。
视频物体删除与背景补全
阶段:视频编辑(内容擦除)
解决的问题:短视频拍摄时画面里闯入了路人、电线杆、或不想保留的旧标志,传统剪辑只能暴力裁剪或用马赛克遮挡。用 ProPainter 的思路,在掩码上把物体框出来,模型会自动从前后帧中找到被挡住的背景并补全,实现“无痕擦除”。
具体案例:某旅游博主拍摄 Vlog 时,背景中始终有一辆违停的货车。她把货车区域生成掩码,用视频修复模型在 20 秒的片段中把货车完全抹掉,背景里的街道被前后帧自然补全,成片完全看不出编辑痕迹。
监控视频遮挡物移除
阶段:智能安防(视频增强预处理)
解决的问题:监控摄像头前常有树叶、车辆或施工围挡周期性遮挡关键区域,导致关键事件无法辨认。传统方法是等遮挡消失,但可能错过取证窗口。视频修复可以先补全被遮挡帧,让后续识别模型看到“完整”画面。
具体案例:某园区安防系统在周界摄像头上叠了一层 ProPainter 预处理模块,当检测到画面中某个 ROI 区域被树叶遮挡时,自动从该区域可见的历史帧中补全当前帧,使得人员越界检测的漏报率降低 37%。
Python 演示
import numpy as npimport cv2 def calc_flow(src, dst): """计算从 src 到 dst 的稠密光流""" ga = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY) gb = cv2.cvtColor(dst, cv2.COLOR_BGR2GRAY) return cv2.calcOpticalFlowFarneback(ga, gb, None, 0.5, 3, 15, 3, 5, 1.2, 0) def warp(img, flow): """按光流场把 img 的像素搬到目标位置""" h, w = img.shape[:2] vx, vy = flow[..., 0], flow[..., 1] xs, ys = np.meshgrid(np.arange(w), np.arange(h)) map_x = (xs + vx).astype(np.float32) map_y = (ys + vy).astype(np.float32) return cv2.remap(img, map_x, map_y, cv2.INTER_LINEAR, borderMode=cv2.BORDER_REPLICATE) def repair_video(frames, mask, radius=2, iters=3): """简化版视频修复:光流传播 + 双向近邻帧加权融合""" T = len(frames) cache = {} frames = [f.copy() for f in frames] holes = [(mask > 127) for _ in range(T)] for _ in range(iters): for i in range(T): if holes[i].sum() == 0: continue acc = np.zeros_like(frames[i], dtype=np.float64) acc_w = np.zeros((frames[i].shape[0], frames[i].shape[1], 1), dtype=np.float64) for dist in range(1, radius + 1): for j in (i - dist, i + dist): if not (0 <= j < T): continue key = (i, j) if key not in cache: cache[key] = calc_flow(frames[i], frames[j]) cand = warp(frames[j], cache[key]) w = np.ones_like(acc_w) / dist acc += cand * w acc_w += w filled = (acc / np.maximum(acc_w, 1e-6)).astype(np.uint8) prev = frames[i].copy() frames[i] = np.where(holes[i][..., None], filled, frames[i]) diff = np.mean(np.abs(frames[i].astype(np.int16) - prev.astype(np.int16)), axis=2) holes[i] = holes[i] & (diff > 30) return frames if __name__ == "__main__": h = w = 128 T = 10 frames = [] x = 10 for t in range(T): img = np.zeros((h, w, 3), np.uint8) cv2.rectangle(img, (x, 50), (x + 40, 90), (120, 200, 255), -1) x += 10 frames.append(img) frames = np.stack(frames) mask = np.zeros((h, w), np.uint8) mask[35:105, 55:75] = 255 repaired = repair_video(frames, mask, radius=2, iters=3) region = mask > 0 mse = np.mean((repaired[5].astype(np.float32) - frames[5].astype(np.float32)) ** 2, axis=2) rmse = np.sqrt(mse[region].mean()) print("PSNR: {:.2f} dB".format(10 * np.log10(255.0 ** 2 / (rmse ** 2 + 1e-8))))
cv2.calcOpticalFlowFarneback(...)计算两帧间逐像素运动矢量,就是“运动轨迹导航仪”。cache[key]缓存光流结果,避免同一个帧对重复计算,对应工程里的预计算提速。cand = warp(frames[j], cache[key])把第 j 帧的像素按运动轨迹搬到当前帧,是补丁搬运的核心操作。w = np.ones_like(acc_w) / dist距离越远的帧权重越低,体现“近邻帧更可信”的直觉。acc += cand * w; acc_w += w把所有候选补丁加权累加,模拟时域注意力中的加权融合。np.where(holes[i][..., None], filled, frames[i])只在掩码标记的破损位置替换补丁,完好像素原样保留。holes[i] = holes[i] & (diff > 30)如果补丁填进去后几乎没有改变原画面,说明该处已稳定,从洞集合中移除。10 * np.log10(255.0 ** 2 / (rmse ** 2 + 1e-8))计算修复帧的 PSNR,作为客观验收指标。
常见误区
误区“视频不就是一串图片吗?我用 PS 的污点修复工具把每一帧都修一遍不就行了?” 很多初学者试图把单帧图像修复算法直接套到视频上,逐帧独立处理。
正解逐帧修复最大的问题是忽略时间信息。画面里的物体在移动,如果每一帧都独立“猜”,同一位置在不同帧会猜出不同的纹理,播放时就会疯狂闪烁。视频修复的核心价值恰恰在于利用时间维度:用前后帧的对应像素共同决定补什么,才能保证运动连贯。这也是 ProPainter 用光流和时域注意力而不是单帧 inpainting 的原因。
为何常见:图像修复资源多、上手快,而“视频 = 多张图”的直觉又太强,导致人们低估了时间维度的重要性。
误区“光流传播不是很简单吗?把前面那一帧的图像直接粘到破损区域上,就完事了。”
正解直接拷贝会犯严重的位置错误——物体已经移动了,前一帧的像素坐标对应不上当前帧的物体位置。真正正确的做法是先算光流场(记录每个像素从哪里运动到了哪里),再按光流做 warp 重采样,把参考帧像素“播”到正确的位置。如果不做 warp,你会看到补丁里出现“拖影”或“错位鬼影”。
为何常见:人对“补丁”的理解停留在 PS 图层覆盖的层面,没有意识到视频帧之间天然存在一个运动映射层。
误区“遮挡物把背景完全盖住了,这一帧里根本没有背景的信息,不可能修得出来。”
正解遮挡只意味着当前帧看不见,不代表视频里所有帧都看不见。物体在运动,遮挡物在移动,背景总会在某一帧重新暴露出来。时域注意力传播恰恰擅长这个:它跨越数十帧搜索与破损区域相似的像素,把“被挡住”的信息从其它时刻“借”回来,再按匹配度加权融合。所以大区域甚至完全被挡的区域,只要在时间上有露出来的机会,就能补。
为何常见:人们习惯用单张照片的视角看问题,忽略了视频是“同一世界在不同时刻的多次采样”,信息可以由时间换空间。
误区“模型评测报告里 PSNR 高了 0.5dB,那这个模型一定更好,直接上线!”
正解PSNR 衡量的是像素级误差,它偏好“保守的平滑”——很多模型通过把补丁模糊化来压低 MSE,使 PSNR 虚高,但人眼看着反而“糊了”。真实场景评估必须结合 SSIM(结构相似度)和 LPIPS(感知相似度),更重要的是做主观播放测试:看运动是否连贯、闪烁是否存在。PSNR 是重要的参考指标,但不是唯一的验收标准。
为何常见:PSNR 计算简单、可复现性强,容易成为团队唯一的 KPI,但人类视觉系统对结构、纹理和时序的敏感度远超逐像素误差。
面试题
Q1. 在视频修复中,掩码(Mask)矩阵的作用是什么?
- A.标记画面中亮度较高的区域
- B.标记需要修复的破损区域位置← 正确答案
- C.记录物体的运动速度方向
- D.保存视频的色彩分布信息
答案:B。掩码是与画面同尺寸的 0/1 矩阵,1 标记破损位置、0 标记完好位置,是退化模型 \( \mathbf{V}_{out}=\mathbf{V}_{in}\odot\mathbf{M}+\mathbf{V}_{fill}\odot(1-\mathbf{M}) \) 的核心输入。它不记录亮度、运动或色彩,只是“哪里坏了”的标记。
Q2. 光流传播解决的核心问题是什么?
- A.提升视频画面的分辨率和清晰度
- B.利用运动轨迹将邻帧像素搬到破损处← 正确答案
- C.压缩视频文件以节省存储空间
- D.自动调整视频的白平衡和饱和度
答案:B。光流描述像素在两帧之间的运动位移,光流传播就是按这个位移场做 warp,把参考帧的像素“搬”到当前帧的破损位置。它与分辨率、压缩或调色无关,核心是“沿运动轨迹搬像素”。
Q3. 在时域注意力传播中,Q、K、V 分别代表什么?
- A.查询、键、值三个特征向量← 正确答案
- B.质量、关键帧、速度三个参数
- C.队列、核函数、变量三个对象
- D.阈值、像素、矢量三个分量
答案:A。Q(Query)是破损位置的查询特征,K(Key)是候选位置的键特征,V(Value)是候选位置的实际内容。通过 Q 与 K 的相似度计算注意力权重,再对 V 加权求和得到补全结果,这正是 Transformer 注意力机制的标准三件套。
Q4. 双向传播相比单向传播的主要优势是什么?
- A.计算速度比单向传播快一倍
- B.能同时参考过去和未来帧的信息← 正确答案
- C.完全不需要计算光流场
- D.只能修复静止不变的背景区域
答案:B。双向传播同时使用正向光流(过去帧)和反向光流(未来帧)来补全当前帧,并按置信度加权融合。未来帧能为当前遮挡区域提供“事后目击”,这是单向传播做不到的。它比单向传播更稳,但不会更快,也不能省去光流。
Q5. 处理遮挡区域时,算法的正确做法是什么?
- A.将遮挡区域直接填充为黑色
- B.保持遮挡区域保持原样不动
- C.从其他帧查找可见像素并加权融合← 正确答案
- D.用随机纹理填满遮挡区域
答案:C。遮挡区域在当前帧不可见,但在其他帧可能可见。正确做法是查找候选帧中该物体可见的像素,按置信度权重加权融合。涂黑、不动或随机纹理都会产生明显的伪影。
Q6. 时域一致性损失项 \( \mathcal{L}_{\text{temp}}=\sum\|\mathbf{V}_t-\mathbf{V}_{t-1}\|_2^2 \) 主要用来解决什么问题?
- A.修复结果的帧间闪烁和跳变← 正确答案
- B.修复结果的分辨率过低
- C.光流估计的计算耗时过长
- D.视频文件的色彩过于饱和
答案:A。该损失直接惩罚相邻帧之间的像素差异,压缩帧间“抖动”,从而避免修复结果播放时出现闪烁。它不直接改善分辨率,也不优化光流速度或色彩饱和度。
Q7. 关于 PSNR 指标,下列说法正确的是?
- A.PSNR 越低代表修复质量越高
- B.PSNR 越高代表目标区域误差越小← 正确答案
- C.PSNR 与像素误差完全无关
- D.PSNR 只能用来衡量光流精度
答案:B。PSNR = \( 10\log_{10}(\text{MAX}^2/\text{MSE}) \),MSE 越小 PSNR 越大,说明重建像素与真实像素越接近。它是衡量像素级误差的指标,不直接评估光流。
Q8. 下列哪些属于视频修复技术的典型应用场景?
- A.老电影胶片划痕和污渍去除← 正确答案
- B.视频中路人或物体的无痕删除← 正确答案
- C.视频文件的格式转换与转码
- D.监控画面中的遮挡物补全← 正确答案
答案:ABD。视频修复适合一切“内容缺失”场景:老片损伤修复、物体删除补背景、监控遮挡补全都是典型应用。格式转码不涉及内容缺失,属于容器与编码层面的处理。
Q9. 关于光流传播,下列说法正确的有哪些?
- A.光流记录了像素在两帧间的运动位移← 正确答案
- B.Warp 按光流把参考帧像素搬到目标位置← 正确答案
- C.光流传播不需要掩码就能知道补哪
- D.光流不准确时修复结果会引入扭曲← 正确答案
答案:ABD。光流本质是运动矢量场,Warp 依此搬移像素;光流误差会直接造成补丁错位和扭曲。但光流传播必须依赖掩码才知道“该补哪里”,因此 C 错误。
Q10. 视频修复结果的常用评估指标有哪些?
- A.PSNR 峰值信噪比← 正确答案
- B.SSIM 结构相似度← 正确答案
- C.FPS 每秒帧数
- D.LPIPS 感知相似度← 正确答案
答案:ABD。PSNR 衡量像素误差,SSIM 衡量结构相似度,LPIPS 衡量感知质量,三者都是修复质量评估常用指标。FPS 是运行速度指标,与修复质量无关。