극한 속도의 이미지 압축 포맷 Nibnib 공개
원제 Nibnib: Image compression with extreme decompression speed
108 포인트댓글 19
Key Point
마이크로컨트롤러처럼 연산 자원이 제한된 환경에서 이미지 표시 속도를 극대화해야 하는 개발자에게 실용적인 선택지를 제공한다.
핵심 요약
- 마이크로컨트롤러 DVI 출력을 위해 설계된 초고속 이미지 압축 포맷 Nibnib을 깃허브에 공개했다.
- 팔레트 기반이지만 색상 델타를 저장해 절대값 대신 상대값을 사용함으로써 팔레트 이미지 품질을 능가한다.
- 2개 픽셀을 1바이트로 인코딩하는 4bpp 압축으로 극한의 속도를 달성하며, RP2350에서 6사이클당 픽셀 처리가 가능하다.
- 디코딩은 직전 픽셀을 복제하고 입력 바이트를 팔레트에서 조회해 더한 후 상위 16비트와 하위 16비트를 분리하는 단순한 구조다.
- 인코딩은 디코딩과 달리 팔레트 선택과 코드워드 검색을 통해 원본과 가까운 이미지를 찾는 복잡한 과정으로, 현재 인코더는 디코더보다 몇 배 느리다.
- Floyd-Steinberg 오차 확산을 적용하되 2개 픽셀 쌍을 동시에 최적화하며, 인간의 시각계가 저주파수에 민감한 점을 모델링한다.
- 팔레트는 작은 델타값 큐브와 가우시안 분포 난수로 구성되며, 델타 크기는 선예도와 노이즈 사이의 트레이드오프를 결정한다.
- 현재 팔레트는 입력 이미지에 맞춰 적응적으로 선택되지 않으며, 양방향 스캔과 더 깊은 검색으로 품질을 크게 개선할 여지가 있다.
- 포맷은 2바이트 너비·높이, 256개 32비트 팔레트 항목, 행 단위 RGB 565 픽셀 2개 초기값과 인덱스 바이트로 구성되며 아카이빙용이 아니다.
- Apache 2.0과 MIT 라이선스 중 선택해서 사용 가능하다.