Nearest-Exact, Bilinear, Area, Bicubic, Lanczos 중 무엇을 쓸까? 업스케일 방법 비교
ComfyUI와 FFmpeg의 리사이즈 방법이 가장자리와 디테일에 미치는 영향을 측정했습니다. 선명도, 헤일로, bilinear와 bicubic이 무너지는 축소의 함정까지.
핵심 요약
- 사진과 영상 프레임을 업스케일할 때 디테일을 가장 많이 남기는 것은 Lanczos와 bicubic입니다. 4배 테스트에서 nearest-exact보다 약 5dB, bilinear보다 약 2.5dB 높게 나왔습니다.
- 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를 제공하는데, 완성된 이미지가 아니라 latent에 쓰는 방법입니다.
다섯 가지 방법 쉽게 이해하기
| 방법 | 새 픽셀을 채우는 방식 | 보이는 모습 |
|---|---|---|
| nearest-exact | 가장 가까운 원본 픽셀을 복사 | 각진 사각형, 블러 없음, 헤일로 없음 |
| bilinear | 가장 가까운 2 × 2 픽셀의 평균 | 부드럽고 매끈함, 헤일로 없음 |
| area | 새 픽셀 안에 들어오는 원본 픽셀을 모두 평균 | 축소에서는 깔끔함. 업스케일에서는 도구에 따라 다름 |
| bicubic | 가장 가까운 4 × 4 픽셀에 곡선으로 가중치 | bilinear보다 선명함, 헤일로 약간 |
| lanczos | sinc 기반 곡선으로 더 넓은 범위(Pillow와 FFmpeg에서는 6 × 6)에 가중치 | 가장자리가 가장 또렷하고, 다섯 중 헤일로가 가장 강함 |
참고: ComfyUI에서는 네 가지 방법이 PyTorch의 interpolate 함수를 기본 설정 그대로 거칩니다. lanczos 옵션은 경로가 다릅니다. 각 이미지를 8비트로 변환한 뒤 CPU에서 Pillow 라이브러리로 크기를 바꿉니다. 프레임이 많은 배치에서는 이 경로가 더 느릴 수 있고, 이미지가 8비트로 반올림됩니다.
테스트: 사진 한 장, 방법 다섯 가지, 도구 두 개
디테일이 많은 1920 × 1080 야경 사진을 가로세로 4분의 1(480 × 270)로 줄인 뒤, 각 방법으로 다시 키웠습니다. 그리고 결과마다 원본과 PSNR로 비교했습니다. PSNR은 픽셀 정확도를 나타내는 점수로, 높을수록 원본에 가깝습니다.
| 방법 | ComfyUI, 4× | FFmpeg, 4× | ComfyUI, 2× |
|---|---|---|---|
| nearest-exact(FFmpeg: neighbor) | 30.40dB | 30.40dB | 36.55dB |
| bilinear | 33.04dB | 33.04dB | 40.35dB |
| area | 30.40dB | 33.04dB | 36.55dB |
| bicubic | 35.39dB | 35.14dB | 43.62dB |
| lanczos | 35.56dB | 35.58dB | 44.46dB |
다른 샘플 사진 세 장도 순서가 같았습니다. 다만 가장 부드러운 사진에서는 4×에서 bicubic이 Lanczos를 0.07dB 앞섰습니다. 눈에 띄는 결과는 두 가지입니다.
- 업스케일할 때 "area"는 두 도구에서 같은 방법이 아닙니다. ComfyUI에서는 nearest-exact와 똑같은 이미지가, FFmpeg에서는 bilinear와 똑같은 이미지가 나왔습니다. area 평균은 원본 픽셀 여러 개가 출력 픽셀 하나에 들어갈 때, 즉 축소할 때만 의미가 있습니다.
- Lanczos와 bicubic은 차이가 작습니다. 4×에서 0.2~0.4dB 차이는 눈으로 구분하기 어렵습니다. 더 큰 차이는 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 | 그곳에서 모아레를 억제하는 옵션은 이 둘뿐 |
| FFmpeg나 편집기에서 축소 | bicubic, lanczos, bilinear | 모두 사전 블러를 함. 취향대로 선택 |
| ComfyUI에서 latent 업스케일 | bislerp 또는 bilinear | latent에는 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.39dB)를 받았고, 헤일로는 Lanczos보다 약간 작았습니다. 스케일링에 관한 더 자세한 내용은 720p를 1080p로 업스케일하는 법을 참고하세요.
리샘플링 방법으로 부족할 때
위의 모든 방법은 정해진 공식으로 기존 픽셀에서 새 픽셀을 계산합니다. 어느 것도 얼굴과 벽을 구분하지 못하고, 카메라가 기록하지 않은 질감을 되살리지 못합니다. 어떤 방법을 골라도 4× 결과가 흐릿하다면, 설정이 잘못된 것이 아니라 리샘플링의 한계입니다.
AI 업스케일러는 다르게 작동합니다. 학습된 모델이 실제 이미지에서 배운 내용을 바탕으로 그럴듯한 디테일을 예측하고, 그 과정에서 압축 블록과 노이즈도 제거할 수 있습니다. 대신 더해진 디테일은 예측이라는 점을 감안해야 합니다. AI 업스케일링 vs bicubic·Lanczos에서 두 방식을 나란히 비교하고, 480p에서 4K로: AI가 되살릴 수 있는 것에서는 AI로도 한계에 이르는 지점을 보여 줍니다.
KwaFlux에서 둘을 비교하는 방법
KwaFlux의 비교 화면은 리샘플링한 버전을 AI 결과 옆에 보여 주므로, 내 영상에서 차이를 직접 판단할 수 있습니다.
- 클립이나 이미지를 가져와 화질 복구를 엽니다.
- 출력 해상도를 2×나 4K처럼 필요한 크기로 설정합니다.
- 1·3·5초 미리보기를 렌더링합니다. 계정은 필요 없습니다.
- 슬라이더 비교(Slider compare)를 엽니다. '전' 쪽은 원본을 출력 크기로 확대한 화면이고, '후' 쪽에는 'AI 초해상도 후'라는 라벨과 함께 해상도가 표시됩니다.

사진은 AI 이미지 초고화질에서 같은 순서로 하면 됩니다. 라이선스 하나에 영상 모듈 23개, 사진 모듈 15개, 오디오 도구 4개, 자막·파일 도구가 포함되며, 크레딧이나 분당 요금이 없습니다. 영구 라이선스의 정가는 1회 결제 $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는 AI 영상 초고화질과 AI 이미지 초고화질을 사용자 GPU에서 실행합니다. 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.9dB로 눈으로 보기 어려운 수준입니다. 가장자리 오버슈트도 조금 더 큽니다. 대부분의 영상에는 어느 쪽이든 괜찮고, 텍스트에 헤일로가 보이면 bicubic을 고르세요.
ComfyUI의 nearest-exact는 무슨 뜻인가요?
픽셀 중심 반올림 문제를 고친 최근접 이웃(nearest-neighbor) 리사이즈입니다. 새 픽셀마다 가장 가까운 원본 픽셀을 복사하므로 가장자리는 날카롭고 색은 정확하게 유지됩니다. 사진이 아니라 픽셀 아트와 마스크에 알맞습니다.
업스케일할 때 area를 써도 되나요?
아니요. ComfyUI에서 정수 배율로 area 업스케일을 하면 nearest-exact와 같은 결과가 나옵니다. area는 합쳐지는 픽셀들을 평균하는 축소용 방법입니다.
애니메이션 업스케일에는 어떤 방법이 좋나요?
모든 애니메이션에 맞는 방법이 따로 정해져 있지는 않습니다. 단색 위주로 칠한 애니메이션에는 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 확인)


