자료구조

[이전 완] 렝스 부호화와 반복길이 부호화 (학교 과제, p29)

치즈샌드CS 2024. 4. 3. 00:21

Q. 렝스 부호화(반복길이 부호화)란?

렝스 부호화는 데이터를 더 작은 크기로 변환하여

저장공간을 절약하거나 데이터 전송 시간을 단축하는 데 사용된다.

 

렝스 부호화는 주로 데이터에서 반복되는

패턴을 찾고 더 짧은 비트로 표현함으로써 압축한다.

렝스 부호화에는 여러 유형이 있지만 이번에는

런 렝스 부호화에 대해 알아보겠다.

 

런 렝스 부호화는 동일한 값이 연속으로 나타나는 경우에는

그 값을 한 번만 저장하고 그다음 값이 나타나기 전까지의

반복 횟수를 기록한다. 이렇게 함으로써 반복되는 데이터의 크기를

크게 줄일 수 있다.

 

예를 들면 "AAAABCDDEEEEEEEFFFFFFFF" 이런 문자열이 있다 하면

런 렝스 부화하를 사용해 압축하면 "A4B1C1D2E7F8" 이런 식으로 변환

할 수 있고

 

간단한 이미지를 예로 들면

 

위 이미지는 흑백 이미지를 간단하게 0과 1로 표현한 것이다.

이런 흑백 이미지를 렝스 부호화를 이용해 압축해 본다 하자

 

색칠하지 않은 빈칸부터 차례대로 개수를 적는다.

맨 처음 칸이 색이 있는 칸이 있는 칸으로 시작 시, 0을 적어준다.

 

그렇게 하면 이런 식으로 압축된다.

첫 번째 줄부터 첫 칸에 색이 없으니 바로 1(1) 3(0) 1(1)

두 번째 줄은 첫 칸에 색이 있으니 0(첫 칸 색상) 1(0) 4(1)

세 번째 줄도 첫 칸에 색이 있으니 0(첫 칸 색상) 1(0) 4(1)

네 번째 줄도 첫 칸에 색이 있으니 0(첫 칸 색상) 1(0) 4(1)

다섯 번째 줄은 첫 칸에 색이 없으니 바로 1(1) 3(0) 1(1)

이런 식으로 압축해서 나타낼 수 있다.