2019-01-23 10:57:19

이미지 압축 방법은 크게 두가지로 분류할 수 있다. 손실 압축과 무손실 압축. 손실 압축의 대표적인 방법에는 JPEG와 JPEG2000이 있다. 무손실 압축 방식에는 BMP, PNG, GIF 등이 있다. 손실 압축은 이미지의 내용에 손실을 주면서 압축하는 방식이고, 무손실 압축은 어떠한 손실 없이 압축하는 방식이다. 당연히 손실 압축 방식이 무손실 압축 방식에 비해 용량을 많이 줄일 수 있다. 오늘은 손실 압축 방식인 JPEG과 JPEG2000에 대해 정리하려고 한다. 

 

JPEG은 이미지 신호를 8 x 8 사이즈의 블락(block)으로 분할한 다음에 각 블락을 이산코사인변환으로 주파수 도메인으로 옮긴다. 고주파수에 해당하는 계수들을 양자화함으로 이미지의 내용을 고의로 손실시킨다. 고주파수에 해당하는 계수들은 이미지에서 디테일한 부분을 담당하는데 어느 정도 버려도 사람의 눈에 거슬리지 않는다. JPEG2000은 이산코사인변환 대신에 이산웨이블릿변환을 이용한다. JPEG과 달리 이미지 전체를 단번에 주파수 도메인으로 옮긴 다음에 계수들을 양자화한다. 양자화할 때 많은 작은 웨이블릿 계수들을 0으로 만들어버린다. 

 

그렇다면 둘 중 어떤 압축 방식이 더 이미지의 품질을 잘 보존할까? 이미지의 품질 보존의 관점에서는 JPEG2000이 JPEG보다 더 나은 이미지 압축 방법이다. 첫째, JPEG2000은 눈에 거슬릴만한 인공산물(artifacts)을 JPEG보다 덜 만들어낸다. JPEG과 JPEG2000 둘다 압축을 많이 시킬때 색 왜곡, ringing, blurring과 같은 인공산물들을 생산해낸다. JPEG 압축은 거기에 추가적으로 blocking 현상도 만들어낸다. 왜냐하면 앞서 말했듯이 이미지를 8 x 8 사이즈의 블락으로 분할할 다음에 처리하기 때문에 그 흔적이 남는다. 아래 그림1은 ringing, blurring, blocking 인공 산물들이 첨가된 이미지들을 보여준다. ringing은 이미지의 엣지 주변이 진동하는 것처럼 보이는 왜곡현상이다. blurring은 선명한 이미지를 무뎌지게 하는 현상이다. blocking은 사각형모양의 왜곡들이 첨가되는 것을 의미한다.  

 
그림1. ringing, blurring, blocking 현상 설명. (이미지출처: http://live.ece.utexas.edu/research/Quality/subjective.htm)

 

둘째, JPEG2000은 좀 더 효율적인 코딩 구조를 갖고 있기 때문에 비트 에러나 다른 파일 시스템 에러의 영향을 덜 받는다. 셋째, JPEG2000 표준은 손실 압축만 제공하는 JPEG과 달리 무손실 압축도 제공한다.

 

이처럼 JPEG2000이 JPEG보다 장점이 더 많은데 왜 JPEG2000을 사용하는 사람이 여전히 적은 것일까? 가장 큰 이유는 호환성 문제 때문이다. JPEG2000은 JPEG과 완전히 새로운 코드로 작성되었다. 그래서 JPEG2000을 지원하고자 하는 사람들은 새로운 표준으로 코드를 작성해야만 한다. 게다가 JPEG2000 파일을 다루는 것은 좀 더 복잡하고 처리할 때 더 많은 메모리를 요구한다. (메모리 문제는 JPEG2000이 개발된 1990년대 후반과 달리 이제는 큰 문제가 되지 않지만.)

 

이러한 호환성 문제 때문에 카메라 제조 회사와 웹사이트들은 아직 JPEG2000 포맷을 받아들이지 않고 있다. 유명한 사진 공유 사이트인 Flickr와 500px도 아직 JPEG2000을 지원하지 않는다. 그러다보니 더 나은 장점을 지니고 있음에도 확산되지 않고 있다. 
 
이런 것을 보면 기술적으로 더 낫다고 해서 사람들에게 무조건 선택을 받는 것은 아닌 것 같다. 웬만큼 우수하지 않고서는 기존에 깔린 판을 바꾸기가 쉽지 않다. 

 

<참고자료>

[1] http://www.stat.columbia.edu/~jakulin/jpeg/artifacts.htm, jpeg과 jp2k가 만들어내는 인공산물(artifacts) 비교

[2] https://petapixel.com/2015/09/12/jpeg-2000-the-better-alternative-to-jpeg-that-never-made-it-big/, jp2k가 jpeg에 비해 상용화되지 않는 이유. 

[3] https://en.wikipedia.org/wiki/Ringing_artifacts, 위키백과 ringing artifacts 설명. 

[4] https://photo.stackexchange.com/questions/19270/what-are-jpeg-artifacts-and-what-can-be-done-about-them?newreg=c75fdd7adb104614a620f688d6cc6884, StackExchange 설명. 

[5] Hou W , Gao X , Tao D , et al. Blind Image Quality Assessment via Deep Learning[J]. IEEE Transactions on Neural Networks and Learning Systems, 2015, 26(6):1275-1286.