정보의 데이터 압축의 원리가 궁금합니다.
흔히 데이터를 압축해서 보내면 그냥 보내는 것보다 용량이 줄어들어 빠르게 데이터 전송이 가능합니다. 여기서 데이터를 압축한다는 방법이 어떠한 방법이고 원리가 어떻게 되는지 궁금합니다.
안녕하세요. 설효훈 과학전문가입니다.
3. 데이터 압축(Data compression)
3.1 Packed Decimal 기법
- 컴퓨터에서 BCD 코드를 사용하여 십진수를 표현하는 방법의 한 가지임
- BCD 코드에서는 하나의 십진 숫자를 표현하기 위하여 4비트의 크기가 필요하지만, 각각의 십진 숫자는 각각의 바이트에 저장되기 때문에, 두 개의 십진 숫자를 표현하기 위해서는 2바이트의 기억 장소가 필요함
- 한 바이트에 두 자리를 묶어서(pack) 저장(마지막 자리에 해당하는 4비트를 부호로 나타내기 위하여 사용, 양수이면 1100(C), 음수는 1101(D), 부호가 없으면 1111(F)로 표현한다)
- 저장 공간을 효율적으로 사용하며 십진수를 표현
- 일정한 규칙에 따라 데이터를 특수 코드로 변환하여, 데이터 저장소의 크기를 줄이는 작업을 말함
BCD코드(2진화 10진코드)란? 10진수 한자리의 수를 2진수 4비트로 표현하는 방법
4비트의 2진수 각 비트가 8(2^3), 4(2^2), 2(2^1), 1(2^0)의 가중치를 가지므로 8421코드라고도 한다
7 0111
8 1000
9 1001
3.2 Relative Encoding 기법
- 서로 차이가 크지 않은 숫자들이나 프레임들을 전송하는 경우에 특정 기준치와의 차이만을 전송하는 방식
- 동영상의 경우, 압축될 데이터 스트림의 단위가 바로 앞 프레임 데이터 스트림과 약간씩만 다른 경우가 상당히 많은데, 이러한 경우에 Relative encoding 기법이 크게 효과를 볼 수 있음
- 차동 펄스 코드변조(DPCM) 방식이 대표적인 Relative Encoding 방식임
3.3 Character Suppression 기법
- 송신 개시 전에 3개 또는 그 이상의 반복되는 문자가 있는지 검사하여 반복이 있는 문자와 그 개수를 대체하여 송신하는 방법
- 수신 측은 수신된 문자와 그 개수를 인식하여 개수만큼 해당문자를 복사하여 수신된 프레임을 재구성
- Run-Length Coding 방식이 대표적인 문자 압축방식임
3.4 Huffman 기법
- 호프만 코딩은 모든 문자가 동일한 출현 빈도로 전송되지 않는 성질을 이용하여 평균 코드 길이를 줄이는 통계적인 압축방식임
- 출현 빈도가 높은 문자에 적은 비트수를 , 낮은 문자에는 긴 비트수를 할당하여 전송하는 VLC(Variable Length Coding) 방식임
- 균일한 부호 길이를 할당한 방식보다 압축효과가 크지만 에러가 발생하는 경우 여러 심벌에 걸쳐 영향을 주게됨
- 출현 빈도를 계산할 때와 실제로 압축할 때 파일을 두 번 읽어서 처리하므로 속도가 늦고 디코더 설계가 복잡
만족스러운 답변이었나요?간단한 별점을 통해 의견을 알려주세요.안녕하세요. 김경욱 과학전문가입니다.
컴퓨터에서 파일을 압축하는 원리는 주로 두 가지 방법을 사용합니다.
무손실 압축 (Lossless Compression) 무손실 압축은 압축 전과 후의 파일 내용이 동일한 것을 보장합니다. 이 방법은 파일의 중복되는 부분을 찾아서 이를 표현하는데 필요한 정보만 저장하고 나머지 부분은 생략함으로써 파일 크기를 줄입니다. 이 방법은 주로 텍스트 파일, 프로그램 파일 등에 사용되며, 파일 크기를 줄이는 동시에 원본 데이터를 완벽하게 보존할 수 있습니다.
손실 압축 (Lossy Compression) 손실 압축은 압축 전의 파일과 압축 후의 파일이 완전히 동일하지 않을 수 있습니다. 이 방법은 파일의 중복되는 부분을 찾아서 이를 표현하는데 필요한 정보만 저장하고, 이외의 부분은 일부 정보를 삭제하거나 근사치로 대체함으로써 파일 크기를 줄입니다. 이 방법은 주로 이미지, 음악, 비디오 등에 사용되며, 파일 크기를 상대적으로 작게 줄일 수 있지만, 압축 과정에서 일부 데이터가 손실될 수 있습니다.
만족스러운 답변이었나요?간단한 별점을 통해 의견을 알려주세요.안녕하세요. 김경태 과학전문가입니다.
정보의 데이터 압축은 데이터를 더 적은 공간에 저장하거나 더 적은 대역폭으로 전송하기 위해 데이터를 압축하는 프로세스입니다
- 손실압축 : 손실 압축은 데이터에서 일부 정보를 제거하여 데이터 크기를 줄이는 것입니다. 예를 들어, 이미지의 경우 색상 정보를 감소시켜 이미지 파일 크기를 줄이거나, 음악 파일의 경우 일부 음원 데이터를 제거하여 파일 크기를 줄일 수 있습니다. 이 방법은 데이터를 빠르게 압축할 수 있으나, 압축 후 데이터의 일부 정보가 손실될 수 있습니다.
만족스러운 답변이었나요?간단한 별점을 통해 의견을 알려주세요.안녕하세요. 이준엽 과학전문가입니다.
데이터 압축은 데이터의 용량을 줄이는 기술입니다. 이를 통해 전송 시간을 단축하거나 저장 공간을 절약할 수 있습니다. 데이터 압축은 다양한 방법으로 이루어질 수 있지만, 가장 일반적인 방법으로는 "데이터의 중복성을 찾아내어 중복된 데이터를 하나로 대체하는 방식"과 "데이터를 효율적으로 표현하는 방식"이 있습니다.
데이터의 중복성을 찾아내는 방식으로는 무손실 압축과 손실 압축 방식이 있습니다. 무손실 압축은 데이터를 압축하더라도 압축된 데이터를 복원할 때 원본 데이터와 정확히 일치하도록 보장하는 방식입니다. 이 방식으로 압축된 데이터는 손실 없이 압축된다는 장점이 있습니다. 대표적인 무손실 압축 알고리즘으로는 ZIP, Gzip, Lempel-Ziv-Markov chain algorithm(LZMA) 등이 있습니다.
반면 손실 압축은 압축된 데이터를 복원할 때 원본 데이터와 일부 차이가 있을 수 있는 방식입니다. 이 방식으로는 데이터의 일부 손실을 허용하는 이미지, 음악, 동영상 등의 멀티미디어 데이터를 압축할 때 많이 사용됩니다. 손실 압축 알고리즘으로는 JPEG, MP3, H.264 등이 있습니다.
데이터를 효율적으로 표현하는 방식으로는 데이터의 통계적 특성을 이용하는 방법과 데이터를 표현하는 방식을 최적화하는 방식이 있습니다. 대표적인 압축 알고리즘으로는 허프만(Huffman) 알고리즘이 있습니다. 이 알고리즘은 데이터의 통계적 특성을 이용하여 데이터를 압축합니다. 먼저 데이터를 분석하여 빈도수가 높은 데이터에 짧은 비트를 할당하고, 빈도수가 낮은 데이터에는 긴 비트를 할당합니다. 이렇게 비트의 길이를 다르게 할당하면 데이터를 효율적으로 압축할 수 있습니다.
이 외에도 다양한 압축 알고리즘이 존재하며, 각각의 알고리즘은 데이터의 특성에 따라 적용하기 좋은 경우가 있습니다.
만족스러운 답변이었나요?간단한 별점을 통해 의견을 알려주세요.안녕하세요. 원형석 과학전문가입니다.
RLE(Run Lenght Encoding)방식
aaaaabbbbccccdddeeee -> a5b4c4d3e4
데이터에 한 문자가 'aaaaa'로 연속되어 있다면 그것을 'aaaaa -> a5'로 간단히 나타낼 수가 있다. 위의 예의 20문자는 'a5b4c4d3e4'로 10 문자로 줄일 수가 있을 것이다.
장점: 압축과 압축을 푸는 속도가 매우 빠르고 프로그래밍 하기가 쉬우며 프로그램의 크기 또한 아주 작게 만들 수 있다는 점이다. 특히 같은 문자가 계속 반복되는 자료를 압축 할 때 높은 압축율을 자랑한다. 그러나 일반적인 경우에는 압축율이 낮다.
호프만 코딩(Huffman coding)
모든 문자가 동일한 빈도로 전송되지 않는 성질을 이용함
자주 사용되는 문자에 대해서는 적은 수의 비트를 사용하는 것
JPEG, MPEG에서는 RLE와 호프만 코딩 방식을 사용하고 있다.
호프만의 압축법은 다음의 네 가지를 거쳐서 이루어진다.
1) 압축할 파일을 읽어 각 문자들의 출현 빈도수를 구한다.
100 바이트의 크기를 갖고 있으며, 6개의 문자만으로 이루어진 파일이 있다고 가정하자.
빈도수 : C(30), A(10), D(5), F(10), B(20), E(25)
2) 이들 가운데서 가장 빈도수가 적은 문자들끼리 연결시켜 이진 트리를 만든다.
3) 이진 트리로부터 각 문자들을 대표하는 값을 얻는다.
만족스러운 답변이었나요?간단한 별점을 통해 의견을 알려주세요.안녕하세요. 정성목 과학전문가입니다.
데이터 압축은 정보를 더 작은 크기로 압축하여 저장하거나 전송하는 프로세스입니다. 이것은 일반적으로 데이터 저장 용량을 절약하고 파일 전송 속도를 향상시키는 데 사용됩니다.
압축의 원리는 데이터에서 중복된 패턴 또는 불필요한 정보를 찾아내고, 이를 제거하는 것입니다. 이를 위해 압축 알고리즘은 데이터를 분석하고, 빈도가 높은 문자열이나 패턴을 찾아내어 이를 새로운 코드로 대체합니다. 이러한 코드는 원래 데이터보다 더 짧으며, 더 많은 데이터를 표현할 수 있습니다.
압축 알고리즘에는 여러 종류가 있지만, 가장 일반적인 것 중 하나는 Huffman 코딩입니다. 이 기술은 각 문자열이 얼마나 자주 발생하는지 분석하고, 더 적은 비트로 가장 자주 발생하는 문자열을 나타내는 코드를 만드는 것입니다. 이것은 데이터의 불필요한 비트 수를 줄이는 데 도움이 되며, 압축된 데이터를 복원할 때 원래의 문자열을 정확하게 나타낼 수 있도록 보장합니다.
압축 알고리즘은 데이터의 형식과 특성에 따라 다르게 적용될 수 있습니다. 압축 알고리즘의 선택과 설정에 따라 압축률이 달라지므로, 일부 경우에는 최상의 결과를 얻기 위해 여러 압축 알고리즘을 조합하기도 합니다.
만족스러운 답변이었나요?간단한 별점을 통해 의견을 알려주세요.