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 放大的領域。
目錄
- 什麼是放大演算法?
- 用白話說明五種演算法
- 我們的測試:一張照片、五種演算法、兩套工具
- 光暈:邊緣更銳利的代價
- ComfyUI 縮小圖片的陷阱
- 該選哪種演算法?
- FFmpeg:對應的 flags 寫法
- 重新取樣演算法不夠用的時候
- 在 KwaFlux 裡比較兩種放大
- 問題排解
- 常見問題
什麼是放大演算法?
放大演算法,又稱重新取樣濾鏡,是程式在改變圖片尺寸時,從現有像素計算出新像素的規則。它決定要參考多少個相鄰像素,以及每個像素占多少權重。它無法憑空變出拍攝時沒記錄到的細節,只能決定中間補出來的像素看起來要平滑還是銳利。
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 換成這兩者之一。

光暈:邊緣更銳利的代價
bicubic 和 Lanczos 看起來比較銳利,是因為它們的權重曲線有一段低於零。在硬邊旁邊,這會讓暗的一側比原本更暗、亮的一側比原本更亮,超出兩側的原始數值。我們的測試用的是從灰階 40 跳到 215 的階梯邊緣,放大 4 倍:
| 演算法 | 邊緣旁最暗的值 | 邊緣旁最亮的值 |
|---|---|---|
| nearest-exact 和 bilinear | 40(沒有過衝) | 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 |

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.pngFFmpeg 另外還提供 spline,在我們的測試中分數介於 bicubic 和 Lanczos 之間(35.39 dB),光暈比 Lanczos 稍小。更多縮放細節,請見如何把 720p 放大到 1080p。
重新取樣演算法不夠用的時候
上面每一種演算法,都是用固定公式從舊像素算出新像素。它們都分不出人臉和牆壁,也找不回攝影機沒拍到的紋理。如果不管選哪種演算法,4 倍放大的結果看起來都很糊,那是重新取樣的極限,不是設定錯了。
AI 放大工具的原理不同。訓練過的模型會根據它從真實影像中學到的東西,預測出合理的細節,同時還能去除壓縮色塊和雜訊。代價是,補上的細節是預測出來的。AI 放大與 bicubic、Lanczos 的比較並列比較了這兩種做法,480p 放大到 4K:AI 能救回多少則說明了連 AI 也有做不到的地方。
在 KwaFlux 裡比較兩種放大
KwaFlux 的對比檢視會把重新取樣的版本和 AI 結果並排,讓你用自己的素材判斷差異:
- 匯入片段或圖片,打開 畫質修復。
- 設定輸出解析度為你需要的尺寸,例如 2 倍或 4K。
- 渲染 1、3 或 5 秒的預覽。不需要帳號。
- 打開滑桿對比。「處理前」那一側是放大到輸出尺寸的來源畫面;「處理後」那一側會標示 AI 超解析後的解析度。

照片也能用同樣的步驟,從 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,付費前先用自己的素材免費預覽效果——無需註冊,在你的 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 用來放大潛在空間的演算法;潛在空間是擴散模型運作時使用的壓縮表示。它沿著曲線、而不是直線來混合潛在空間的數值。只有潛在空間的放大節點才提供這個選項。
參考資料
- ComfyUI source, `nodes.py` (ImageScale, LatentUpscale) and `comfy/utils.py` (common_upscale, lanczos, bislerp) (2026-10-29 查閱)
- PyTorch documentation, `torch.nn.functional.interpolate` (2026-10-29 查閱)
- Pillow documentation, "Filters" (resampling filters) (2026-10-29 查閱)
- FFmpeg documentation, "Scaler Options" (sws_flags) (2026-10-29 查閱)


