델타 압축은 델타 인코딩 된 값의 압축입니다. 델타 인코딩은 숫자의 다른 통계 분포를 생성하는 변환입니다. 분포가 선택한 압축 알고리즘에 유리하면 데이터 양이 줄어 듭니다. 엔티티가 두 업데이트 사이에서 약간만 움직이는 게임과 같은 시스템에서 매우 잘 작동합니다.
2D에 100 개의 엔티티가 있다고 가정 해 봅시다. 큰 그리드에서 512 x 512. 예제를 위해 정수만 고려하십시오. 엔터티 당 두 개의 정수 또는 200 개의 숫자입니다.
두 업데이트 사이에서 모든 위치는 0, 1, -1, 2 또는 -2만큼 변경됩니다. 0의 인스턴스 100 개, 1과 -1의 33 개 인스턴스, 2와 -2의 17 개의 인스턴스 만 있습니다. 이것은 매우 일반적입니다. 압축을 위해 허프만 코딩을 선택합니다.
허프만 트리는 다음과 같습니다.
0 0
-1 100
1 101
2 110
-2 1110
모든 0은 단일 비트로 인코딩됩니다. 그것은 단지 100 비트입니다. 66 개의 값은 3 비트로 인코딩되고 34 개의 값은 4 비트로 인코딩됩니다. 434 비트 또는 55 바이트입니다. 또한 트리가 작기 때문에 매핑 트리를 저장하기위한 약간의 오버 헤드가 있습니다. 5 개의 숫자를 인코딩하려면 3 비트가 필요합니다. 여기서는 '-2'에 4 비트를 사용해야하는 경우 '0'에 1 비트를 사용하는 기능을 거래했습니다.
이제 이것을 임의의 200 개의 숫자를 보내는 것과 비교하십시오. 엔티티가 동일한 타일에있을 수없는 경우 통계 분포가 잘못되었다는 것이 거의 보장됩니다. 가장 좋은 경우는 100 개의 고유 숫자 (모두 Y가 다른 동일한 X에 있음)입니다. 그것은 숫자 당 적어도 7 비트 (175 바이트)이며 압축 알고리즘에는 매우 어렵습니다.
델타 압축은 엔티티가 약간만 변경되는 특수한 경우에 작동합니다. 고유 한 변경 사항이 많으면 델타 인코딩이 도움이되지 않습니다.
델타 인코딩 및 압축은 다른 상황에서도 다른 변환과 함께 사용됩니다.
MPEG은 사진을 작은 사각형으로 분할하고 사진의 일부가 움직이면 움직임과 변경 내용의 밝기 만 저장됩니다. 25fps 동영상에서 프레임 사이의 많은 변화는 매우 작습니다. 다시 델타 인코딩 + 압축. 정적 장면에 가장 적합합니다.