전체 글

전체 글

    [디지털오디오] 부호화(Coding) - DPCM 및 ADPCM

    이전 글에서 오디오 신호의 표본화(Sampling)와 양자화(Quantization에 대해 설명했다. 부호화(Coding)는 표본화 및 양자화된 데이터를 비트 스트림으로 변환하는 작업이다. 우리는 이제 표본화율과 양자화 bit를 참고하여 오디오 데이터의 크기를 계산할 수 있다. A. CD 품질로 디지털화한 4분 길이의 스테레오 음악 한곡의 크기는 얼마인가? Q. 44100(Hz) * 16(bit) * 2(stereo) * 4(min) * 60(sec) = 338688000bit ≈ 40MB 음악 한곡에 40MB라니... 너무 크다. 100곡을 저장하려면 약 4GB의 저장공간이 필요하다. 따라서 우리는 부호화를 하는 과정에서 이 데이터를 압축할 필요가 있다. 압축의 종류에는 크게 무손실 압축과 손실 압축 ..

    [디지털오디오] 양자화(Quantization) - Linear vs Non-Linear PCM

    양자화 (Quantization) 이전 글에서 표본화(Sampling)란 연속 신호를 이산 신호로 변환하는 것이라고 하였다. 양자화 또한 아날로그 신호의 연속된 값을 이산 값으로 변환하는 것이다. 그렇다면 표본화와 양자화의 차이는 무엇일까? 오디오 신호에서 표본화는 시간축을 따라 연속된 시간을 이산 값으로 변환한다. 양자화는 진폭 축을 따라 연속된 진폭(파형의 높이)을 이산 값으로 변환한다. 일반적으로 아래 그림과 같이 샘플링을 통해 일정한 주기로 표본을 나누고, 양자화를 통해 표본 각각의 진폭 값(파형의 높이)을 구해 디지털화를 수행한다. 오디오 신호를 8bit로 양자화한다면 256(2^8) 단계의 음으로 소리를 표현할 수 있다. 만약 16bit로 양자화한다면 65536(2^16) 단계의 음으로 소리를..

    [디지털오디오] 표본화(Sampling) - 나이키스트(Nyquist) 이론

    표본화 (Sampling) 표본화(Sampling)란 연속 신호를 이산 신호로 변환하는 것이다. 즉, 연속된 시간 또는 공간에서 일정한 주기(간격)로 표본 값을 추출하는 것을 의미한다. 오디오 신호의 경우, 연속된 아날로그 파형의 시간축을 샘플링하여 디지털 신호로 변환한다. 이때 1초 동안의 샘플링 횟수를 나타내는 수치를 Sampling Rate 라고하며, Hz 단위를 사용한다. (20Hz는 초당 20개의 샘플을 가진다는 뜻이다.) Under Sampling vs Over Sampling Sampling Rate가 높을수록 아날로그 신호에 가깝게 디지털화할 수 있을 것이다. 그러나, 이에 비례하여 디지털 데이터의 크기 또한 커질 것이다. 그렇다고 Sampling Rate를 줄이면, 데이터의 품질이 떨어질..

    [압축 알고리즘] 허프만 부호화 (Huffman coding) + JAVA 구현

    허프만 부호화 (Huffman coding) 허프만 부호화란 무손실 압축에 사용되는 엔트로피 코딩 중 하나이다. 이전 글에서 엔트로피 코딩의 목적은 데이터 심볼 당 평균 부호 길이가 엔트로피에 가까워지도록 부호를 할당하여 압축 효율을 높이는 것이라고 하였다. 허프만 부호화는 발생 빈도가 높은 (자주 나오는) 심볼에는 짧은 부호를 할당하고, 발생 빈도가 적은 심볼에는 비교적 긴 부호를 할당한다. 따라서 최대한으로 평균 부호길이가 압축되는 결과를 얻을 수 있다. 허프만 부호화 시 각각의 심볼에 접두 코드(Prefix code)를 할당한다. 접두 코드란 코드 집합에서 어떤 코드도 다른 코드의 접두사가 되지 않게 만들어진 코드이다. 예를 들어 {"0", "01"} 코드 집합의 경우 접두 코드가 아니다. "0"은..

    [압축 알고리즘] 엔트로피 코딩? + 런렝스 부호화 (Run-length encoding)

    엔트로피 코딩 (Entropy Coding) 이란? 일반적으로 엔트로피(Entropy)란 '무질서도' 혹은 '불확실성'을 가리킨다. '정보의 양'을 중요시하는 정보공학적 관점에서는 '평균 정보량'을 엔트로피라고 한다. 엔트로피에 대해 설명하자면... 앞으로 발생할 사건에 대해 (확정적인) 정보가 많다면 예측률이 높아진다. 이러한 경우 우리는 사건이 발생해도 별로 놀라지 않는다. 즉, 이 사건은 결과적으로 우리에게 적은 정보를 제공한다. 이를 엔트로피가 낮다고 한다. 반면, 어떤 정보일지 불확실할수록 사건에 대해 예측이 어려워진다. 따라서 이 사건이 발생할 때 우리는 훨씬 유용한 정보를 제공받게 된다. (놀라운 정보가 많다) 이를 엔트로피가 높다고 한다. 예를 들어 동전과 주사위가 있다. 동전을 던져서 발..