핵심 요약
- RP2350 마이크로컨트롤러 환경에서 픽셀당 약 6사이클이라는 제약을 극복하기 위해 설계된 이미지 압축 포맷 Nibnib이 공개되었습니다.
- 1바이트 입력으로 2개 픽셀을 동시에 풀어내며 4bpp 압축률과 극한의 디코딩 속도를 구현했습니다.
- 인코딩은 플로이드-스타인버그 오차 확산 기법 등을 적용해 복잡하고 느리지만, 향후 팔레트 최적화 등으로 화질 개선 여지가 큽니다.
요약 오픈소스 그래픽 기술 개발자로 유명한 래프 레비앙(raphlinus)이 마이크로컨트롤러 환경에서 초고속으로 이미지를 풀어낼 수 있는 새로운 압축 포맷 'Nibnib'을 공개했습니다.
이 프로젝트는 라즈베리 파이의 RP2350 마이크로컨트롤러에서 DVI 영상 출력을 구현할 때 어느 정도의 화질과 디코딩 성능을 끌어낼 수 있는지 시험하는 과정에서 시작되었습니다. 이런 초저사양 칩에서는 픽셀당 가용 연산 시간이 약 6사이클에 불과해, 픽셀 데이터를 가져와 팔레트를 조회하고 라인 버퍼에 쓰는 것만으로도 여유가 거의 없습니다.
Nibnib은 기존의 단순 팔레트 기반 이미지 방식 대신, 절대적인 색상이 아닌 '변화량(델타)'을 팔레트에 저장하는 기법을 채택했습니다. 1바이트 입력을 통해 한 번에 2개의 픽셀을 디코딩하는 구조로 4bpp(픽셀당 4비트) 압축률을 달성했으며, 이전 픽셀 값을 복제한 뒤 팔레트의 델타 값을 더해 16비트(RGB 565) 픽셀 2개를 즉각 만들어내는 매우 단순하고 빠른 루프를 가집니다.
반면 인코딩 과정은 비대칭적으로 훨씬 복잡합니다. 인코더는 256개의 팔레트 항목을 탐색하며 플로이드-스타인버그 오차 확산(Floyd-Steinberg error diffusion) 알고리즘을 사용해 최적의 픽셀 조합을 찾아냅니다. 인간 시각 체계가 낮은 공간 주파수에 더 민감하다는 점을 반영해 두 픽셀의 오차 합에 가중치를 두어 계산합니다.
현재는 탐색 과정이 무거워 인코딩 속도가 디코딩에 비해 매우 느리지만, 팔레트 최적화나 양방향 인코딩 탐색 등 화질과 효율을 높일 수 있는 여지가 여전히 많아 임베디드 그래픽 개발자들 사이에서 큰 관심을 모으고 있습니다.
Sponsored · 광고