본문 바로가기
vfxai 잡학지식 vfxai 잡학지식

리사이즈·샤픈 뒤 하이라이트 주변에 검은 링이 생길 때: HDR 값과 필터 링잉

vfx 잡학지식 읽는 시간 약 7분 조회 2

리사이즈 링잉은 하이라이트 가장자리에서 검은 테두리처럼 보일 수 있습니다. 하지만 그 테두리가 실제 픽셀 값이 0 아래로 내려가서 생겼는지, 뷰어가 주변 대비를 보여 주는 방식 때문인지는 화면만 보고 알기 어렵습니다. 배경 0.18과 하이라이트 50이 만나는 간단한 예를 계산하고, Nuke 필터 이름과 점검 순서를 차례로 보겠습니다.

1. 먼저 화면의 링과 픽셀의 링을 구분합니다

검은 띠를 발견하면 샤픈 양부터 올리지 마세요. 리사이즈·회전 뒤에 추가 보정이 여러 개 이어져 있다면, 어느 노드에서 띠가 시작됐는지 먼저 갈라야 합니다.

  1. 문제가 보이는 픽셀과 바로 옆 배경 픽셀의 값을 기록합니다. 리사이즈 전후를 같은 뷰어 표시 변환으로 비교합니다.
  2. 리사이즈 노드 바로 뒤에서 값을 다시 봅니다. 그 지점에서 이미 음수나 입력 범위 밖의 값이 생겼는지 확인합니다.
  3. 뒤에 붙은 샤픈·그레이드·디스플레이 변환을 하나씩 분리해 봅니다. 리사이즈 직후에는 값이 정상이고 뒤 단계에서만 링이 생긴다면 원인은 그 뒤 처리입니다.

0 아래 값이 보이면 그 값은 단순히 검게 보이는 정도가 아니라 실제 계산 결과입니다. 반대로 화면에서 검게 보인다는 사실만으로 저장된 픽셀 값이 음수라고 단정할 수는 없습니다. 뷰어의 표시 변환과 클램프가 값을 다르게 보이게 할 수 있습니다.

이 차이는 float 이미지에서 특히 놓치기 쉽습니다. 32bit float 이미지가 표시 범위 밖의 값을 어떻게 담는지 궁금하다면 32bit Float 이미지와 HDR 데이터 설명을, 합성에서 EXR을 쓰는 이유는 VFX에서 EXR을 쓰는 이유를 참고하세요.

2. 0.18과 50을 리샘플하면 입력 범위를 벗어날 수 있습니다

계산에는 배경 샘플 0.18, 밝은 영역의 샘플 50을 썼습니다. 밝은 영역은 인덱스 4~7의 네 샘플이고, 전체 입력은 배경 네 샘플·하이라이트 네 샘플·배경 네 샘플입니다. 계산 구간 바깥에도 0.18 배경을 필터 support보다 충분히 길게 이어 붙인 뒤 더 촘촘히 업샘플했습니다. 따라서 아래 그래프는 실제 Nuke 렌더 캡처가 아니라, 재구성 필터의 수식에 값을 넣어 계산한 예입니다.

Lanczos-3에는 정규화된 sinc를 사용해 h(x)=sinc(x)·sinc(x/3), |x| < 3으로 계산했습니다. 비교용 cubic은 Catmull-Rom 커널(a=-0.5, support 2)을 명시했습니다. 이 구분이 중요합니다. 프로그램 화면의 필터 이름이 같더라도 실제 커널과 리샘플링 조건까지 같다고 가정하지 않습니다.

리사이즈 링잉 계산 그래프: 배경 0.18과 하이라이트 50을 Lanczos-3 및 Catmull-Rom으로 업샘플한 결과
배경 0.18과 4픽셀 하이라이트 50의 1D 업샘플 결과. 0.025픽셀 간격 계산에서 Lanczos-3는 약 -5.66~55.58, Catmull-Rom cubic은 약 -3.51~53.69를 보였습니다. Nuke의 실제 출력 예시는 아닙니다.

이 입력을 0.025픽셀 간격으로 계산했을 때 Lanczos-3는 약 -5.66부터 55.58까지, Catmull-Rom cubic은 약 -3.51부터 53.69까지 움직였습니다. 원본 샘플은 0.18과 50뿐이지만, 출력은 그 사이에만 머물지 않습니다.

값이 이렇게 되는 이유는 필터가 주변 샘플을 모두 양수 가중치로 평균 내지 않기 때문입니다. Lanczos와 Catmull-Rom은 일부 위치에서 음수 가중치를 사용합니다. 하이라이트 값에 음수 가중치가 걸리면 옆 픽셀의 결과가 배경보다 낮아지고, 경계 안쪽에서는 합이 1보다 커져 원래 하이라이트보다 높은 오버슈트가 생길 수 있습니다.

3. Nuke 메뉴의 Lanczos와 계산 그래프는 같은 이름이 아닙니다

Foundry의 Nuke 문서는 Reformat의 기본 필터를 Cubic으로 적고, 필터 선택지로 Impulse, Cubic, Keys, Simon, Rifman, Mitchell, Parzen, Notch, Lanczos4, Lanczos6, Sinc4를 나열합니다. Nuke Transform의 공간 변환 필터 문서도 같은 이름을 안내하며, Rifman과 Lanczos처럼 샤프닝을 포함한 필터에서는 haloing이 보일 수 있다고 설명합니다.

따라서 Nuke에서 메뉴를 찾을 때는 Lanczos라는 일반 이름만 찾지 말고 Lanczos4 또는 Lanczos6인지 확인하세요. 이 글의 그래프는 수식이 분명한 Lanczos-3 예시입니다. Nuke의 Lanczos4, Lanczos6, Cubic이 그래프와 똑같은 픽셀 값을 낸다는 뜻은 아닙니다.

Foundry는 Reformat의 clamp 옵션을 샤프닝 필터에서 나타날 수 있는 halo 문제를 고치는 방법으로 안내합니다. 다만 옵션을 켜는 것만으로 원인을 없앴다고 판단하지 마세요. 픽셀 값이 어떻게 바뀌었는지, 하이라이트 꼭대기가 보존됐는지 같은 뷰어 표시 변환 아래에서 다시 확인해야 합니다.

검은 테두리가 아니라 CG 전체가 플레이트보다 선명하게 떠 보이는 문제라면 별도 원인일 수 있습니다. 렌즈 왜곡과 색수차를 맞추는 Nuke 합성에서 CG의 선명도를 맞추는 점검과 구분하세요.

4. 리사이즈 링잉을 피하려면 필터와 샤픈을 함께 비교합니다

리사이즈 링잉의 직접 원인은 HDR이라는 이름이 아니라, 고대비 경계에서 음수 가중치를 쓰는 필터가 만든 언더슈트와 오버슈트입니다. 0.18과 50의 예에서 보듯 HDR 하이라이트는 그 차이를 크게 만들어, 작은 음수 로브도 눈에 띄는 값으로 드러낼 수 있습니다.

  1. 먼저 Nuke Reformat의 기본 Cubic처럼 더 부드러운 선택지로 바꿔 비교합니다. 더 강한 샤프닝을 노린다면 Foundry 문서에 적힌 Lanczos4·Lanczos6·Sinc4가 halo를 만들 수 있음을 염두에 둡니다.
  2. 필터를 바꾼 결과와 추가 Sharpen 처리를 따로 비교합니다. 이미 리사이즈 필터가 날카로운데 뒤에서 다시 샤픈하면 링이 커질 수 있습니다.
  3. 샤프한 필터가 꼭 필요하면 clamp를 비교해 볼 수 있습니다. 단, 결과 화면만 보지 말고 링 위치의 실제 값과 하이라이트 값도 확인합니다.
  4. 샤픈 뒤에만 검은 링이 나타나면 필터를 무조건 바꾸기보다 샤픈 단계를 낮추거나 분리합니다. 원인이 다른 단계라면 그 단계를 먼저 조정합니다.

필터를 바꾸면 선명도와 링의 크기가 함께 달라질 수 있습니다. 링이 줄었다고 무조건 더 좋은 결과는 아니므로, 가장자리 디테일과 하이라이트 모양을 같은 배율과 같은 표시 조건에서 나란히 비교하세요.

결국 검은 링은 HDR 값을 바로 잘라서 숨길 문제가 아닙니다. 먼저 리사이즈 직후의 픽셀 값과 필터를 확인하고, 필요한 만큼만 부드럽게 만드는 것이 안전합니다.

vfx 잡학지식

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.