|
|
디더링으로 표현된 그래픽의 예시.[1] |
1. 개요
디지털 신호처리에서 전체적인 양자화 오차가 최소화 되도록 의도적으로 적은 양의 잡음 데이터인 디더를 추가하는 작업 및 기법.2. 음향
음향 신호를 컴퓨터에서 저장하고 처리하기 위해서는 음향 신호를 디지털화하여야 한다. 디지털 신호로는 정수밖에 표현할수 없기 때문에 디지털 변환 과정 중 양자화 과정에서 실수로 표현되는 아날로그 신호는 정수의 근사값으로 변환된다. 이 과정에서 예측 가능한 규칙적인 잡음이 발생하는데 이를 양자화 노이즈라고 한다.[2] 이런 규칙적인 노이즈는 인간의 귀에 거슬리기 때문에 무작위의 양자화 노이즈를 신호에 포함시켜 규칙적인 소음을 최소화한다.3. 컴퓨터 그래픽
3.1. 등장 배경
과거 CGA를 필두로 한 컬러 그래픽의 태동기에는 컬러라곤 해도 사용할 수 있는 색이 상당히 제한된 경우가 많았다. 예를 들면 CGA는 4색(흑,백,청,자)밖에 못 썼고, EGA나 VGA도 16색, 많아봐야 256색 정도였다. 24비트 트루컬러가 표준이 된 지금은 16,777,216가지의 색을 표현할 수 있지만 당시에는 색이 제한되어 있었기 때문에 당연히 그래픽의 표현에도 한계가 있어서 색을 쓰는 게 쉽지 않았다. 이런 와중에 등장한 게 디더링이다.3.2. 특징
간단히 점과 점을 일정 패턴으로 교차해서 찍으면서 멀리서 보면 색이 섞여 보이게끔 하는 기법이다. 원리 면으로 점묘법과 비슷하다고 볼 수 있다. 초기 아미가나 DOS 그래픽(게임 등)에는 이런 게 많아서 고전 게임들을 하다 보면 그래픽에 도트 같은 게 보이는 경우가 있을 텐데, 그게 디더링을 사용한 흔적이다. 아미가나 IBM PC 외에도 당시 8비트/16비트 컴퓨터용 게임에서는 매우 흔하게 사용된 기법이다.컴퓨터에서 반투명 기법이 지원되지 않았을 때도 많이 썼다. 두 가지 색을 1픽셀씩 번갈아가며 찍은 뒤에, 색 한 가지를 프로그램에서 출력되지 않는 것으로 처리하면 반투명 꼼수가 완성된다.[3] GIF 같이 자체적으로 투명색을 팔레트에서 지원하는 경우에는 비슷하게 투명색과 다른 색을 1픽셀씩 번갈아가며 찍는 꼼수를 썼다. 웹의 경우에는 2000년대 초중반까지 많이 썼던 기법으로, 이후 반투명을 지원하는 PNG 이미지 포맷과 투명도 비율을 지정할 수 있는 CSS3이 대중화되면서 사라졌다.
색 표현수가 많아졌다고 해도 현재도 쓰이는 기법이다. 계단 현상을 제거하는 안티에일리어싱도 디더링 기법의 일종이고 사양을 덜 잡아먹기 때문에 저사양 컴퓨터에서 그래픽적인 꼼수로 쓰는 경우도 있다. 또한 GIF는 파일 구조 자체에서 256색밖에 지원을 하지 않기 때문에 움짤 만들 때 쓰이기도 한다.
그리고 현재도 색상표현 제한을 극복하기 위해 사용하고 있다.
특히 하드웨어로 구현되는 사례가 많다. 대표적으로 최신 모니터 등의 LCD는 물리적 스펙은 서브픽셀당 10비트 색을 지원하는 경우가 있는데, 입력 데이터는 8비트(RGB 24비트)가 들어오는 게 일반적이므로, 이 경우 LSB 2비트는 00이나 11등 고정값으로 채우는게 아니라 슈도 렌덤값으로 흔들어줘서(디더링) 출력한다. 다만 6->8비트 디더링 정도는 화질이 눈에 띄게 좋아지지만, 8->10비트는 특수한 이미지 패턴이 아닌 이상 개선 효과가 거의 눈에 띄지 않는다. 단색 사진이나 암부 표현에 있어서는 8->10비트의 차이가 체감되는 편이다.
가령 일반적인 모니터 패널은 8bit 심도의 컬러 표현이 가능해 1600만 가지 색(트루 컬러)을 표현하지만 저가형 패널의 경우 6bit(6만 5천색 하이 컬러) + FRC(디더링)을 이용해 8bit 즉 1600만 가지 색을 표현하고, 일반 패널보다 좀더 고급 패널은 8bit + FRC를 이용해 10bit 즉 10억가지 색(딥컬러)을 표현한다. 전문가용 패널은 네이티브 10bit를 사용하지만 이러한 패널을 사용한 디스플레이 장치는 너무 비싸서 2020년대 초반 기준으로는 일반인이 사용할 만큼 대중화 되지 않았다. 2020년대 초반 기준으로 일반적인 제품은 네이티브 8bit, 고급형 모니터나 일반적인 4K TV는 8bit + FRC, 그래픽 작업용이나 의료용으로 사용되는 전문가용 모니터나 수백만 원대의 플래그십급 TV가 네이티브 10bit 이상을 사용한다. 네이티브 8bit 이하 패널은 정보 표시 역할만 하는 화면이 아닌 이상 완제품에 들어간 것을 찾아보기 힘들다.
Eink 디스플레이에서도 보통 16계 회색조만 지원하기 때문에 더욱 세밀하게 명암을 표현하기 위해 사용된다.
4. 어원
현대 영어에서 dither의 일상 어휘로서의 의미는 '결정을 못 내리고 미적거리거나 망설인다'는 뜻이다. 동사나 명사로 사용된다. (ex. We're still dithering over whether to marry. We don't have time to dither.)그런데 dither는 추가적으로 '초조함이나 불안'의 명사 의미도 가지고 있는데 이는 어원적으로 dither가 17세기 영단어 didder, didderen에서 기원했기 때문이다. 이 옛 단어들은 '진동, 떨림' 등의 뜻을 가지고 있는데 Oxford 사전이나 Etymology Online에 따르면 그 이전의 어원은 확실하지 않다. (관련 단어로 dodder가 같은 어원을 가지고 있는 것으로 보인다.)
한편, 위에 서술된 컴퓨터 과학용어로서 dither는 영문 위키에 따르면 1964년 부터 쓰이기 시작한 것으로 보인다. 흥미롭게도 컴퓨터 과학 용어서로의 잡음 데이터를 섞는 개념 자체는 Larry Robert의 1961년도 논문에서 시작하는데 이 때는 dither라는 용어를 사용하지 않았다고 한다.[4]
영문 위키는 컴퓨터 과학 용어로 dither가 들어오게 된 배경 또한 설명하고 있는데, 2차 세계 대전 이후 아날로그 컴퓨터 등을 다루는 책에서 dither라는 용어가 비슷한 맥락으로 이미 사용되고 있었음을 지적한다. 일례로 Ken Pohlmann의 교재 Principles of Digital Audio은 당시의 배경적 상황을 기술하고 있다. 2차 대전 시기, 폭격기는 항로나 궤도 계산을 위해 기계식 계산기를 탑재하고 있었는데, 이 계산기가 공중에 있을 때 지상에서 보다 더 정확하게 작동하는 것이 발견되었다. 당시의 기술자들은 비행기로부터 전해지는 진동이 걸그적거리며 돌아가는 부품에 작용하여 부드럽게 지속적으로 작동하도록 함으로써 계산기의 정확도를 높인다는 것을 알게 되었다. 그리고 이에 대해 진동한다는 어원적 의미를 가진 dither라는 단어를 사용하기 시작했다고 한다.
5. 관련 문서
[1] 킹스 퀘스트 시리즈 중 4편 스샷이다. 당시 VGA 이전 시에라 2D 디더링 그래픽 기술의 노하우가 결집된 게임이었다.[2] 음향기기 광고에서 디지털을 표현하는데 흔하게 쓰이는 사각형의 파형이 양자화 노이즈가 들어간 파형이다.[3] 이 기법이 사용된 사례로 스타크래프트에서 일꾼 유닛으로 구조물 생성 시 구조물 생성 위치를 지정하는 과정에서 해당 구조물이 지형에서 차지하는 범위가 녹색 바탕으로 표시되는데, 자세히 보면 녹색 픽셀과 투명 픽셀을 번갈아 찍어 만든 형태라는 것을 알 수 있다. 물론 엄밀하게 말해서 해당 게임은 (은폐 능력을 지닌 유닛의 형태에서 확인할 수 있듯이) 분명 반투명 색상을 지원하고 이 사례도 녹색 픽셀에 반투명이 적용되어 있긴 하다. 단지 픽셀을 번갈아 찍는 기법을 함께 사용해서 그렇지만 말이다.[4] 영문 위키 dither 항목 참고