Media

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

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

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

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

    Color Model (RGB vs CMYK vs HSI )

    빛의 파동 빛은 파동의 형태로 되어있는 전자기파 에너지이다. 빛의 기본파들을 파장에 따라 순서대로 늘어놓은 스펙트럼을 보면, 사람이 인식하는 가시광선 영역에서 파장에 따라 색이 구별된다는 것을 알 수 있다. 즉, 사람이 색을 인식한다는 것은 물체에서 반사되는 빛의 파장이 눈을 통해 뇌에 전달되었다는 것이다. 색의 인식 빛은 각막(Cornea)을 통해 눈에 들어오고, 들어온 빛은 수정체(lens)에 의해 망막에 상이 맺히게 된다. 망막에는 간상세포(rod)와 원추세포(cone)가 분포되어 있으며, 각각 빛의 강도와 색을 신경자극으로 변환하여 뇌에 전달한다. 뇌는 이미 저장되어 있는 정보를 이용하여 이러한 신경 자극을 해석하며 우리는 물체를 볼 수 있는 것이다. 망막에는 약 9천만개의 간상체(rod)와 약 ..