소프트웨어 JPEG 최적화를 위한 mozjpeg을 편하게 써봅시다 - mozjpeGUI

2019.03.09 13:21

드로이얀7 (이준호) 조회:850 추천:4

예전에 Guetzli에 대한 기사가 나오면서 mozjpeg에 대한 얘기도 같이 나온 적이 있죠. https://windowsforum.kr/info/8395906 , https://teus.me/431 , https://teus.me/432

 

그때 관심가서 조금 찾아보고 비교 글을 써보기도 했습니다. http://lite.parkoz.com/zboard/view.php?id=express_freeboard2&no=429594 , http://lite.parkoz.com/zboard/view.php?id=express_freeboard2&no=429597

 

시간이 흘러 잊고 있다가, 다시 써볼까 해서 찾아보니 mozjpeg 자체가 버전 업 좀 된 거 외에 별로 바뀐 게 없더군요. 여튼, 윈도우 사용자가 GUI로 편리하게 쓸 수 있을만한 게 없나 열심히 구글링 해봤지만 이것도 예전과 별 다를 게 없는 상황이더군요. 그래서 예전에 찾은, 일본인( http://s.masayaohara.com/ ) 에게 문의메일 보냈더니 별로 기대하지 말라고 답변(4년 반 전에 만든 거라 개발환경부터 새로 세팅해야 된다고...)을 보내줬다가 17일여 만인 오늘 새 버전을 내놨다고 알려주네요. 그동안 mozjpeg 자체도 업데이트 되어서 mozjpeg 3.4 버전이 동봉되어 있습니다.

 

 

배경 설명 - JPEG은 현재 가장 많이 사용되는 사진 전송용 고효율(손실압축) 포맷입니다만, 1992년에 나온 규격이다보니 한계가 뻔한 단점이 있습니다. 이미 2000년대 초중반에 대체용 차기 포맷이 나왔으나 보급에 실패하고(반디집으로 유명한 키플러님이 당시에 변환기 만들어 공개하면서 쓴 글이 있습니다. #) 이후 나온 전략들이

 - JPEG을 버전업 해서 무손실 지원 추가(JPEG 9.1) - 특허 문제 등으로 잘 안 쓰임

 - 자사 서비스 위주로 차기 포맷 보급(구글의 WebP - 나무위키 설명) - 구글+유투브의 위엄으로 그나마 좀 힘쓰고 있는 편

 - 인코더를 개량해서 JPEG 압축률 향상을 시도(jpgcrush → mozjpeg 순으로 나왔고 이후 구글이 독자적으로 만든 게 Guetzli)

 

인데, WebP가 2010년에 만든 차기 포맷인 만큼 더 좋긴 합니다만, 19년 현재도 WebP 업로드를 지원하는 국내 사이트는 전혀 없는 수준이고 해외 사이트도 매우 드물어서(이미지 공유 사이트로 유명한 imgur만 하더라도 원조 imgur는 WebP를 받지만 유사 짝퉁 사이트들은 단 하나도 지원 안 하는 것으로 보임) mozjpeg이나 Guetzli가 유용할 수 있습니다만, 저 두 프로젝트 모두 인프라를 만드려는 연구 프로젝트다 보니 직접적으로는 소스 코드만 제공하고 니가 알아서 컴파일해 써라이기 때문에 그냥 윈도우만 쓰는 유저는 실행시켜보는 것 부터가 일입니다. 누군가 윈도우에서 실행되는 바이너리를 제공하고 버튼만 누르면 손쉽게 쓸 수 있는 그래픽 사용자 인터페이스(GUI)를 제공하는 껍데기(프론트엔드)도 제공해야 누구나 쉽게 써먹을 수 있지요.

 

 

사용 방법 - 첨부파일을 받아서 적당한 곳에 압축풀고 mozjpeGUI.exe를 실행하면 됩니다.

 

추가: 업데이트, 버전은 그대로지만 밑에 적은 글자 크기 문제가 수정되었습니다.

 

1.png

 

 

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

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

글자 크기가 버튼마다 지 멋대로인데, 개인이 만든 프로그램이라 그런 것 같습니다. 일단 개발자에게 말은 해뒀는데 안 고쳐도 어쩔 수 없죠, 뭐...

 

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

 

 - 품질: 말 그대로 JPEG 품질 설정입니다. 내릴수록 저용량 저화질이 됩니다.

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

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

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

 - 양자화 테이블

저품질에서 무아레 현상에 영향을 줄 수 있습니다. 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 색상 프로파일 제거: 색 영역 정보를 지울지 여부입니다. 색상 프로파일 나무위키 설명

 

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

 

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

 

 

 

mozjpeGUI vs Guetzli

 

현재 Guetzli는 XnView (이곳 자료실에도 올라오는 전통있는 유명 이미지 뷰어 및 변환기)에서 지원하기 때문에 개인이 4년 반만에 업데이트한 mozjpeGUI보다 편리합니다. PNG 입력을 못 받아서 다른 프로그램 통해 BMP로 변환해서 먹여야 할 일도 없고요. 또한 최신 버전 모든 최적화 옵션 다 사용할 때 기준으로 Guetzli가 좀 더 나은 결과(유사 화질 적은 용량)를 보이는 것 같습니다.(정확히 비교한 건 아니고 동일 파일을 품질 100으로 변환해서 용량만 비교함)

 

다만 Guetzli는 변환이 정말 무지하게 느립니다. 멀티코어도 못 써서 싱글스레드 프로그램이고요.(유명 게임 스텔라리스처럼 사실상 싱글스레드만 쓰는 수준이 아니라 아예 스레드 자체가 1개만 있음) 싱글스레드인 건 mozjpeg 포함 기존 변환기도 모두 마찬가지지만 웬만한 파일 변환 시 얼마 안 걸리기 때문에 상관 없는데(얼마 걸리지도 않는 작업을 쓸데없이 멀티스레드화 시키면 오버헤드로 오히려 느려질 수 있습니다), Guetzli는 뒤지게 느리게 만들어 놓고 추가적인 속도 향상 개선을 안 하니.... mozjpeg도 나올 당시 포크 원본인 libjpeg-turbo에 비해 수십배 느리다고 많이 까인 편인데, 거기서 다시 수백배 느린 게 Guetzli니...다만, XnView를 통해 변환 시 여러개 동시 변환(CPU 스레드 수만큼)을 지원하기 때문에 여러장 동시에 변환할 때는 CPU를 다 쓸 수 있습니다. 물론 한 장 변환 속도는 그대로입니다만...(보통 이런 상황을 스루풋은 높아졌지만 레이턴시는 그대로라고 하죠.)

 

 

PSNR-HVS, PSNR ???

손실 압축이 생기면서 원본 대비 화질 차이를 객관적으로 계산할 표준이 필요해졌고, 그래서 만들어진 게 peak signal-to-noise ratio (PSNR) and mean squared error (MSE)입니다. 이후, 사람 눈으로 보는 체감 화질을 좀 더 잘 반영하게 위해 structural similarity (SSIM), PSNR-HVS, PSNR-HVS-M, Butteraugli 등이 만들어졌습니다.

mozjpeg은 기본값 기준 PSNR-HVS에 맞추어진 trellis 최적화를 사용합니다. (옵션으로 PSNR, SSIM, MS-SSIM 사용 가능. mozjpeGUI는 PSNR-HVS, PSNR만 지원)

Guetzli는 Butteraugli 기준으로 최적화 합니다.

 

자세한 것은 영문 위키백과 참고

https://en.wikipedia.org/wiki/Structural_similarity

https://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio

https://en.wikipedia.org/wiki/Guetzli#Butteraugli

 

번호 제목 글쓴이 조회 추천 날짜
[공지] 사용기/설치기 이용안내 gooddew - - -
6163 윈 도 우| 안녕하세요 RS5_v1809_(17763.349) 마지막 작품 [583] V무등산V 4023 108 03-10
6162 윈 도 우| [bat 추가] bootmgr 상위 버전으로 교체하기 [23] suk 1367 31 03-10
6161 하드웨어| Samsung FIT Plus 256G 벤치 돌려봤습니다 [2] DarknessAn 833 2 03-09
» 소프트웨어| JPEG 최적화를 위한 mozjpeg을 편하게 써봅시다 - mozjpeGUI [5] 드로이얀7 ( 850 4 03-09
6159 윈 도 우| 드림 PE 이렇게 동작됩니다. [128] %카리스마 4036 76 03-09
6158 윈 도 우| 누구 따라 왔네왔어 입니다^^; [32] 첨임다 1825 19 03-09
6157 하드웨어| 2700X 가 왔네요^ [4] bleach 1257 2 03-08
6156 소프트웨어| 오버클럭툴의 새바람! RunMemTestPro! [4] bleach 1268 9 03-08
6155 윈 도 우| 윈도우 봉인시 어드민계정 X / 사용자계정 O Test [11] 메인보드 1221 9 03-07
6154 하드웨어| 새로 구입한 외장SSD 삼성 T5 사용기 [10] 대저 1295 5 03-07
6153 윈 도 우| MDS님의 Win10 1809 17763.348_3in1 10.15 입니다. [20] SHIELD 1265 9 03-07
6152 소프트웨어| 18841/18845 wim부팅 오류시 [23] 집앞의_큰 585 24 03-07
6151 윈 도 우| WTG에 win7과 win10 과 winPE넣어보기 [41] 첨임다 1520 15 03-07
6150 윈 도 우| DREAM WTG & PE [40] %카리스마 3592 30 03-06
6149 윈 도 우| [테스트 추가] 윈도10 버전1903는 스펙터 패치 성능 저하... [17] suk 1563 11 03-06
6148 윈 도 우| 윈도10 버전1903는 스펙터 패치 성능 저하가 거의 없게 ... [10] suk 2025 12 03-05
6147 윈 도 우| 움직이는 시작버튼 시작메뉴 열고 닫기까지입니다. [9] 갑파니 749 7 03-05
6146 윈 도 우| 호환성 100% USB 만들기 [60] %카리스마 5060 30 03-05
6145 소프트웨어| UEFI:NTFS 부팅파일 [19] %카리스마 2571 14 03-05
6144 윈 도 우| DREAM WTG Second Edition [34] %카리스마 2940 25 03-04
XE1.8.27 Layout1.4.8