728x90
GIF 파일 형식에는 다음과 같은 한계점이 있다.
1. 각 프레임마다 최대 256색 팔레트만 가능.
2. 프레임마다 전혀 다른 LCT를 만들면, 매 프레임 팔레트가 튀어서 시각적으로 깜빡임(color flicker) 현상이 생김.
고품질 GIF 생성 프로그램인 gifski의 gif 생성법은
프레임별로 팔레트를 독립적으로 생성하되,
이전, 다음 프레임의 색 정보를 참고해서 팔레트를 만든다.
-> 이렇게 하면 연속된 프레임들이 비슷한 팔레트를 공유하게 되어 색상 변화가 부드럽고 자연스러워짐.
즉, “색의 히스토그램을 프레임 간 통합/보정”하는 과정이라고 보면 됨.
1. pngquant의 팔레트 생성
- 대상: 단일 이미지(고정된 한 프레임)
- 방식:
- 이미지 픽셀의 색 분포를 분석 → 히스토그램 생성
- NeuQuant나 K-means 같은 벡터 양자화(현재 pngquant은 modified median cut + k-means 개선형)을 사용
- 최대 256색 팔레트 생성 (PNG-8)
- 특징: 한 번 생성된 팔레트는 고정 → 시간 축 개념 없음
즉, pngquant은 정적인 팔레트 최적화 도구.
2. gifski의 Cross-frame palettes
- 대상: 움직이는 GIF의 여러 프레임
- 방식:
- GIF는 프레임마다 팔레트(Local Color Table, LCT)를 둘 수 있음 (반면 GCT는 하나의 전역 팔레트).
- gifski는 각 프레임을 독립적으로 팔레트화하지만, 단순 독립 처리 시 깜빡임(flicker)이 생김.
- 그래서 이전 프레임의 팔레트 정보를 고려하면서 새로운 프레임 팔레트를 생성 → 색 인덱스 안정화 + 시간적 일관성 유지.
- 즉, 프레임 간 색상 전환 시 "급격히 변하지 않도록" 조정하는 과정이 Cross-frame palettes.
- 특징:
- gifski는 전역 팔레트(GCT)를 고집하지 않고, 각 프레임에 LCT(Local Color Table)를 둔 뒤, 프레임 간 연속성을 보장하는 방식.
- 이게 일반적인 pngquant 스타일과의 핵심 차이점임.
3. 정리
- pngquant: 한 장의 이미지 → 256색 최적 팔레트.
- gifski: 여러 장의 연속 이미지 → 프레임별 LCT를 만들되, 인접 프레임 간 색상을 연속적으로 배치 →
전역 팔레트(GCT)보다 색 충실도가 높음.
728x90
'💻 컴퓨터 시스템' 카테고리의 다른 글
디더링(Dithering)이란? 이미지 디더링 종류 (1) | 2025.08.20 |
---|---|
[운영체제, 개발자면접] '프로세스와 스레드 완벽 정리' (1) | 2022.11.25 |
[CS] 캐시메모리와 메인메모리 (1) | 2022.11.25 |
[java] RAM, HDD이란? (0) | 2022.11.17 |
[SQL] Primary Key, Unique 제약조건 (3) | 2022.10.01 |
댓글