萬聖節特惠不給糖,就修片!三檔同時降價,永久授權立省 $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 個像素加權比 bilinear 銳利,有輕微光暈
lanczos 演算法用以 sinc 函數為基礎的曲線,為更大的範圍加權(Pillow 和 FFmpeg 裡是 6 × 6)邊緣最銳利,光暈也是這幾種裡最明顯的

補充:在 ComfyUI 裡,有四種演算法是以預設參數呼叫 PyTorch 的 interpolate 函式。lanczos 走的是另一條路:它先把每張圖片轉成 8 位元,再用 Pillow 函式庫在 CPU 上縮放。處理很長的影格批次時,這條路可能比較慢,而且畫面會被捨入成 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 以 0.07 dB 小勝 Lanczos。有兩個結果特別值得注意:

  • 放大時,「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 節點來縮小圖片,例如縮到符合模型的輸入尺寸。這正是演算法影響最大的地方。

縮小圖片時,對新尺寸來說太細的圖案必須先模糊掉,否則它們會混疊成原本沒有的假圖案,也就是所謂的鋸齒失真(aliasing)或摩爾紋。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

FFmpeg 另外還提供 spline,在我們的測試中分數介於 bicubic 和 Lanczos 之間(35.39 dB),光暈比 Lanczos 稍小。更多縮放細節,請見如何把 720p 放大到 1080p。

重新取樣演算法不夠用的時候

上面每一種演算法,都是用固定公式從舊像素算出新像素。它們都分不出人臉和牆壁,也找不回攝影機沒拍到的紋理。如果不管選哪種演算法,4 倍放大的結果看起來都很糊,那是重新取樣的極限,不是設定錯了。

AI 放大工具的原理不同。訓練過的模型會根據它從真實影像中學到的東西,預測出合理的細節,同時還能去除壓縮色塊和雜訊。代價是,補上的細節是預測出來的。AI 放大與 bicubic、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 匯出。

照片也能用同樣的步驟,從 AI 圖片超清開始。一份授權內含 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 圖片超清。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 好嗎?

通常是,但差距很小。在我們的八組比較中,Lanczos 有七組分數較高,最多高 0.9 dB,肉眼很難看出來。它對邊緣的過衝也稍微多一點。大多數素材用哪一種都可以;如果文字周圍出現光暈,就選 bicubic。

ComfyUI 的 nearest-exact 是什麼意思?

它是修正了像素中心捨入問題的最近鄰縮放。每個新像素都複製距離最近的原始像素,所以邊緣依然分明,顏色也保持精確。它適合像素畫和遮罩,不適合照片。

放大時該用 area 嗎?

不應該。在 ComfyUI 裡,用 area 以整數倍放大,結果和 nearest-exact 相同。area 是為縮小設計的,它會把合併在一起的像素取平均。

動畫放大要用哪種演算法?

沒有哪一種演算法適合所有動畫。平塗上色的動畫常用 bicubic 起步;Lanczos 的線條更銳利,但深色輪廓線周圍的光暈也更明顯。

放大演算法會影響檔案大小嗎?

只有一點點。決定檔案大小的是輸出解析度和編碼器設定。比較銳利的演算法會留下較多細微邊緣,在相同畫質設定下,可能會多花一點位元率。

bislerp 是什麼?

它是 ComfyUI 用來放大潛在空間的演算法;潛在空間是擴散模型運作時使用的壓縮表示。它沿著曲線、而不是直線來混合潛在空間的數值。只有潛在空間的放大節點才提供這個選項。

參考資料

  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 編輯部審閱,依據產品研究紀錄與公開發布的規格。