소프트웨어 JPEG 최적화 mozjpeGUI vs XnView (Guetzli)

2019.03.15 05:21

드로이얀7 (이준호) 조회:1111 추천:6

기존에 쓴 글 ( JPEG 최적화를 위한 mozjpeg을 편하게 써봅시다 - mozjpeGUI #)의 연장선상에서 쓰는 글입니다. 아무것도 모르는 분들을 위한 간략 정리 및 비교가 있어야 될 것 같아서요.

 

 

왜 쓰는가 - 92년생 JPEG을 아직도 많이 쓰므로, JPEG으로 저장할 때 효율을 좀 더 올려보고자(동일 화질 대비 용량 ↓, 동일 용량 대비 화질 ↑) 만들어진 것들입니다.

 

 

한계 - 애초에 원본 소스를 JPEG으로 변환하는 것이 맞는 상황일 때, 기존 JPEG 인코더보다 나은 효율을 보일 뿐입니다. 당장 이전 글에 첨부한 GUI 스크린샷을 JPEG으로 변환하면 mozjpeg이든 Guetzli든 용량 더 커집니다. 애초에 PNG가 더 잘 압축하는 형태이기 때문입니다.

그리고 최신 포맷(JPEG2000, JPEG XR, WebP, HEIF, AVIF)을 쓸 수 있는 상황이면 당연히 최신 포맷이 더 좋습니다. 그러나, 당장 여기 본문 첨부용 사진으로 저 포맷들을 올릴 수 있는지 생각해 보시기 바랍니다.

(예시 중 앞의 둘은 우리가 일반적으로 알고 있는 JPEG이 아닙니다. 키플러님 글 참고#)

 

저는 주로 게임 스크린샷을 찍을 때 씁니다. 게임 자체적으로 JPEG을 대부분 지원합니다만, 용량이 작으면 화질이 떨어지고(JPEG 고압축 특유의 가느다란 붉은 색 선 말아먹는 문제라던가), 화질 문제가 없으면 용량이 큰 경우가 대부분이라, 스샷은 무손실(PNG나 BMP)로 찍히도록 설정한 후 따로 mozjpeg이나 Guetzli를 써서 JPEG으로 변환하는 게 상당히 나은 결과를 보입니다.

 

 

mozjpeg vs Guetzli

파이어폭스로 유명한 모질라 재단에서 mozjpeg을 먼저 만들었고, 나중에 구글이 독자적으로 Guetzli를 만들었습니다. 차이가 나는 이유는 화질을 평가하기 위해 계산하는 기준 자체가 다릅니다.(자세한 건 이전 글 마지막 부분 참고) 현재 최신 버전 기준으론 Guetzli가 좀 나은 것 같습니다만, 변환이 정말 오래 걸립니다.

 

 

mozjpeGUI vs XnView (Guetzli)

이전 글에도 적었지만, mozjpeg나 Guetzli 자체는 기반 인프라를 만드는 연구 프로젝트라 소스 코드만 제공하며, 윈도우 버튼 클릭으로만 프로그램 사용하시는 분들께 저 둘은 실행해보는 것 자체가 공부해야 될 일입니다. 그래서 누구나 편하게 쓸 수 있도록 GUI로 제공하는 툴들을 통해 쓰는 게 현실적입니다.

 

mozjpeGUI는 mozjpeg을 위해 일본인 개인(masaya ohara , http://s.masayaohara.com/ )이 만들었습니다.

XnView는 유명 이미지 뷰어로 영문 위키백과 설명 # 보면 1998년부터 나온 프로그램입니다. 한국어 위키백과 설명 #

 

JPEG 변환용이라면 mozjpeGUI가 작고 빠르고 간편합니다만, 개인이 만든 거라 다양한 환경 대응이 떨어집니다.(이전 글에도 적었지만 4년 반 전에 1.0 만들고 방치해 뒀다가 이번에 업데이트한 겁니다. 그리고 댓글 보면 화면이 안 나오거나 번역판만 화면이 안 나오거나 하는 분들이 여럿인데 원인을 알 수 없습니다.) 그리고 XnView가 일단 설정을 한 번 잡아주면 쓰는 건 더 편리합니다. Guetzli 변환 속도만 감수한다면요.

 

추가: 번역판은 문제 생기는데 원본에 번역 파일만 넣은 건 괜찮다는 얘기가 있어서 번역 파일만 받을 수 있도록 추가했습니다. 그래도 안 되면 제작자에게 영어/일본어로 피드백 하거나 XnView를 쓰는 수밖에 없을 겁니다.

 

 

mozjpeGUI (XnView는 저 아래로...)

 

        

1.png

    

왼쪽 아래에서 출력을 저장할 폴더부터 선택하고, 입력할 원본 사진을 선택한 후에 옵션을 조절하고 실행 버튼을 누르면 변환해 줍니다.

 

이미 선택한 목록을 지우거나 조절하려면 아래의 목폭 비우기, 동작 선택 버튼을 이용하면 됩니다.

 

 - 입력은 JPEG, BMP만 받습니다.(mozjpeg 자체 한계) 무손실 원본(PNG라던가)의 경우 다른 프로그램(IrfanView 등)으로 변환해서 넣어야 하는데, 이때 JEPG으로 변환하면 최종 출력 용량이 커지는 경향이  있으니 BMP로 변환 후 mozjpeg을 통해 JPEG로 만드는 게 좋습니다.

   

 - 품질: 0~100, 말 그대로 JPEG 품질 설정입니다. 내릴수록 저용량 저화질이 됩니다. JPEG 특성상 100이라고 해서 엄밀히 무손실은 아닙니다. 변환 목적에 따라 선택합니다.

   

 - Grayscale (흑백): 말 그대로 흑백 사진으로 만듭니다.

           

 - Progresssive (점진적): 체크 권장. 로딩 시 저해상도로 먼저 로딩하는 방식입니다.(기본값인 baseline은 위에서부터 순차적으로 보여줌) https://www.liquidweb.com/kb/what-is-a-progressive-jpeg/ 가 차이를 잘 보여주고 있습니다만, 요즘은 인터넷 컴퓨터 모두 빨라서 어지간히 렉 걸리지 않는 한 차이를 보기 힘듭니다. 보통 용량이 좀 더 작아집니다. 기본값 off (원본), on (번역)

           

 - sample 1x1: JPEG의 서브샘플링 특성상 용량을 줄일 수 있지만 1픽셀 두께의 붉은 색 선이 심하게 흐려진다거나 하는 단점이 있습니다. 그걸 해제하는 설정이 1x1 샘플링입니다. 고화질에 유리하지만 낮은 품질에서 이도저도 아닌 애매한 결과를 초래할 수 있습니다. 기본값 off (사실 자동 = mozjpeg에서 품질에 따라 알아서 결정 원본),  on (번역)

개인적으로 체크를 권장합니다만, 위에서 설명했다시피 낮은 품질에서 역효과를 낼 수 있으므로 확인해보고 체크 해제하는 게 좋습니다.

           

 - 양자화 테이블: 기본값 또는 4 권장

저품질에서 무아레 현상에 영향을 줄 수 있습니다. https://www.google.com/search?pws=0&gl=us&q=%EB%AC%B4%EC%95%84%EB%A0%88+%ED%8C%A8%ED%84%B4  

 기본값 off (정확히는 mozjpeg 기본값이자 원래 JPEG 표준인 Annex K 사용)     

 4: mozjpeg에서 추구하는 PSNR-HVS를 위해 튜닝된 테이블 사용 (PSNR-HVS 자체에 대한 얘기는 맨 아래로)  

 5: Klein, Silverstein, Carney가 발표한 논문의 테이블을 사용. 일단 찾아보니 92년 당시에 나온 논문인데(체감상 무손실이면서 압축률을 높이기 위한 노력에 대한 논문인듯) 구체적으론 어떤지 모르겠습니다.

 

 

 - trellis: 기본값 권장. trellis라는 최적화를 사용합니다.  

 기본값 off (정확히는 mozjpeg 기본값인 trellis-dc라는 최적화 사용)

 notrellis: trellis off  

 tune-PSNR: PSNR 위주로 최적화 합니다. (mozjpeg 기본값은 PSNR-HVS 입니다.)

   

 - 부드럽게: 낮은 품질 한정으로 확인해보고 사용할 것을 권장. smoothing입니다. 화질을 흐릿하게 뭉개서 용량을 줄이는 방식인데, 용량이 제한된 상황(저품질 설정)에서는 결과적으로 화질을 개선(저용량으로 인한 체감 화질 감소를 줄임)할 수도 있습니다.

 

  

 

Exif 정보 제거: 카메라 정보, 회전 각도 등의 부가 정보를 지울지 여부입니다. Exif 나무위키 설명

ICC 색상 프로파일 제거: 색 영역 정보를 지울지 여부입니다. 색상 프로파일 나무위키 설명            

 - 위 둘은 확실히 필요없을 때만 체크 권장입니다. 있어야 되는데 괜히 지우면 사진이 90도 돌아가 보인다거나 색이 틀어지거나 할 수 있습니다.

 

 - 기존 이름에 글자 덧붙이기: 말 그대로입니다. 출력 파일 이름을  001-원본.jpg 식으로 만들어 줍니다.

           

 - 확장자 바꾸어 저장하기: 출력 파일 확장자'만' 바꾸는 기능입니다. mozjpeg 특성상 포맷은 무조건 jpeg으로 만들어 줍니다.

 

 

 

XnView

 

윈도우 설치파일

  Setup Win 32bit  Setup Win 64bit 


 

무설치 zip파일

  Zip Win 32bit  Zip Win 64bit   

  
 
실행하면 자동 감지로 한국어로 나올 겁니다만, 안 되면 설정(F12)에서 언어 선택을 해주면 됩니다.

 

1.png

 

2.png

 

 

일괄 변환(Ctrl+U)을 통해 변환하면 됩니다. 권장 설정은 아래와 같습니다.


3.png

 

4.png

 

 

메타데이터 보존하기(Exif 정보 = 카메라 정보, 회전 각도 등의 부가 정보를 지울지 여부입니다. Exif 나무위키 설명)

색상 프로파일 보존하기(ICC 색상 프로파일 = 색 영역 정보를 지울지 여부입니다. 색상 프로파일 나무위키 설명)

- 위 둘은 확실히 필요없을 때만 해제 권장입니다. 있어야 되는데 괜히 지우면 사진이 90도 돌아가 보인다거나 색이 틀어지거나 할 수 있습니다.

 

- Use CPU Core's 여러장 변환할 때 멀티코어 사용 여부입니다. Guetzli 자체는 완전 싱글스레드이므로, Guetzli를 여러개 실행해서 따로 변환 시키는 식으로 작동합니다. 당연히 변환할 사진이 몇개 없으면 그만큼만 작동합니다. CPU 스레드 수까지 설정 가능하므로 CPU를 최대한 쓰고 싶으면 최대로 설정하고, 제한하고 싶으면 낮춥니다.

 

 

Guetzli JPEG

 

 - 품질: 0~100, 말 그대로 JPEG 품질 설정입니다. 내릴수록 저용량 저화질이 됩니다. JPEG 특성상 100이라고 해서 엄밀히 무손실은 아닙니다. 변환 목적에 따라 선택합니다.

 

 - 프로그레시브 (점진적): 체크 권장. 로딩 시 저해상도로 먼저 로딩하는 방식입니다.(기본값인 baseline은 위에서부터 순차적으로 보여줌) https://www.liquidweb.com/kb/what-is-a-progressive-jpeg/ 가 차이를 잘 보여주고 있습니다만, 요즘은 인터넷 컴퓨터 모두 빨라서 어지간히 렉 걸리지 않는 한 차이를 보기 힘듭니다. 보통 용량이 좀 더 작아집니다.                 

 

 - 허프만 테이블 최적화하기: 사용 권장입니다. 뭔지 궁금하시면 구글링 #

 

 - DCT: 부동소수 권장. 빠르게 → 느리게 → 부동 소수점 순으로 용량이 더 줄어들지만 변환 속도가 느려집니다. 어차피 Guetzli 자체가 항상 느리므로, 장점을 극대화하기 위해 부동 소수점을 씁시다.

 

 - 평활 계수: 낮은 품질 한정으로 확인해보고 사용할 것을 권장. smoothing입니다. 화질을 흐릿하게 뭉개서 용량을 줄이는 방식인데, 용량이  제한된 상황(저품질 설정)에서는 결과적으로 화질을 개선(저용량으로 인한 체감 화질 감소를 줄임)할 수도 있습니다.
                      

 - 서브샘플링 계수: JPEG의 서브샘플링 특성상 용량을 줄일 수 있지만 1픽셀 두께의 붉은 색 선이 심하게 흐려진다거나 하는 단점이 있습니다. 그걸 해제하는 설정이 1x1 샘플링입니다. 고화질에 유리하지만 낮은 품질에서 이도저도 아닌 애매한 결과를 초래할 수 있습니다. 기본값은 2x2입니다.

    개인적으로 1x1을 권장합니다만, 위에서 설명했다시피 낮은 품질에서 역효과를 낼 수 있으므로 확인해보고 선택하는 게 좋습니다.

 

 - 내장 EXIF 썸네일 다시 만들기: 내부에 들어있는 작은 미리보기 사진을 다시 만드는 겁니다. 미리보기도 Guetzli로 다시 생성해서 용량을 조금 더 줄입니다.

 

 - 예측 품질 사용하기 (가능한 경우): 원본이 JPEG이고 품질 70으로 저장한 거라면 Guetzli 품질 100으로 변환하면 용량만 커지는 뻘짓이죠.(손실 압축 특성상 용량을 늘려서 변환한다고 화질이 좋아지지 않습니다. 물론 후처리 눈속임을 통해 개별 결과의 체감 화질 향상은 가능합니다만, 일반적이고 객관적인 화질 향상은 맥스웰의 악마 실현 = 영구기관 발명과 같은 선상의 얘기입니다.) 이때 원본의 품질 설정을 최대한 추측해서, 맨 위의 품질 설정을 해당 설정으로 재조절하는 겁니다.

 

 

- 파일명이나 그 외 옵션은 보이는 대로이므로 따로 설명하지 않습니다. 목적에 따라 설정하면 됩니다.

 

 

그 외 쓸만한 형식(포맷)

 * PNG - 굳이 설명이 필요 없겠지만, 나무위키 설명 #. 용량을 최대한 줄이려면 압축 수준을 최고인 9로 두면 됩니다.

 * WebP - 구글이 만든 비교적 최신 포맷. 손실(JPEG), 무손실(PNG), 움짤(GIF)을 모두 커버하며 사용할 수 있는 상황이라면 당연히 JPEG보다 더 효율적입니다. 나무위키 설명 #

   이미지 공유 사이트인 imgur #, 나무위키 등에 업로드가 가능합니다.

 

번호 제목 글쓴이 조회 추천 날짜
[공지] 강좌 작성간 참고해주세요 gooddew - - -
3515 서버 / IT| 개인화 시작페이지 개발자 입니다. [3] new 컴돌이 286 3 00:29
3514 윈 도 우| XPE 빌더에서 문서 저장을 위해 필요한 파일 목록입니다. [28] %카리스마 1263 32 03-21
3513 윈 도 우| 메인보드님의 강좌를 편안하게 볼수있도록 변환했습니다. [42] update SMURFF 1164 28 03-20
3512 윈 도 우| Auto Wim Make (만능윔 제작 방법) 1부 [24] 메인보드 1759 18 03-20
3511 윈 도 우| Auto Wim Make (만능윔 제작 방법) 2부 [9] 메인보드 826 12 03-20
3510 윈 도 우| Auto Wim Make (만능윔 제작 방법) 3부 [8] 메인보드 609 11 03-20
3509 윈 도 우| Auto Wim Make (만능윔 제작 방법) 4부 [8] 메인보드 510 11 03-20
3508 윈 도 우| Auto Wim Make (만능윔 제작 방법) 5부 [7] 메인보드 481 12 03-20
3507 윈 도 우| Auto Wim Make (만능윔 제작 방법) 6부 [8] 메인보드 492 11 03-20
3506 윈 도 우| Auto Wim Make (만능윔 제작 방법) 7부 마지막 [25] 메인보드 780 18 03-20
» 소프트웨어| JPEG 최적화 mozjpeGUI vs XnView (Guetzli) [6] 드로이얀7 ( 1111 6 03-15
3504 윈 도 우| 공백으로 시작하는 파일/폴더가 복사시에 문제 [2] ton3d 570 1 03-15
3503 소프트웨어| 초보님 전용 VHDman 사용법-연속 [27] JOA 1462 22 03-13
3502 윈 도 우| 우회프로그램 설치 안하고 윈도우 설정으로 막힌사이트 ... [2] 헬로카본 1577 1 03-13
3501 윈 도 우| 윈도우10 폴더에 태그를 다는 툴 Tag Folder를 소개합니다 [4] 핀조이 795 3 03-12
3500 소프트웨어| Total Commander에서 image converter 사용예제 [4] 지후빠 658 6 03-11
3499 소프트웨어| 초보님 전용 VHDman 사용법 [21] JOA 1478 21 03-11
3498 기 타| 배치 파일 팁 (echo문) [2] adda 1265 7 03-08
3497 서버 / IT| G4L Network Multicasting - 1 부 [8] gooddew 919 6 03-05
3496 윈 도 우| WinPE 한글화 관련(3) [14] sunshine 2192 25 02-28
XE1.8.27 Layout1.4.8