万圣节特惠不给糖,就修片!三档同时降价,永久授权立省 $30截至 11 月 2 日 23:59(美西时间)

查看定价

nearest-exact、bilinear、area、bicubic 还是 lanczos?放大算法实测对比

ComfyUI 和 FFmpeg 里的缩放算法对边缘和细节做了什么?我们实测了清晰度、光晕,以及缩小时 bilinear、bicubic 会出摩尔纹的问题。

要点速览

  • 放大照片和视频画面,lanczos 和 bicubic 保留的细节最多。我们的 4 倍放大测试里,它们比 nearest-exact 高约 5 dB,比 bilinear 高约 2.5 dB。
  • lanczos 和 bicubic 看起来更锐,是因为它们会在边缘处“冲过头”,高反差的线条旁边会出现一圈淡淡的光晕。
  • 在 ComfyUI 里按整数倍放大时,area 的结果和 nearest-exact 逐像素相同;在 FFmpeg 里,area 放大的效果等同 bilinear。
  • 在 ComfyUI 里缩小图片,请选 lanczos 或 area。那里的 bilinear 和 bicubic 不做抗锯齿,会留下明显的摩尔纹。
  • 这些算法都不会增加细节。想要细节,得用 AI 放大,那是另一类工具。

放大时选 lanczos 或 bicubic,边缘细节保留得最多,代价是轻微的光晕。nearest-exact 只适合像素画和遮罩;bilinear 偏软,但没有光晕。缩小则是另一回事:在 ComfyUI 里用 bilinear 和 bicubic 缩小会出摩尔纹,应该改用 lanczos 或 area。

这几个名字会出现在 ComfyUI 的 Upscale Image 节点、FFmpeg 的 scale 滤镜,以及大多数图片编辑软件里。本文会讲清每种算法在做什么、我们实测出了什么、不同任务该选哪一种,以及传统缩放算法的尽头在哪里、AI 放大又从哪里开始。

目录

  1. 什么是放大算法
  2. 五种算法,一句话说清
  3. 我们的测试:一张照片,五种算法,两个工具
  4. 光晕:边缘更锐的代价
  5. ComfyUI 里缩小图片的陷阱
  6. 该选哪种算法?
  7. FFmpeg:对应的 flags 写法
  8. 缩放算法不够用的时候
  9. 在 KwaFlux 里对比两种放大
  10. 问题排查
  11. 常见问题

什么是放大算法

放大算法(也叫重采样滤镜)是程序改变图像尺寸时,用已有像素算出新像素的规则。 它决定参考周围多少个像素、每个像素占多大权重。它造不出拍摄时没记录下来的细节,只决定中间补出来的像素看起来是更柔和还是更清脆。

ComfyUI 的 Upscale Image 节点提供五种:nearest-exact、bilinear、area、bicubic 和 lanczos。处理潜空间(latent)的放大节点把 lanczos 换成了 bislerp,后者是给潜空间数据用的,不是给成品图片用的。

五种算法,一句话说清

算法新像素怎么来看起来
nearest-exact(最近邻)直接复制距离最近的原像素一格一格的方块,不模糊,没有光晕
bilinear(双线性)对最近的 2 × 2 个像素取平均柔和平滑,没有光晕
area(区域平均)把落进新像素范围的原像素全部取平均缩小时干净;放大时要看具体工具
bicubic(双三次)按一条曲线给最近的 4 × 4 个像素加权比双线性锐,有轻微光晕
lanczos 算法用基于 sinc 函数的曲线给更大范围加权(Pillow 和 FFmpeg 里是 6 × 6)边缘最清脆,光晕也是这几种里最明显的

旁注: 在 ComfyUI 里,其中四种算法都走 PyTorch 的 interpolate 函数,用的是默认参数。lanczos 走的是另一条路:先把每张图转成 8 位,再在 CPU 上用 Pillow 库缩放。所以批量处理很多帧时它可能更慢,而且画面会被取整到 8 位。

我们的测试:一张照片,五种算法,两个工具

我们找了一张细节丰富的 1920 × 1080 城市夜景照片,把宽高各缩到四分之一(480 × 270),再用每种算法放大回去,然后用 PSNR 和原图比较。PSNR 衡量像素层面有多接近原图,数值越高越接近。

算法ComfyUI 放大 4 倍FFmpeg 放大 4 倍ComfyUI 放大 2 倍
nearest-exact(FFmpeg 里叫 neighbor)测得 30.40 dB测得 30.40 dB测得 36.55 dB
bilinear(双线性)测得 33.04 dB测得 33.04 dB测得 40.35 dB
area(区域平均)测得 30.40 dB测得 33.04 dB测得 36.55 dB
bicubic(双三次)测得 35.39 dB测得 35.14 dB测得 43.62 dB
lanczos 算法测得 35.56 dB测得 35.58 dB测得 44.46 dB

另外三张样张的排序相同,只有画面最柔和的那张,4 倍放大时 bicubic 比 lanczos 高了 0.07 dB。有两点值得注意:

  • 放大时,两个工具里的 area 不是一回事。 在 ComfyUI 里,它算出的画面和 nearest-exact 逐像素相同;在 FFmpeg 里,它和 bilinear 逐像素相同。区域平均只有在多个原像素合并成一个新像素时才起作用,也就是缩小的时候。
  • lanczos 和 bicubic 差距很小。 4 倍放大时 0.2 到 0.4 dB 的差别肉眼很难分辨。真正拉开差距的,是从 bilinear 换到这两种之一。
同一区域的六张裁切:原图,以及 4 倍放大后的 nearest-exact、bilinear、bicubic、lanczos 和 area,每张标注了 PSNR

光晕:边缘更锐的代价

bicubic 和 lanczos 显得更锐,是因为它们的加权曲线有一段低于零。到了硬边缘旁边,暗的一侧会被压得比原值更暗,亮的一侧会被推得比原值更亮。我们用一条从灰度 40 跳到 215 的边缘,放大 4 倍测了一下:

算法边缘旁最暗的值边缘旁最亮的值
nearest-exact 和 bilinear40(没有过冲)215(没有过冲)
FFmpeg 的 bicubic灰度 25灰度 230
ComfyUI 的 bicubic灰度 20.8灰度 234.2
lanczos(Pillow 和 FFmpeg)灰度 19灰度 236

在普通照片上,这一点很少能看出来。但在文字、线稿、界面截图,以及暗色天空里的亮灯旁边,它会变成一圈细细的亮边或暗边。

在 ComfyUI 里,bicubic 还可能让数值超出纯白或纯黑的范围。我们的夜景照片放大 4 倍后,裁剪之前的取值范围是正常范围的 -4.6% 到 113%。裁剪会把超出的部分藏起来,但很亮的区域会损失一点层次。

ComfyUI 里缩小图片的陷阱

很多人也用同一个 Upscale Image 节点来缩小图片,比如把图缩到模型要求的输入尺寸。恰恰在这里,算法选错影响最大。

缩小图片时,那些对新尺寸来说太细的纹理必须先被模糊掉,否则它们会折叠成并不存在的假图案,也就是混叠或摩尔纹。PyTorch 的 interpolate 只有在你明确要求时才会先做这一步模糊,而 ComfyUI 没有要求。所以在 ComfyUI 里,用 bilinear 和 bicubic 缩小时参考的像素太少了。

我们把一张由细密圆环组成的测试图从 1024 像素缩到 256 像素,量了残留的假图案有多强:0 最理想,90 左右说明假图案一点没被压住。

算法残留的假图案
ComfyUI 的 bicubic测得 93.3
ComfyUI 的 nearest-exact测得 90.1
ComfyUI 的 bilinear测得 73.4
ComfyUI 的 area测得 29.3
ComfyUI 的 lanczos(经 Pillow)测得 11.8
FFmpeg 的 bicubic测得 13.0
FFmpeg 的 lanczos测得 11.8
FFmpeg 的 bilinear测得 10.3
同一张圆环测试图用 ComfyUI 的 bicubic、bilinear、area 和 lanczos 缩到 256 像素:前两张布满了假圆环

FFmpeg 和 Pillow 会自动先模糊再缩小,所以它们的平滑类算法表现都不错。在 ComfyUI 里缩小,请用 lanczos 或 area。

该选哪种算法?

任务选择理由
放大照片或视频画面lanczos 或 bicubic细节最多;自然画面上的光晕通常看不出
放大文字、界面或线稿bilinear,嫌软再换 bicubic避免锐利边缘旁出现描边
放大像素画或遮罩nearest-exact(最近邻)保住硬像素边缘和精确数值
在 ComfyUI 里缩小lanczos 或 area那里只有这两种能压住摩尔纹
在 FFmpeg 或修图软件里缩小bicubic、lanczos 或 bilinear 均可都会先模糊再缩小,按喜好选
在 ComfyUI 里放大潜空间bislerp 或 bilinear潜空间节点不提供 lanczos

小技巧: 如果放大之后还要锐化,或者再过一遍 AI 模型,放大算法就没那么重要了,因为下一步会重新塑造边缘。默认用 bicubic 就行,把精力放在后面那一步上。

FFmpeg:对应的 flags 写法

FFmpeg 的 scale 滤镜在不写 flags 时默认用 bicubic。我们实测,不写 flags 得到的文件和 flags=bicubic 逐字节相同。

# Upscale to 1080p with Lanczos
ffmpeg -i input.mp4 -vf "scale=1920:1080:flags=lanczos" -c:v libx264 -crf 18 -c:a copy output.mp4

# Keep the aspect ratio: set the height, let FFmpeg pick an even width
ffmpeg -i input.mp4 -vf "scale=-2:2160:flags=lanczos" -c:v libx264 -crf 18 -c:a copy output_2160p.mp4

# Pixel art: nearest neighbor, exact 4x
ffmpeg -i sprite.png -vf "scale=iw*4:ih*4:flags=neighbor" sprite_4x.png

第一条把视频放大到 1080P,第二条保持原比例、只指定 2160 的高度,第三条把像素画按最近邻精确放大 4 倍。FFmpeg 还有 spline,在我们的测试里得分介于 bicubic 和 lanczos 之间(35.39 dB),光晕比 lanczos 略小。更多缩放细节见怎样把 720p 视频放大到 1080p。

缩放算法不够用的时候

上面每一种算法,都是用固定公式从旧像素算出新像素。它们分不清人脸和墙面,也找不回相机当时没拍下来的纹理。如果 4 倍放大后不管选哪种算法都发软,那是缩放算法的上限,不是设置选错了。

AI 放大的思路不同:训练好的模型根据它对真实画面的认识,预测出合理的细节,顺便还能去掉压缩方块和噪点。代价是,补出来的细节是预测出来的。AI 放大与双三次、Lanczos 插值的区别把两种思路放在一起比较,480P 放大到 4K:AI 能找回什么则讲了 AI 也有做不到的地方。

在 KwaFlux 里对比两种放大

KwaFlux 的对比视图会把传统放大的结果和 AI 结果并排显示,你可以在自己的素材上判断差别:

  1. 导入一段视频或一张图片,打开画质修复。
  2. 把输出分辨率设成需要的尺寸,比如 2× 或 4K。
  3. 渲染 1、3 或 5 秒的预览,不需要账号。
  4. 打开滑杆对比。“处理前”一侧是把源文件拉到输出尺寸的结果,“处理后”一侧标注了 AI 超分后的分辨率。
KwaFlux 画质修复:对一段 480p(854×480)的秋叶片段用智能修复,预览区是前后对比滑杆
KwaFlux 1.0.8 截图。预览是对一段缩到 480p 的样例片免费渲染的 1 秒结果,是预览,不是 4K 导出。

照片也一样,可以在图片增强里按同样步骤操作。一份授权包含 23 个视频模块、15 个照片模块、4 个音频工具,以及字幕和文件工具,没有点数,也不按分钟收费;永久授权原价 199.99 美元,一次付清。

问题排查

现象可能原因解决办法
文字或灯光周围有一圈细亮边lanczos 或 bicubic 的过冲换成 bilinear,或者用 FFmpeg 的 bicubic(过冲更小)
在 ComfyUI 里缩小后出现波纹或假圆环bilinear 或 bicubic 没做抗锯齿缩小时改用 lanczos 或 area
ComfyUI 里用 area 放大,画面一格一格整数倍放大时 area 就等于 nearest-exact放大改用 bicubic 或 lanczos
大批量帧用 lanczos 很慢ComfyUI 通过 Pillow 在 CPU 上逐帧缩放长序列改用 bicubic,或在 ComfyUI 外缩放
放大 4 倍后怎么都发软源文件里本来就没有这些细节用 AI 放大,或者少放大一些

结语

放大选 lanczos 或 bicubic,像素必须保持锐利时选 nearest-exact;在 ComfyUI 里缩小,选 lanczos 或 area。算法改变的是边缘的样子,造不出细节。源文件里没有的细节,要交给 AI 放大。

把 AI 放大和传统缩放放在一起看

KwaFlux 在你自己的 GPU 上运行 AI 视频放大和图片增强。AI 处理在你的 GPU 上本地完成,媒体文件不会为了处理而上传。可在 Windows 10(64 位,1809 或更新版本)、Windows 11,以及搭载 Apple Silicon 的 macOS 12 或更新版本上运行。预览不需要账号:视频可预览 1、3 或 5 秒,图片可预览整张。仅在导出、转换、文件修复和从链接下载文件时需要登录并购买付费方案。

下载 KwaFlux · 查看方案

用你自己的素材试试效果

下载 KwaFlux,付费前先用自己的素材免费预览效果——无需注册,在你的 GPU 上处理,处理不需要上传媒体文件。 视频预览可选 1、3或5 秒;防抖预览可选 5、15或30 秒。

常见问题

lanczos 比 bicubic 好吗?

通常略好一点。我们 8 组对比里有 7 组 lanczos 得分更高,最多高 0.9 dB,肉眼很难分辨;它在边缘处的过冲也稍大一些。大多数素材用哪种都行,文字旁边出现光晕时选 bicubic。

ComfyUI 里的 nearest-exact 是什么意思?

它就是最近邻缩放,只是修正了像素中心点的取整方式。每个新像素都复制离它最近的原像素,所以边缘保持锐利、颜色保持精确。适合像素画和遮罩,不适合照片。

放大时该用 area 吗?

不该。在 ComfyUI 里按整数倍放大,area 的结果和 nearest-exact 相同。area 是为缩小设计的,作用是把要合并的像素取平均。

动漫用哪种放大算法比较好?

没有通用的答案。平涂风格的动漫,可以先试 bicubic;lanczos 线条更利落,但黑色描线旁边的光晕也更明显。

放大算法会影响文件大小吗?

只有一点点。文件大小主要由输出分辨率和编码设置决定。更锐的算法会留下更多细小边缘,在同样的画质设置下可能多占一点码率。

bislerp 是什么?

它是 ComfyUI 用来放大潜空间数据的算法。潜空间是扩散模型内部使用的压缩表示。bislerp 沿着曲线在潜空间数值之间过渡,而不是走直线,只出现在潜空间放大节点里。

参考资料

  1. ComfyUI source, `nodes.py` (ImageScale, LatentUpscale) and `comfy/utils.py` (common_upscale, lanczos, bislerp) (2026-10-29 查阅)
  2. PyTorch documentation, `torch.nn.functional.interpolate` (2026-10-29 查阅)
  3. Pillow documentation, "Filters" (resampling filters) (2026-10-29 查阅)
  4. FFmpeg documentation, "Scaler Options" (sws_flags) (2026-10-29 查阅)
  • 放大
  • 超分辨率
  • 视频画质

KwaFlux 作者兼编辑。文章经 KwaFlux 编辑部审阅,依据产品调研记录与公开发布的规格。