밴딩 잡는 법 — 그라데이션에 계단이 생기는 4가지 지점
렌더는 깨끗하게 나왔습니다. 그런데 하늘을 보면 위에서 아래로 부드럽게 어두워져야 할 파란색이, 가로로 잘린 띠 대여섯 개로 보입니다. 손으로 그린 것처럼 경계선이 또렷해요. 화면을 가까이 보면 더 선명해지고, 뒤로 물러나면 조금 옅어집니다. 그런데 사라지지는 않습니다. 이 띠가 밴딩입니다.
인물 뒤 배경의 어두운 그라데이션, 스튜디오 조명이 벽에 만든 부드러운 폴오프, 안개 낀 원경. 밴딩(banding, 계단처럼 끊긴 띠)은 늘 이런 곳에서 나옵니다. 디테일이 빽빽한 나뭇잎이나 피부 텍스처에서는 한 번도 본 적이 없으실 거예요. 이게 첫 번째 단서입니다.
저도 처음에는 렌더를 다시 걸었습니다. 샘플을 두 배로 올리고, 디노이즈를 껐다 켜고, 출력 포맷을 PNG로 바꿔봤습니다. 띠는 그대로였습니다. 렌더가 잘못된 게 아니었기 때문입니다.

밴딩을 “화질” 아니면 “압축” 탓이라고 여기는 오해
밴딩을 처음 만나면 대개 이 둘 중 하나를 의심하게 됩니다.
- 화질이 나빠서 — 해상도가 낮거나 렌더 품질이 부족해서 뭉갠 것 같다
- 압축 때문에 — JPEG로 저장하면서 색이 뭉쳐 띠가 됐다
둘 다 아주 틀린 말은 아닙니다. JPEG 압축은 실제로 완만한 영역을 뭉쳐 밴딩을 더 도드라지게 만듭니다. 그래서 이 설명이 그럴듯하게 들리는 거죠.
그런데 이 관점으로 설명이 안 되는 사실
같은 이미지를 무손실 PNG로 저장해도 띠는 그대로 있습니다. 압축으로 버려진 정보가 원인이라면 무손실 저장에서는 없어져야 합니다. 없어지지 않아요.
한 걸음 더 가보겠습니다. 아직 파일로 저장하지도 않은 상태, 렌더러의 뷰어 안에서도 띠가 보입니다. 해상도를 4K로 올리면 띠가 더 넓고 매끈해질 뿐 개수는 그대로입니다. 무엇보다, 같은 이미지 안에서 나뭇잎과 피부는 멀쩡한데 하늘만 띠가 집니다. 화질이 나쁜 거라면 전체가 같이 나빠야 합니다.
즉 밴딩은 정보를 “손상”시켜서 생기는 게 아닙니다. 애초에 담을 수 있는 단계가 몇 개뿐인 자리에서, 그 몇 개가 눈에 보이게 드러나는 현상입니다.
밴딩의 원리: 256단계를 어디에 쓰느냐의 문제
8bit 채널 하나가 표현하는 값은 256단계입니다(0부터 255까지). R·G·B 세 채널이니 조합으로는 1,600만 가지가 넘습니다. 이 숫자를 보면 부족할 리 없어 보이죠. 함정이 여기 있어요.
문제는 전체 가짓수가 아니라 한 그라데이션이 실제로 쓰는 구간의 폭입니다.
맑은 하늘 상단부터 지평선 근처까지를 렌더했다고 해보겠습니다. 파란 채널 값이 화면 위에서 아래로 190에서 168까지 내려간다면, 이 그라데이션이 쓸 수 있는 단계는 23개입니다. 256개 중 23개. 그 23단계를 세로 1,080픽셀에 펴 바르면 한 단계가 대략 47픽셀 높이를 차지합니다. 47픽셀 동안 같은 값이 이어지다가 다음 픽셀에서 딱 1만큼 튀는 겁니다.

여기에 사람 눈의 특성이 얹힙니다. 시각은 균일한 면보다 경계에 훨씬 민감합니다(마하 밴드, Mach band). 47픽셀짜리 평평한 면이 나란히 붙어 있으면, 뇌는 그 사이의 값 1 차이를 실제보다 강하게 인식합니다. 코드값 전체 범위로 보면 1/255, 0.4%밖에 안 되는 차이예요. 그런데도 눈에는 선으로 보입니다.
그래서 나뭇잎은 멀쩡한 거죠. 디테일이 있는 영역은 옆 픽셀과의 값 차이가 이미 수십씩 나기 때문에, 값이 1씩 끊기는 게 묻혀서 안 보입니다. 밴딩은 값 차이가 작고 면적이 넓은 곳에서만 드러납니다.
참고로 16bit 정수는 채널당 65,536단계를 씁니다. 같은 하늘 구간에 훨씬 촘촘한 값이 들어가니 계단 폭이 눈에 안 잡히는 수준까지 줄어듭니다. VFX 현장이 중간 파일로 쓰는 OpenEXR처럼 애초에 단계 제약이 다른 포맷을 쓰면 밴딩이 생길 자리 자체가 줄어듭니다. 어느 단계에서 몇 bit를 쓸지는 그 자체로 따로 정리할 주제라 8bit·16bit·32bit, 작업 단계마다 답이 다르다에서 이어서 다룹니다.
디더링은 왜 밴딩을 감추는가
디더링(dithering)은 값을 8bit로 깎기 직전에 아주 약한 노이즈를 섞는 것입니다. 이 한 줄만 보면 “노이즈를 더해서 좋아진다”가 말이 안 되게 들려요. 계산을 따라가보면 이해가 됩니다.
어떤 픽셀의 원래 값이 8bit 기준으로 168.4라고 해보죠. 디더가 없으면 반올림해서 168이 됩니다. 옆 픽셀이 168.5든 168.9든 전부 168이나 169로 몰립니다. 그래서 넓은 면이 통째로 한 값이 되고, 어느 지점에서 한꺼번에 다음 값으로 넘어갑니다. 그 지점이 우리가 보는 띠 경계입니다.
디더를 넣으면 각 픽셀에 -0.5~+0.5 범위의 미세한 난수가 더해진 뒤 반올림됩니다. 168.4인 픽셀은 대체로 168이 되지만 40% 정도는 169가 됩니다. 168.9인 픽셀은 대부분 169가 되고 가끔 168이 됩니다. 결과적으로 넓은 면 안에 168과 169가 섞이고, 그 섞이는 비율이 위치에 따라 서서히 변합니다.
눈은 픽셀을 하나씩 세지 않고 작은 영역의 평균으로 밝기를 읽습니다. 그래서 원래 값이 168.6쯤 되는 자리라면 168과 169가 4:6으로 섞이고, 그 영역은 평균 168.6으로 보입니다. 앞의 168.4와는 다른 자리의 이야기예요. 저장된 값에는 없는 중간 단계를, 섞는 비율로 만들어내는 셈입니다. 동시에 띠의 경계선이 무작위로 흐트러져서 눈이 붙잡을 직선이 사라집니다.
여기서 정확히 알아둘 것 하나. 디더링은 정보를 늘리지 않습니다. 여전히 값은 168 아니면 169예요. 계단을 지운 게 아니라 계단 경계를 노이즈로 바꿔치기한 겁니다. 그래서 디더는 항상 밴딩과 노이즈의 교환입니다. 아주 약하게 쓰면 노이즈는 안 보이고 띠만 없어지지만, 세게 쓰면 하늘이 지글거립니다.
필름 그레인을 얹는 것도 원리는 같습니다. 그레인이 값의 미세한 흔들림을 만들어 계단 경계를 덮습니다. 디더가 저장 직전 자동 처리라면, 그레인은 룩(look)으로 의도해서 넣는 쪽입니다.

밴딩이 생기는 시점과 드러나는 시점의 차이
밴딩을 잡을 때 사람들이 가장 많이 헛짚는 지점입니다. 띠가 눈에 보인 곳이 띠가 만들어진 곳이 아닙니다.
값이 계단으로 잘리는 건 비트 뎁스가 줄어드는 순간, 즉 양자화가 일어나는 순간 딱 한 번입니다. 그 순간은 보통 이 넷 중 하나예요.
- 소스가 들어올 때 — 8bit JPEG·PNG를 불러오면 그 안의 값은 이미 잘려 있습니다
- 중간 저장할 때 — 16bit로 작업하다 8bit PNG로 내보내는 순간
- 최종 저장할 때 — 납품 포맷이 8bit인 경우
- 화면에 뿌릴 때 — 대부분의 모니터 신호 경로가 채널당 8bit입니다
4번이 특히 헷갈립니다. 16bit로 작업 중인 파일을 열어놓고 화면에서 띠를 봤다면, 그 띠는 파일이 아니라 화면에만 있을 수 있어요. 파일 안 값은 촘촘한데 모니터로 나가면서 256단계로 접힌 겁니다. 이 경우 파일을 16bit로 그대로 납품하면 문제가 없고, 8bit로 내보내는 순간 진짜로 생깁니다.
반대 경우도 있습니다. 이미 8bit로 잘린 소스는 16bit 프로젝트에 불러와도 계단이 그대로 남습니다. 그릇을 키우는 것과 내용물이 늘어나는 것이 왜 다른 이야기인지는 8bit·16bit·32bit, 작업 단계마다 답이 다르다에서 다룹니다.
밴딩 쪽에서 중요한 건 그다음입니다. 그 상태로 커브를 걸어 대비를 올리면 원래 1이던 값 간격이 3~4로 벌어지고, 47픽셀짜리 띠가 그만큼 또렷해집니다. 안 보이던 게 보이기 시작하니 그레이딩이 밴딩을 만든 것처럼 느껴지지만, 실제로는 이미 있던 계단을 확대한 겁니다. 그래서 대비를 올릴 계획이 있으면 소스 단계부터 여유를 남겨야 합니다.
확인 절차: 일부러 밴딩을 드러내보기
밴딩은 있는지 없는지 애매할 때가 많아요. 판단을 미루지 말고 강제로 드러내서 확인합니다.
1단계 — 원본에 손대지 않게 준비합니다. Photoshop이면 조정 레이어, Nuke·After Effects면 뷰어 전용 노드/레이어로 얹습니다. 확인이 끝나면 지울 것들이에요.
2단계 — 문제 구간만 극단으로 늘립니다. Photoshop: 레벨(Levels) 조정 레이어에서 입력 검정·흰색 슬라이더를 그라데이션 값 근처까지 바짝 좁힙니다. 예를 들어 하늘이 168~190 사이라면 입력을 165와 193 근처로 끌어당깁니다. 20단계 남짓이 0255로 펴지면서 계단이 그대로 보입니다. Nuke: 확인용 Grade 노드를 얹고 blackpoint·whitepoint를 그 구간으로 좁힙니다.
띠가 나타나면 그 이미지에는 밴딩이 있는 겁니다. 안 나타나면 값 간격이 충분히 촘촘한 거예요.
3단계 — 어디서 잘렸는지 히스토그램으로 봅니다. 8bit로 한 번 잘린 뒤 다시 늘어난 이미지는 히스토그램에 빗살무늬가 생깁니다. 값이 있는 자리와 완전히 빈 자리가 규칙적으로 번갈아 나타나는 모양입니다. 이게 보이면 원인은 지금 하는 작업이 아니라 소스나 이전 단계입니다. 히스토그램이 매끄럽게 채워져 있는데 화면에만 띠가 보인다면 4번, 즉 디스플레이 출력 단계일 가능성이 큽니다.
4단계 — 같은 파일을 다른 경로로 봅니다. 파일 자체 문제인지 화면 문제인지 가르는 방법입니다. 같은 파일을 다른 뷰어나 다른 모니터에서 열어봅니다. 한쪽에서만 띠가 보이면 파일은 멀쩡한 거예요.

AI 생성 이미지와 업스케일에서 밴딩이 유독 잘 보이는 이유
요즘 밴딩 질문이 늘어난 데는 이유가 있어요. 생성·업스케일 결과물은 밴딩이 드러나기 좋은 조건을 여러 개 동시에 갖고 있습니다.
대부분 8bit로 나옵니다. 생성 이미지의 최종 출력은 보통 8bit PNG나 JPEG입니다. 32bit로 계산했다가 파일로 나올 때 256단계로 접히고, 그 파일이 곧 소스가 됩니다.
노이즈가 거의 없습니다. 실사 촬영본에는 센서 노이즈가 항상 조금 깔려 있습니다. 이 노이즈가 사실상 디더 역할을 해서 계단을 덮어줍니다. 생성 결과물이나 디노이즈를 강하게 건 이미지는 이 자연 노이즈가 없어서, 매끈한 하늘이 그대로 매끈한 계단이 됩니다.
업스케일은 계단을 넓힙니다. 픽셀 수를 2배로 늘려도 값 단계가 늘어나지는 않습니다. 47픽셀이던 띠가 94픽셀이 되면서 더 알아보기 쉬워집니다. 업스케일 후에 밴딩이 “생긴” 것처럼 보이는 건 대부분 이 때문이에요.
후보정에서 벌어집니다. 생성물은 톤이 밋밋하게 나오는 경우가 많아 커브로 대비를 올리게 되는데, 이 과정이 앞서 말한 “이미 있던 계단 확대”입니다.

판단 기준: 단계별로 뭘 하면 되나
| 단계 | 상황 | 할 일 |
|---|---|---|
| 소스 확보 | 렌더·촬영본을 내가 만든다 | 16bit 이상으로 뽑는다. VFX 파이프라인이면 EXR |
| 소스 확보 | 8bit 이미지밖에 없다 | 여기서 되돌릴 방법은 없다. 아래 “한계”로 |
| 작업 중 | 커브·레벨·그레이딩을 건다 | 프로젝트 비트 뎁스를 16bit 이상으로. 8bit 프로젝트에서 대비를 올리면 계단이 벌어진다 |
| 작업 중 | 화면에만 띠가 보인다 | 히스토그램을 먼저 확인한다. 매끈하면 파일은 정상, 그대로 진행 |
| 마무리 | 하늘·배경이 매끈하고 노이즈가 없다 | 아주 약한 그레인이나 노이즈를 얹는다. 값 1~2 수준 |
| 최종 저장 | 8bit PNG·JPEG로 내보내야 한다 | 디더 옵션이 있으면 켠다. 없으면 앞 단계에서 그레인으로 대체 |
| 최종 저장 | 납품이 16bit·EXR이다 | 디더 불필요. 그대로 내보낸다 |
| 최종 저장 | 이후에 누군가 색보정을 더 할 예정 | 8bit로 내리지 않는다. 다음 사람이 늘리는 순간 드러난다 |
디더 옵션의 이름과 위치는 프로그램·버전마다 다릅니다. Photoshop은 그라데이션 도구와 일부 변환 대화상자에 디더 항목이 있고, 컴포지팅 툴은 파일 출력 노드 쪽에 두는 경우가 많아요.
한계: 디더링으로 못 살리는 경우
먼저 밝혀둘 것. 이미 8bit로 뭉개진 소스는 디더로 복원되지 않습니다.
값 168과 169 사이에 있던 정보는 저장되는 순간 사라졌습니다. 디더는 없는 값을 만들어내는 도구가 아니라, 값을 깎는 그 순간에만 개입해서 오차를 흩뜨리는 도구입니다. 이미 잘린 파일에 나중에 노이즈를 얹으면 계단 경계가 조금 덜 또렷해질 뿐, 띠 자체는 남습니다.
그래도 손을 봐야 한다면 선택지는 이 정도입니다. 각각 대가가 있어요.
- 약한 블러 후 그레인 — 띠는 확실히 줄지만 그 영역의 디테일도 같이 뭉갭니다. 하늘처럼 원래 디테일이 없는 곳에서만 쓸 만합니다
- 해당 영역만 다시 만들기 — 하늘을 별도 소스나 그라데이션으로 갈아끼웁니다. 손은 가장 많이 가고 결과는 가장 확실합니다
- 그대로 두기 — 최종 매체가 작게 보이거나 움직이는 영상이면 정지 이미지만큼 눈에 띄지 않습니다
그리고 밴딩처럼 보이지만 다른 문제인 경우도 있습니다. 어두운 부분이 여러 단계가 아니라 아예 한 덩어리로 새까맣게 붙어버렸다면 그건 단계 수 문제가 아니라 값이 0 아래로 잘려나간 겁니다. 이건 어두운 부분이 새까맣게 뭉개질 때 확인할 것: Black Level에서 따로 다룹니다.
한 줄 정리
밴딩은 화질이나 압축이 아니라 좁은 밝기 구간에 쓸 수 있는 단계가 몇 개뿐이라 생기는 현상이고, 디더링은 그 단계 사이를 미세 노이즈로 섞어 눈을 속이는 방법입니다. 그래서 답은 언제나 두 갈래예요. 잘리기 전이면 비트 뎁스를 지키고, 잘려야 한다면 잘리는 그 순간에 디더를 넣습니다.
그럼 어느 단계에서 몇 bit를 써야 하는지가 다음 질문이 됩니다. 작업용·중간 저장용·납품용의 답이 각각 다릅니다. → 8bit·16bit·32bit, 작업 단계마다 답이 다르다
마무리
밴딩은 화질이 나빠서 생기는 게 아니라, 좁은 밝기 구간에 배정된 단계가 몇 개뿐이라 생기는 현상입니다. 그래서 손댈 자리도 정해져 있어요. 값이 8bit로 깎이는 바로 그 순간 하나입니다. 다음에 하늘이나 배경에서 띠를 발견하면 렌더를 다시 걸기 전에, 히스토그램에 빗살무늬가 있는지부터 확인해 보시면 됩니다. 빗살무늬가 있으면 원인은 이전 단계에 있는 것이고, 히스토그램이 매끈한데 화면에만 띠가 보인다면 파일은 멀쩡한 거예요. 이 두 갈래만 갈라내도 어디서부터 손대야 할지 감이 잡힐 겁니다.
자주 묻는 질문(FAQ)
Q1. 10bit 모니터로 바꾸면 밴딩이 사라지나요? 화면에 뿌리는 단계에서만 생기던 띠라면 줄어들 수 있습니다. 다만 파일 안에 이미 굳어버린 계단은 모니터를 바꿔도 그대로 남아요. 게다가 케이블·GPU·프로그램까지 모두 10bit를 지원해야 실제로 적용되기 때문에, 실제 효과는 환경에 따라 다릅니다.
Q2. 웹에 올리면 서버가 다시 압축하는데, 디더가 그대로 남나요? 플랫폼마다 재압축 방식이 달라서 환경에 따라 다릅니다. 다만 원본에서 계단을 없애 두면 재압축 뒤에도 더 유리한 상태에서 출발하는 건 분명해요. 확실하게 확인하려면 실제 업로드할 크기와 포맷 그대로 한 번 올려보고 결과를 확인하시는 게 좋습니다.
Q3. 인쇄물로 뽑을 때도 화면과 같은 기준으로 보면 되나요? 출력 장치와 용지에 따라 다릅니다. 인쇄는 화면과 계조를 만들어내는 방식 자체가 달라서, 화면에서 본 띠가 그대로 옮겨오지도 않고 반대로 화면에 없던 문제가 생기기도 해요. 최종 매체가 인쇄라면 실제 출력 샘플로 한 번 확인해 두는 편이 안전합니다.
vfx 잡학지식



댓글 0
첫 댓글을 남겨보세요.