圖像縮放算法:最近鄰、雙線性、雙三次與 Lanczos
GDESIGN
設計發布: 更新: 10 分鐘閱讀

圖像縮放算法:最近鄰、雙線性、雙三次與 Lanczos

放大圖像時,必須產生原圖中不存在的新像素值;縮小圖像時,則要捨棄細節,同時避免把精細圖案變成錯誤形狀。兩者都是信號重建與重新採樣,因此選用的濾波器會決定銳利度、模糊、混疊與振鈴現象。

日文原文發布: 2026-04-27

縮放不只是改變網格尺寸

點陣圖像是有限的樣本陣列。將 100 × 100 的圖像放大到 200 × 200,需要四倍的輸出像素;縮小時則必須把多個來源像素的資訊合併。

  • 放大:重建既有樣本之間的數值。
  • 縮小:先移除較小網格無法表示的頻率,再重新採樣。

把來源圖像視為連續信號的採樣結果,就能理解為什麼沒有任何一種方法適合所有圖像。

Nyquist–Shannon 採樣定理與混疊

與 Harry Nyquist、Claude Shannon 相關的採樣定理指出:若要無失真地重建頻寬受限信號,採樣頻率必須高於信號最高頻率的兩倍。若縮小圖像前沒有充分濾波,高於新 Nyquist 極限的頻率會折回較低頻率。

在圖像中,這會表現為摩爾紋、鋸齒狀斜邊、閃爍細節,或精細圖案變成另一種圖案。因此,高質素縮圖在概念上是:

低通濾波 → 在較小網格上採樣

最近鄰:保留像素邊界

最近鄰插值法會為每個輸出像素中心選擇距離最近的來源像素。各種實現採用的座標慣例可能不同;以下範例會對齊輸入與輸出的像素中心,並在圖像邊緣限制採樣位置。

u = (x + 0.5) / scaleX - 0.5
v = (y + 0.5) / scaleY - 0.5
output(x, y) = input(
  clamp(round(u), 0, inputWidth - 1),
  clamp(round(v), 0, inputHeight - 1)
)

它速度快,也不會產生中間色。這正是像素藝術、遮罩與許多圖表所需要的效果;但用於照片放大會產生明顯方塊,縮小時若處理不慎也會嚴重混疊。

雙線性:混合四個相鄰像素

雙線性插值會混合周圍四個像素。若 fxfy 是來源網格內的相對距離:

output = (1-fx)(1-fy) I00
       +    fx (1-fy) I10
       + (1-fx)   fy  I01
       +    fx    fy  I11

它的計算成本低,也廣泛受到繪圖硬件加速。缺點是畫面容易變柔和,尤其在反覆轉換後更為明顯。

雙三次與 Mitchell–Netravali:一系列三次濾波器

雙三次插值通常使用 4 × 4 鄰域與可分離的三次核函數。「雙三次」是一系列濾波器的統稱,而不是單一通用方法;不同參數會改變銳利度、模糊與振鈴程度。

Catmull 與 Rom 在 1974 年描述了一種局部插值樣條;Keys 在 1981 年發表廣泛採用的三次卷積公式;Mitchell 與 Netravali 則在 1988 年提出雙參數家族。其中常用的均衡設定為 B = 1/3C = 1/3

範例典型特性
Catmull–Rom銳利、通過原始樣本點,強烈邊緣附近可能振鈴
三次 B 樣條平滑且相對柔和
Mitchell–Netravali在模糊與振鈴之間取得平衡

Lanczos:加窗 sinc 濾波器

理想的頻寬受限重建核是 sinc 函數,但它的支撐範圍無限大,實現上並不實際。Lanczos 核將 sinc 乘上另一個 sinc 視窗,並把範圍限制在有限半徑內:

sinc(0) = 1
sinc(x) = sin(πx) / (πx),  x ≠ 0
L(x) = sinc(x) × sinc(x/a),  |x| < a
L(x) = 0,                         |x| ≥ a

a = 2a = 3 是常見的實用選擇。Lanczos 在縮小圖像時通常能保留精細細節,但強烈明暗交界可能出現亮暗光暈。增加波瓣數會提高運算量,也不保證每張圖像都更好看。

如何選擇濾波器

用途實用起點
像素藝術或索引遮罩最近鄰
即時紋理顯示雙線性
一般縮圖雙三次或 Mitchell–Netravali
照片縮小Lanczos 或設計良好的面積濾波器
大幅縮小面積/方框濾波或分階段縮小
創意式大幅放大AI 超解像度,但應註明細節是估算產生

務必檢查邊緣、細線、文字與重複圖案。人像上看起來銳利的濾波器,可能在介面圖形上產生無法接受的光暈。

CSS image-rendering 表示偏好,不指定固定核函數

img {
  image-rendering: auto;
  image-rendering: smooth;
  image-rendering: high-quality;
  image-rendering: pixelated;
  image-rendering: crisp-edges;
}

CSS Images 將這些值定義為繪製偏好,並未要求每個瀏覽器與裝置使用完全相同的數學核函數。需要保留清楚像素邊界時可使用 pixelated,並針對目標瀏覽器與縮放倍率進行測試。

AI 放大無法還原真實原貌

超解像度模型可以根據訓練數據中學到的模式,生成看似合理的紋理。這可能產生好看的結果,但新增細節是估算出來的,而不是從來源圖像量度所得。

對證據、科學量度、醫療工作,或任何重視忠實度多於外觀的用途,應保留原始檔,並使用行為可記錄的確定性重新採樣方法。

重點整理

  • 縮放會重建信號,並在新的網格上採樣。
  • 縮小時需要低通濾波,以降低混疊。
  • 最近鄰插值保留離散像素;雙線性速度快但較柔和。
  • 雙三次是一系列具有不同取捨的三次濾波器。
  • Lanczos 是實用的加窗 sinc 濾波器,畫面可很銳利但可能振鈴。
  • AI 放大會創造合理細節,並不等同於還原證據。

參考資料及來源

編輯說明

本文使用 AI 協助編輯,並在發布前由編輯核對。內容仍可能包含事實、理解或時效上的錯誤;作出重要決定前,請查閱所列的一手資料或官方文件。

相關工具

相關文章