지난 포스팅에서 구글 guetzli모질라 mozjpeg의 성능을 간단히 비교해봤다.

그런데, 스스로에게 약간 미심쩍은(?) 부분이 있어 추가로 비교를 수행했다.


미심쩍은 부분은 아래와 같았다.


1. libjpeg가 발생시키는 artifact를 줄였다고 하는데, artifact가 없는 인공적인 이미지에서 테스트하면 어떨까

2. PSNR 외에 PSNR-HVS-M[각주:1]의 차이는 어떨까

3. 다른 사진에서도 지난 포스팅과 비슷한 결과가 나올까

4. png 압축의 최고봉인 pngquant와 비교하면 어떨까


그래서 테스트의 범위를 좀 확대해봤다.

이미지는 총 5가지에 대해 수행했고, guetzli, mozjpeg 외에 pngquant로도 변환했다.

그리고, 이 결과들에 대하여 PSNRPSNR-HVS-M를 각각 계산한 뒤 파일 크기와 비교해봤다.


대상 이미지들은 아래와 같다.


1. 흰 바탕에 선을 그은 이미지 (png / 300x200)

이미지 보기


2. 윈도우 화면 캡쳐 (png / 1086x793)

이미지 보기


3. 게임 화면 캡쳐 (png / 750x1334)

이미지 보기


4. 인물 중심 사진 (jpeg / 3264x2448)

이미지 보기


5. 풍경 중심 사진 (jpeg / 3264x2448)

이미지 보기


이 이미지들을 대상으로 각각 변환해본 결과는 아래와 같다.


mozjpeg에 비해 최대 430배까지도 느린 guetzli




숫자만 보면 뭐가 뭔지 눈에 잘 들어오지 않으니, 그래프로 표시해보면 아래와 같다.

아래의 그래프들은 각 결과에 대해 용량과 PSNR 및 PSNR-HVS-M의 관계를 표시한 것이다.

높을 수록 원본에 가깝다고 또는 화질이 좋다고 해석해도 무방함.



1. 흰 바탕에 선을 그은 이미지 (png / 300x200)


위 표에서 볼 수 있듯이, 이 경우는 PSNR-HVS-M은 모두 무한대가 나와서 비교의 의미가 없다.

pngquant도 마찬가지로 무한대.


파일 크기를 고려해 PSNR을 비교해보면 pngquant가 답이다.

이건 조금만 생각해보면 당연하기 짝이 없는 결론.



guezli의 PSNR이 더 높게 분포되어 있는데, 이건 mozjpeg 자체의 특성에 의한 것이다.

mozjpeg는 기본적으로 PSNR-HVS-M을 보장하는 방향으로 미묘하게 왜곡하며, 이 과정에서 그런 결과가 나오는 것.




2. 윈도우 화면 캡쳐 (png / 1086x793)


PSNR의 비교는 1번과 여러모로 유사성이 느껴지는 결과를 보여준다.


gueztli가 mozjpeg에 비해 용량 대비 높은 쪽에 분포된다.

그리고, pngquant는 이 둘보다는 훨씬 높은 곳에 위치한다.



PSNR-HVS-M도 비슷한 결과를 보여준다.



윈도우 캡쳐 화면은 1번과 마찬가지로 pngquant가 답이다.

굳이 jpeg로 저장할 필요가 없다는 판단.



3. 게임 화면 캡쳐 (png / 750x1334)


PSNR은 guetzli가 mozjpeg보다 높게 나온다.

q=100으로 설정하면 용량이 심하게 커지지만, 그만큼 화질도 높아진다.



PSNR-HVS-M은 mozjpeg가 더 높다.

이건 역시 mozjpeg가 PSNR-HVS-M에 최적화되어 동작하기 때문인 듯.



두 팩터 모두 pngquant가 제일 낮은 결과를 보여준다는 점과 PSNR과 PSNR-HVS-M의 다른 결과가 눈에 띈다.

아무래도 처음부터 artifact가 없는 이미지에서는 구글에서 얘기했던 특성 즉, artifact가 적게 발생한다는 점이 작용하는 듯하다.



4. 인물 중심 사진 (jpeg / 3264x2448)


인물 중심의 사진에서는 mozjpeg의 PSNR이 가장 높게 나온다.

이건 지난 포스팅의 결과와도 유사한 결과다.



PSNR-HVS-M도 PSNR과 유사한 결과를 보여준다.

PSNR보다는 mozjpeg와 guetzli의 격차가 더 큰데, 이건 역시 mozjpeg 자체의 특성이 원인인 것 같다.




5. 풍경 중심 사진 (jpeg / 3264x2448)


4번과 상당히 유사한 모습을 보인다.

즉, 대상이 인물인지 풍경인지 등은 유의미한 영향을 끼치지 않는다.



PSNR-HVS-M도 4번과 비슷하다.

PSNR에 비해 둘의 격차가 더 벌어진다는 점까지 유사하다.





결론 및 요약


1. 윈도우 캡쳐와 같은 인공적인 이미지는 여전히 pngquant가 최고의 선택

2. 게임 캡쳐 화면처럼 artifact가 없는 복잡한 이미지[각주:2]에서는 guetzli가 강점을 보이는 면[각주:3]이 있기는 함

   즉, 디카에서 촬영한 raw 포맷 이미지를 guetzli로 변환하는 경우엔 긍정적인 면이 있다는 뜻

3. 원본이 jpeg 파일인 경우 guetzli는 mozjpeg에 비해 별다른 장점이 없음
   PSNR, PSNR-HVS-M도 더 낮고, 시간은 수백배 더 소요됨


한줄 결론: 인공적 이미지는 pngquant가, 자연의 이미지는 mozjpeg가 답이며, guetzli는 아직 많이 멀었음



  1. mozjpeg은 PSNR-HVS-M을 가능한 높이는 방향으로 처리함 [본문으로]
  2. png로 저장했기 때문에 원본에 artifact는 전혀 없음 [본문으로]
  3. PSNR에 한정해서는 그렇고, PSNR-HVS-M으로 가면 그렇지는 않음… [본문으로]
신고

+ Recent posts