나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2023-10-11 16:06:14

디더링

파일:external/www.codeproject.com/image013.gif
파일:external/battleship.ibbun.com/080228_2.png
디더링으로 표현된 그래픽의 예시.[1]
Dithering

1. 개요2. 음향3. 컴퓨터 그래픽
3.1. 등장 배경3.2. 특징
4. 어원5. 관련 문서

[clearfix]

1. 개요

디지털 신호처리에서 전체적인 양자화 오차가 최소화 되도록 의도적으로 적은 양의 잡음 데이터인 디더를 추가하는 작업 및 기법.

2. 음향

음향 신호를 컴퓨터에서 저장하고 처리하기 위해서는 음향 신호를 디지털화하여야 한다. 디지털 신호로는 정수밖에 표현할수 없기 때문에 디지털 변환 과정 중 양자화 과정에서 실수로 표현되는 아날로그 신호는 정수의 근사값으로 변환된다. 이 과정에서 예측 가능한 규칙적인 잡음이 발생하는데 이를 양자화 노이즈라고 한다.[2] 이런 규칙적인 노이즈는 인간의 귀에 거슬리기 때문에 무작위의 양자화 노이즈를 신호에 포함시켜 규칙적인 소음을 최소화한다.

3. 컴퓨터 그래픽

3.1. 등장 배경

과거 CGA를 필두로 한 컬러 그래픽의 태동기에는 컬러라곤 해도 사용할 수 있는 색이 상당히 제한된 경우가 많았다. 예를 들면 CGA는 4색(흑,백,청,자)밖에 못 썼고, EGAVGA도 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 이하 패널은 정보 표시 역할만 하는 화면이 아닌 이상 완제품에 들어간 것을 찾아보기 힘들다.

4. 어원

dither는 '초조해하다', '안절부절 못하다'는 뜻의 영단어. 실생활에서는 거의 쓰이지 않는다. 열에 아홉은 본 항목에 기술된 S/W적 컴퓨터 그래픽 기술을 얘기하는 거지만, 2차대전 당시 폭격기의 조준기에는 기계식(=톱니바퀴) 계산기가 탑재되어 있었는데, 공중에서 사용하면 잘 돌아가던 물건이 지상에서 테스트하면 제대로 동작하지 않는 현상이 발견되었다. 알고보니 비행기의 진동이 기계식 컴퓨터를 살살 흔들어 주면서 톱니바퀴들이 걸리지 않고 부드럽게 돌아가도록 도와주는 역할을 하고 있던 것으로 드러났다. 이후 지상에서 테스트 할 시에는 기기를 흔들어 주면서 구동했는데, 이 때문에 디더링(안절부절못함)이라는 이름이 붙었다고.

5. 관련 문서


[1] 킹스 퀘스트 시리즈 중 4편 스샷이다. 당시 VGA 이전 시에라 2D 디더링 그래픽 기술의 노하우가 결집된 게임이었다.[2] 음향기기 광고에서 디지털을 표현하는데 흔하게 쓰이는 사각형의 파형이 양자화 노이즈가 들어간 파형이다.[3] 이 기법이 사용된 사례로 스타크래프트에서 일꾼 유닛으로 구조물 생성 시 구조물 생성 위치를 지정하는 과정에서 해당 구조물이 지형에서 차지하는 범위가 녹색 바탕으로 표시되는데, 자세히 보면 녹색 픽셀과 투명 픽셀을 번갈아 찍어 만든 형태라는 것을 알 수 있다. 물론 엄밀하게 말해서 해당 게임은 (은폐 능력을 지닌 유닛의 형태에서 확인할 수 있듯이) 분명 반투명 색상을 지원하고 이 사례도 녹색 픽셀에 반투명이 적용되어 있긴 하다. 단지 픽셀을 번갈아 찍는 기법을 함께 사용해서 그렇지만 말이다.