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 を選びましょう。ComfyUI の bilinear と bicubic はアンチエイリアスを行わないため、強いモアレが残ります。
- どの方法も、ディテールを足すことはできません。それには AI アップスケーラーが必要で、これは別の種類のツールです。
拡大には Lanczos か bicubic を選びましょう。エッジのディテールがいちばん残る代わりに、わずかなハローが出ます。nearest-exact はピクセルアートやマスク専用です。bilinear はやわらかめですが、ハローは出ません。縮小は事情が違います。ComfyUI では bilinear と bicubic でモアレが出るので、lanczos か area を使ってください。
これらの名前は、ComfyUI の Upscale Image ノード、FFmpeg の scale フィルター、そしてほとんどの画像編集ソフトに出てきます。この記事では、それぞれの方法が何をしているのか、実測で何がわかったのか、用途ごとにどれを選べばよいか、そして従来のリサンプリングの限界と AI アップスケールの出番を解説します。
目次
- アップスケール方法とは
- 5 つの方法をざっくり解説
- テスト:写真 1 枚、方法 5 つ、ツール 2 つ
- ハロー:シャープなエッジの代償
- ComfyUI で縮小するときの落とし穴
- どの方法を選ぶか
- FFmpeg で対応する flags
- リサンプリングでは足りないとき
- KwaFlux で両方を比べる方法
- トラブルシューティング
- よくある質問
アップスケール方法とは
アップスケール方法(リサンプリングフィルター)とは、画像のサイズを変えるときに、もとのピクセルから新しいピクセルを計算するためのルールです。近くのピクセルをいくつ参照し、それぞれをどれだけ重視するかを決めます。撮影時に記録されなかったディテールを作り出すことはできず、間のピクセルをどれだけなめらかに、またはくっきり見せるかを決めるだけです。
ComfyUI の Upscale Image ノードには、nearest-exact、bilinear、area、bicubic、lanczos の 5 つがあります。潜在空間(latent)用のノードでは lanczos の代わりに bislerp が入っています。これは完成した画像ではなく、latent 向けの方法です。
5 つの方法をざっくり解説
| 方法 | 新しいピクセルの埋め方 | 見た目 |
|---|---|---|
| nearest-exact | いちばん近いもとのピクセルをコピー | ブロック状の四角。ぼけもハローもない |
| bilinear | 近くの 2 × 2 ピクセルを平均 | やわらかくなめらか。ハローはない |
| area | 新しいピクセルの範囲に入るもとのピクセルをすべて平均 | 縮小ではきれい。拡大ではツールによって異なる |
| bicubic | 近くの 4 × 4 ピクセルを曲線で重み付け | bilinear よりシャープ。わずかなハロー |
| lanczos | もっと広い範囲(Pillow と FFmpeg では 6 × 6)を sinc ベースの曲線で重み付け | エッジがいちばんくっきり。ハローもこの中でいちばん強い |
補足: ComfyUI では、4 つの方法が PyTorch の interpolate 関数を初期設定のまま使って処理されます。lanczos だけは別の経路で、各画像を 8 ビットに変換し、CPU 上で Pillow ライブラリを使ってリサイズします。フレーム数の多いバッチではこちらのほうが遅くなることがあり、画像も 8 ビットに丸められます。
テスト:写真 1 枚、方法 5 つ、ツール 2 つ
細部の多い 1920 × 1080 の夜景写真を、幅と高さをそれぞれ 4 分の 1(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 |
ほかのサンプル写真 3 枚でも順位は同じでした。例外は、いちばんやわらかい写真の 4 倍で、bicubic が Lanczos を 0.07 dB 上回ったことだけです。目を引く結果は 2 つあります。
- 拡大時の「area」は、2 つのツールで別の方法になる。 ComfyUI では nearest-exact とピクセル単位で同じ画像になり、FFmpeg では bilinear とピクセル単位で同じ画像になりました。area の平均化に意味があるのは、複数のもとのピクセルが 1 つの出力ピクセルにまとまる場合、つまり縮小するときだけです。
- Lanczos と bicubic の差は小さい。 4 倍での 0.2〜0.4 dB の差は、目ではほとんどわかりません。大きく伸びるのは、bilinear からどちらかに変えたときです。

ハロー:シャープなエッジの代償
bicubic と Lanczos がシャープに見えるのは、重み付けの曲線が 0 を下回る部分を持つからです。そのため、くっきりしたエッジのすぐ隣では、暗い側がもとの値より暗く、明るい側がもとの値より明るくなります。テストでは、階調 40 から 215 に切り替わる段差を 4 倍に拡大しました。
| 方法 | エッジ隣のいちばん暗い値 | エッジ隣のいちばん明るい値 |
|---|---|---|
| nearest-exact、bilinear | 40(オーバーシュートなし) | 215(オーバーシュートなし) |
| FFmpeg の bicubic | 25 | 230 |
| ComfyUI の bicubic | 20.8 | 234.2 |
| Lanczos(Pillow と FFmpeg) | 19 | 236 |
写真ではこれに気づくことはあまりありません。文字、線画、UI のスクリーンショット、暗い空を背景にした明るい光などでは、明るい、または暗い細い縁取りとして見えてきます。
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 |

FFmpeg と Pillow は自動で事前にぼかすので、なめらか系の方法はどれも良い結果になります。ComfyUI で縮小するときは、lanczos か area を使いましょう。
どの方法を選ぶか
| 用途 | 選ぶ方法 | 理由 |
|---|---|---|
| 写真や動画のフレームを拡大 | lanczos か bicubic | ディテールがいちばん残る。自然な画像ではハローはたいてい見えない |
| 文字、UI、線画を拡大 | bilinear。やわらかすぎるなら bicubic | シャープなエッジのまわりの縁取りを避けられる |
| ピクセルアートやマスクを拡大 | nearest-exact | ピクセルのくっきりした境目と正確な値を保てる |
| ComfyUI で画像を縮小 | lanczos か area | ComfyUI でモアレを抑えられるのはこの 2 つだけ |
| FFmpeg や画像編集ソフトで縮小 | bicubic、lanczos、bilinear | どれも事前にぼかすので、好みで選んでよい |
| ComfyUI で latent を拡大 | bislerp か bilinear | latent では Lanczos を選べない |
ヒント: 拡大のあとにシャープ化の処理や AI モデルをかけるなら、方法の違いはそれほど重要ではありません。次の処理でエッジが作り直されるからです。無難な初期値として bicubic を選び、そのあとの処理に時間をかけましょう。
FFmpeg で対応する flags
FFmpeg の scale フィルターは、flags を指定しない限り bicubic を使います。テストでは、指定しなかった場合のファイルは 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 アップスケーラーのしくみは違います。学習済みのモデルが、実際の画像から学んだことをもとに、もっともらしいディテールを予測します。その過程で、圧縮によるブロックノイズやその他のノイズを取り除くこともできます。その代わり、足されたディテールはあくまで予測です。2 つのアプローチの比較は AI アップスケールと bicubic・Lanczos の違い で、AI でも取り戻せない部分は 480p から 4K へ:AI で取り戻せるもの で解説しています。
KwaFlux で両方を比べる方法
KwaFlux の比較ビューでは、リサンプリングした映像と AI の結果を並べて表示できるので、ご自身の素材で違いを確かめられます。
- クリップまたは画像を 読み込み、画質修復 を開きます。
- 出力解像度 を、2× や 4K など必要なサイズに設定します。
- 1・3・5 秒のプレビューを出します。 アカウントは不要です。
- スライダー比較(Slider compare)を開きます。ビフォー側には出力サイズに拡大したソースが、アフター側には AI でアップスケールした解像度のラベルが付いた結果が表示されます。

写真の場合は、AI画像エンハンサー で同じ手順を使えます。1 つのライセンスに、動画モジュール 23 種、写真モジュール 15 種、音声ツール 4 種、字幕とファイルのツールが含まれ、クレジットや分単位の料金はありません。永久ライセンスの定価は $199.99 で、支払いは 1 回きりです。
トラブルシューティング
| 症状 | 考えられる原因 | 対処 |
|---|---|---|
| 文字や光のまわりに細い明るい縁取りが出る | 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 が少しだけ上です。8 回の比較のうち 7 回で Lanczos のスコアが高く、差は最大 0.9 dB で、目ではほとんどわかりません。そのぶん、エッジのオーバーシュートも少し大きくなります。ほとんどの素材ではどちらでもかまいません。文字にハローが見えるなら bicubic を選びましょう。
ComfyUI の nearest-exact とは何ですか?
ピクセル中心の丸め方を修正した、最近傍法(nearest neighbor)のリサイズです。新しいピクセルはいちばん近いもとのピクセルをコピーするので、エッジはくっきりしたまま、色も正確に保たれます。ピクセルアートやマスクには向いていますが、写真には向いていません。
拡大に area を使ってもいいですか?
おすすめしません。ComfyUI では、area で整数倍に拡大すると nearest-exact と同じ結果になります。area は縮小のための方法で、1 つにまとまるピクセルを平均します。
アニメの拡大にはどの方法が向いていますか?
どんな場合にも合う方法はありません。フラットな塗りのアニメなら、まずは bicubic から試すのが一般的です。Lanczos は線がくっきりしますが、暗い輪郭線のまわりのハローも強くなります。
アップスケール方法でファイルサイズは変わりますか?
変わるとしてもわずかです。サイズを決めるのは、出力解像度とエンコーダーの設定です。シャープな方法ほど細かいエッジが多く残るので、同じ画質設定でもビットレートが少し増えることがあります。
bislerp とは何ですか?
ComfyUI で latent を拡大するための方法です。latent とは、拡散モデルが処理に使う圧縮された表現のことです。bislerp は latent の値を直線ではなく曲線に沿って混ぜ合わせます。使えるのは latent のアップスケール用ノードだけです。
参考資料
- 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 閲覧)


