런 길이 부호화(RLE) 도구 쉽게 이해하기 — 개념과 원리
런 길이 부호화(RLE)는 같은 문자가 연달아 나오는 구간(런)을 '반복 횟수 + 문자'로 바꿔 적는 방법입니다. 이 도구는 입력한 글을 부호화하고 압축률을 보여 줍니다. RLE는 가장 단순한 무손실 압축 기법으로 팩스 전송, PCX나 BMP의 RLE 방식 같은 초기 이미지 형식, 그리고 더 복잡한 코덱의 한 단계로 쓰입니다.
계산 방법
- 부호화 결과: 같은 문자가 이어지는 가장 긴 구간을 찾아, 문자 c가 n번 이어지면 "n" 다음에 "c"를 적습니다.
- 압축률 = 원래 길이 ÷ 부호화된 길이(문자 수 기준)
압축률이 1보다 크면 결과가 짧아진 것이고, 1보다 작으면 오히려 길어진 것입니다. 한 번만 나온 문자도 "1x"처럼 횟수를 붙여 적습니다.
원리
대부분이 흰색인 스캔 문서나 단순한 그림처럼 같은 값이 길게 이어지는 데이터에서는 값을 계속 반복하는 것보다 '몇 개'와 '무엇'만 적는 편이 훨씬 짧습니다. 런 하나를 적는 비용은 거의 일정하므로 런이 길수록 이득이 커집니다. 반대로 일반 문장처럼 반복이 적으면 글자 하나가 두 글자로 늘어나 크기가 약 두 배가 됩니다.
예제 풀이
- 입력: "WWWWWWBBBWWWW"(13글자)
- 런 구분: W 6개, B 3개, W 4개
- 부호화 결과: 6W3B4W(6글자)
- 압축률: 13 ÷ 6 = 2.166666667
결과 해석
압축률 약 2.17은 부호화된 글이 원래의 절반보다 짧다는 뜻입니다. 1보다 훨씬 크면 긴 런이 많은 데이터이고, 0.5에 가까우면 반복이 거의 없는 데이터입니다. 이 방식은 런의 평균 길이가 2글자를 넘을 때 비로소 이득이 생깁니다. 예를 들어 "ABCD"는 "1A1B1C1D"가 되어 압축률이 0.5로 떨어지므로, 데이터의 성격을 먼저 확인하고 RLE를 적용할지 결정하시는 것이 좋습니다.
흔한 실수
- 숫자가 들어 있는 글을 부호화하는 경우. 입력 "3A"는 "13"과 "1A"가 되어 원래대로 되돌릴 수 없게 됩니다.
- 일반 단어도 압축될 것이라 기대하는 경우
- 형식이 다른 도구끼리 압축률을 비교하는 경우(1회짜리 런은 횟수를 생략하거나 최대 255까지만 세는 방식 등)
자주 묻는 질문
RLE는 어떻게 해독하나요?
숫자를 읽고, 바로 뒤 문자를 그 횟수만큼 반복합니다. "6W3B4W"는 W 6개, B 3개, W 4개가 됩니다.
RLE는 무손실 압축인가요?
네. 형식이 모호하지 않다면 해독했을 때 원래 데이터가 그대로 복원됩니다.
요즘에도 RLE를 쓰나요?
팩스(ITU-T T.4)와 일부 이미지 형식에서 쓰이며, JPEG에서도 0이 이어지는 계수를 묶어 부호화하는 단계에 같은 생각이 들어 있습니다.
출처: ITU-T Recommendation T.4, Standardization of Group 3 facsimile terminals · K. Sayood, Introduction to Data Compression, Morgan Kaufmann