Operator PackbitsRLE

Operator Library: Prototype

[주의] 면책 조항

라이브러리: Prototype

이 모듈은 Prototype 라이브러리의 일부입니다. 완전한 예비 상태이며 대대적인 변경이나 심지어 삭제될 수 있습니다. 따라서 이 모듈은 프로덕션 디자인에 사용해서는 안 됩니다. 테스트 목적으로만 제공됩니다.

PackbitsRLE 오퍼레이터는 packbits 알고리즘을 사용하여 입력 링크 I의 이미지 스트림에 대해 런레 길이 인코딩 압축(RLE)을 수행합니다. Packbits는 Apple에서 처음 도입했으며 TIFF 파일의 무손실 압축에 사용할 수 있는 RLE 압축 알고리즘 중 하나입니다.

Packbits 알고리즘

래스터 이미지 파일은 헤더(이미지 크기, 색 심도 등의 정보 포함)와 각 픽셀의 색상을 설명하는 데이터로 구성됩니다. 데이터는 순차적으로 기록됩니다. 즉, 픽셀 색상 정보는 왼쪽에서 오른쪽으로, 위에서 아래로 픽셀 행으로 해석되어야 합니다.

비압축 모드에서는 동일한 색상의 인접한 픽셀 n개에 대한 색상 정보가 n번 기록됩니다. 이로 인해 중복성이 발생합니다.

예:

이 그림은 4x4 픽셀의 흑백 이미지를 나타냅니다. 비압축 형식에서 픽셀은 다음과 같이 표현됩니다(B=검은색, W=흰색): BBWWWBBBBBBWWWWW 이러한 중복성은 packbits 압축을 통해 줄어듭니다.

packbits 데이터 스트림은 1바이트 헤더와 그 뒤에 이어지는 데이터로 구성된 패킷으로 이루어져 있습니다. 헤더는 부호 있는 바이트입니다.

데이터는 각 픽셀을 1바이트로 설명합니다. 헤더에 값 n(-127 ~ -1)이 포함된 경우, 헤더 뒤에 오는 바이트는 압축 해제된 출력에서 -n+1번 반복됩니다. 따라서 중복 정보(동일한 픽셀 색상)는 Counter(헤더)와 함께 한 번만 저장됩니다. 예를 들어, BBBBBB는 -6B로 저장됩니다. 다른 색상의 첫 번째 픽셀에 대해서는 새 헤더가 생성됩니다.

헤더에 값 n(0 ~ 127)이 포함된 경우, 헤더 뒤에 오는 n+1바이트는 압축되지 않은 상태로 유지됩니다(있는 그대로 복사됨).

압축할 수 있는 가장 긴 픽셀 시리즈는 128바이트로 구성됩니다.

packbits로 압축한 후, 위의 예시 이미지(BBWWWBBBBBBWWWWW)는 -2B-3W-6B-5W가 되며, 즉 16개 대신 8개의 심볼(바이트)로 표현할 수 있습니다.

[중요] 효율성

Packbits는 그레이스케일, 팔레트, 바이토널 이미지에 사용됩니다. 동일한 색상의 연속된 픽셀 수가 많을수록 오퍼레이터가 데이터를 더 효과적으로 압축할 수 있습니다. 가장 좋은 압축 결과는 바이토널(예: 흑백) 이미지에서 달성됩니다.

(매우 단순한) packbits 알고리즘의 장점은 속도와 메모리(256바이트) 및 처리 능력에 대한 요구가 극도로 적다는 점에 있습니다.

I/O Properties

Property Value
Operator Type M
입력 링크 I, data input
출력 링크 O, data output

지원되는 Link Format

Link Parameter Input Link I Output Link O
Bit Width [4, 12] as I
Arithmetic {unsigned, signed} as I
Parallelism 1 as I
Kernel Columns any as I
Kernel Rows any as I
Img Protocol VALT_IMAGE2D as I
Color Format any as I
Color Flavor any as I
Max. Img Width any as I1
Max. Img Height any as I

1

출력 이미지 폭은 2^31 - 1을 초과할 수 없습니다.

Parameters

None

사용 예

PackbitsRLE 오퍼레이터의 사용법은 다음 예시에 나와 있습니다: