[CS스터디] 파일 압축과 오류 검출/수정 알고리즘

G-NOTE·2022년 8월 2일
0

항해99

목록 보기
20/36

ZIP 파일로 압축할 때

가용 메모리와 대역폭을 더 효율적으로 활용하는 방법 중 하나는 '데이터 압축'
압축의 목표는 같은 정보를 더 적은 비트로 인코딩하는 것 (아래 비트를 덜어냄)

  • 정보를 전달하지 않는 비트
  • 다른 비트에서 계산될 수 있는 비트
  • 수신자에게 중요하지 않은 비트

EX. ASCII 코드로 문자를 압축할 때

  • 자주 사용하지 않는 문자에 많은 비트를 할당하고, 자주 사용하는 문자에 더 적은 비트를 할당한다. (용량을 덜어낼 수 있음)

무손실 압축

  • 압축 비율의 성능을 향상시킬 수 있는 모든 파일 형식에 적용 가능
  • 원본 100% 재구성 가능 (압축 전후로 데이터 품질 손상이 없음)

예시

  • 허프만 코딩 Huffman Coding
    데이터 문자의 등장 빈도에 따라 다른 길이의 부호를 사용하는 알고리즘
    문자들의 빈도로부터 접두 부호(어떤 한 문자에 대한 부호가 다른 부호들의 접두어가 되지 않는 부호)를 만들어 내는 알고리즘으로, 적게 나오는 문자일수록 더 긴 부호를 쓰고 많이 나올수록 더 짧은 부호를 쓴다.
  • ZIP 압축 알고리즘
    문자보다 큰 단어, 구 단위로 압축하는 알고리즘
  • GIF, PNG
    텍스트, 선 그림, 단색 블록으로 구성된 이미지에 사용하기 위해 고안된 이미지 압축 방식

손실 압축

  • 사람들이 보거나 듣는 콘텐츠를 압축하는데 많이 사용되는 방식 (데이터 품질이 최우선 순위가 아닌 경우)
  • 데이터의 품질보다 데이터 전송과 저장에 초점을 맞춘 경우
  • 수신자에게 필요하지 않는 일부 정보를 버리는 방식으로 압축하므로 품질과 압축률 간 트레이드오프 발생

예시

  • JPEG 압축
    이미지 압축 알고리즘. 육안으로는 이미지와 실제 가까이 있는 색상을 구분하기 어려우므로 정확한 색상을 보존하지 않아도 된다. (사람의 눈으로 이미지의 품질 저하를 눈치채기 힘들다.)
  • MPEG 압축
    영상 압축 알고리즘. MPEG 개별 프레임을 JPEG처럼 압축할 뿐만 아니라 한 프레임에서 다음 프레임으로 갈 때 크게 변하지 않는 일련의 블록을 압축한다.
  • AAC 압축
    음향을 압축하기 위한 지각 부호화 알고리즘.

트레이드오프

객체의 어느 한부분의 품질을 높이거나 낮추는 것이 다른 부분의 품질을 높이거나 낮추는데 영향을 끼치는 상황을 의미한다.
EX. 무손실 압축 : 상대적으로 적은 양의 데이터를 압축할 수 있으나 데이터 품질을 저하시키지 않는다.
EX. 손실 압축 : 무손실 압축보다 더 많은 데이터를 압축할 수 있으나 데이터 품질 저하가 발생한다.

오류를 검출하고 수정하는 알고리즘

오류를 검출하고 수정하는 알고리즘은 여분의 정보를 추가하는 과정
컴퓨팅과 통신 분야에서 폭넓게 사용된다.

체크섬 알고리즘 checksum algorithm

중복 검사의 한 형태로, 오류 정정을 통해 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법
체크섬은 기본적인 메시지 구성 요소를 추가해 결과값을 저장하고 만약 체크섬이 맞아 떨어지지 않는다면 메시지가 손상되었다고 결론을 내리는 방식으로 동작한다.

EX. ISBN : 책에 부여되는 고유번호

패리티 코드

비트에 적용되는 범용 오류 기법으로, 하나의 부가적인 패리티 비트(parity bit)가 각 비트 그룹에 붙는다.

패리티 비트의 값은 그룹 내에서 값이 1인 비트의 총 개수가 짝수가 되도록 선택되며, 단일 비트 오류 발생 시 수신자는 비트 내 1의 개수가 홀수인 것을 보고 오류를 감지할 수 있다.
EX. ASCII 코드의 경우 가장 왼쪽의 사용하지 않는 비트(8자리 중 7자리만 사용함)를 패리티 비트로 바꿔서 오류 검출에 사용한다.

참조

https://ko.gadget-info.com/difference-between-lossy-compression
https://ko.wikipedia.org/wiki/%EC%B2%B4%ED%81%AC%EC%84%AC

profile
FE Developer

0개의 댓글