디지털 이미지에 디더링이 필요한 이유

디지탈 이미지에는, 이미지의 색수를 삭감하거나 다른 색으로 치환하거나 할 때에 사용되는 「디더링」이라고 하는 기법이 있는데, 디더링은 어떤 것이며 왜 필요할까?

 


디지털 이미지에 있어서의 색 표현법의 하나가, 「RGB(빨강, 초록, 파랑)」로서, RGB에서는 빨강, 초록, 파랑의 3 요소를 8bit씩, 합계 24bit로 취급하는 것으로, 약 1670만색이라고 하는 색수를 표현할 수 있다. 그러나 모든 색을 RGB로 표현할 수 있는 것은 아니고, 오래된 게임기나 초기의 웹 이미지 형식과 같이, 한정된 색수 밖에 사용할 수 없는 환경에서는, 불과 16색이나 256색이라고 하는 제약 속에서, 「가능한 한 매끄러워 보이는 이미지」를 만들 필요가 있었다.

한정된 팔레트나 낮은 비트 심도의 색으로 대체해 이미지내의 색수를 줄이는 것을 「양자화」라고 부르고, 양자화는 비트수를 삭감할 수 있는 한편, 본래 완만한 그라데이션이어야 할 곳에, 급격한 색의 변화가 생겨 버린다고 하는 문제가 있다. 그래서, 인접하는 2개의 색에 노이즈를 더함으로써, 인간의 눈의 착각을 이용해 「존재하지 않는 색을 있는 것처럼 보이게 한다」에 의해서 그라데이션을 근사하는 기술이 디더링이다.

다음은, 1670만색을 사용한 풀 컬러(왼쪽), 216만색만으로 그린 Web 세이프 컬러(중앙), 디더링 후의 Web 세이프 컬러(오른쪽)를 비교한 것. 풀 컬러의 부드러운 그라데이션이 Web 세이프 컬러에서는, 단차가 되어 버리지만, 디더링을 추가하면 풀 컬러에 가까운 그라데이션으로 되어 있다. 이미지의 노란 사각은 그라데이션 중에서 1 픽셀 상당의 색을 확대 표시한 샘플로, 풀 컬러에서는 균일한 옐로우이지만, Web 세이프 컬러에서는 사용할 수 있는 색이 적기 때문에 비슷한 색의 차이를 알기 쉽게 되어 있어, 이것이 계단 모양의 외형을 낳는다. 그래서 디더링에서는, 픽셀 내에서 노이즈를 미세하게 분산시킴으로써 매끄럽게 보여주고 있다고 한다.

 

https://typefully.com/DanHollick/why-do-we-need-dithering-Ut7oD4k


디더링을 이해하기 위한 기본적인 방법으로, '오더드(배열) 디더링'이라는 것을 예로 들고 있는데, 배열 디더링은 랜덤이 아닌 정해진 패턴을 사용해 노이즈를 더하는 방식으로 픽셀을 처리하는 순서를 나타내는 '베이어 매트릭스'라는 작은 표를 작성. 베이어 매트릭스에 사용할 수 있는 색을 스케일링하면 밝기 임계값을 결정한다.

그리고 싶은 이미지를 2x2의 픽셀 그룹으로 분할하면, 베이어 매트릭스의 임계값의 표와 비교하면서, 어느 픽셀을 밝게 하고 어느 것을 어둡게 할지 규칙적으로 결정해 간다. 이것에 의해, 예를 들면 흑백 이미지에 있어서의 여러가지 밝기의 그레이는, 흰색과 흑의 분포만으로 재현할 수 있다고 하는 것.

 

https://typefully.com/DanHollick/why-do-we-need-dithering-Ut7oD4k


배열 디더링은 계산이 가볍고 균일한 패턴을 얻을 수 있다는 장점이 있는 반면, 임계값 맵에 의해 생성되는 패턴이 상당히 두드러진다는 단점이 있다. '플로이드-스타인버그 디더링'은 디더링이 눈에 띄지 않도록 하기 위한 접근법으로, '어떤 픽셀이 원래 픽셀보다 훨씬 밝은 경우 인접한 픽셀을 어둡게 함으로써 보정한다'는 오차를 확산하는 구조에 의해, 전체적으로 양자화 오차가 0에 가까워진다.

 

https://typefully.com/DanHollick/why-do-we-need-dithering-Ut7oD4k


디더링 알고리즘은 이외에도, 광범위한 주위 픽셀에 오차를 분배하는 '저비스 주디스 닝케 오차 확산', 보다 간략화되고 고속화된 광범위 오차 확산 '스툭키 오차 확산', 주위 소수 픽셀에 오차를 분산시키는 고속·경량 오차 확산 '앳킨슨 오차 확산' 등 여러 종류가 있다.

그러나, 현대에는 풀 컬러보다 매끄러운 색채 표현을 할 수 있는 고비트 심도 컬러가 주류를 이루고 있는데, 전문가는 "디더링은 더 이상 필요 없습니다. 디더링은 복고풍의 미적 감각을 연출할 뿐입니다"라고 말하고 있다.