jpeg 파일을 생성하는 과정은 아래와 같다.


http://www.eetimes.com/document.asp?doc_id=1225736 에서 빌려옴


1992년 9월에 나온 기술이라 위의 과정은 이미 기술적으로 충분히 안정화된 상태.

그런데, 이 기능 중에 거의 사용되지 않는 부분이 하나 있다.


위 그림 하단 가운데에 보이는 Arithmetic Coding(산술 부호화[코딩]).


흔히들 jpeg 압축의 마지막 단계는 허프만 코딩이라고 알고 있는데, 원론적으로는 반만 맞는 것이다.

마지막 단계는 엔트로피 코딩이며, 엔트로피 코딩으로 허프만 코딩 외에 산술 코딩도 사용할 수 있다.


산술 코딩은 허프만 코딩에 비해 압축률이 높고 연산이 복잡하여 속도가 느리다.


속도보다 더 큰 문제는 이 산술 코딩이 꽤 많은 특허가 걸려있었다는 것.

무려 11개의 특허가 걸려있는데다 반드시 구현해야 되는 게 아니라서[각주:1] 그동안 거의 구현하지 않았다.


이후 특허가 만료되어가면서 libjpeg[각주:2]에서 이를 구현하였고, libjpeg-turbomozjpeg에서도 사용할 수 있다.


재미있는 건, 이렇게 법적/기술적으로 사용에 문제가 없음에도 불구하고, 이를 지원하는 소프트웨어는 거의 없다는 것.

당장 포토샵에서 읽어보려고 하면 취급하지 않는다는 메시지를 띄운다고 한다[각주:3].


게다가, 웹 브라우저들이 거의 이를 지원하지 않기 때문에 앞으로 확산될 가능성도 별로 없어보인다.

구글 크롬의 경우는 jpeg 라이브러리로 libjpeg-turbo를 사용하는데도 산술 부호화 jpeg는 표시되지 않는다.


내가 사용하는 소프트웨어 중에서는 꿀뷰만이 정상적으로 전시한다.


과연 산술 코딩은 떡밥의 굴레를 벗어던질 수 있을까?


산술 코딩된 jpeg 파일 및 좀 더 상세한 글은 아래를 참고하면 된다:

- The greatest failure of our patent system was…

- JPEG arithmetic coding


덧1. 오해가 있을 것 같아 덧붙임: 상당수의 현대 미디어 코덱엔 산술 코딩이 사용됨. 단지 jpeg만 좀 이상한 떡밥 모드임.


덧2. 꿀뷰를 만드시는 Kippler님께서 포토샵 캡쳐 화면을 보내주셨는데, 아래와 같음.




  1. 허프만 코딩은 반드시 구현하도록 명시되어 있음 [본문으로]
  2. libjpeg v7에서 처음으로 구현 [본문으로]
  3. 포토샵을 갖고 있지 않아 직접은 못 해봤지만, 꽤 유명한 이슈라 맞을 거임… [본문으로]
  1. kippler 2016.04.14 10:35

    포토샵은 이렇게 나오네요..
    http://i.imgur.com/GVKB4FR.png

+ Recent posts