JPEG

 


1. 개요
2. 상세
3. 특징
3.1. 정보 손실
3.2. 작은 용량
3.3. 이중 압축
3.4. 순차 주사
3.5. Motion JPEG
3.6. JPEG2000
4. 유용한 웹 사이트
5. 그 외
5.1. 웹 문화
5.2. 압축률 향상을 위한 노력


1. 개요


Joint Photograph Experts Group의 약자로, 그림 파일 형식의 하나다.

2. 상세


'''제이펙'''(J(제이), PEG(펙))이 공식 발음이지만 '제피이지'라고 발음하는 사람도 있다.
정지 화상을 위해서 만들어진 손실 압축, 무손실 압축(JPEG 9.1부터) 방법 표준이다. 이 표준은 ISO와 ITU-T에서 제정하였다.(ISO 10918-1, 한국어 설명)
JPEG를 사용하는 파일 형식들도 보통 JPEG 이미지라 불리며, .jpg, .jpeg, .jpe, .jfif 등의 확장자를 사용한다. 이름 바꾸기로 확장자를 바꿔도 문제가 없다.
JPEG 표준은 이미지가 어떻게 연속된 바이트로 바뀌는지만을 규정한다. 그 외 확장 방식(아마도 컨테이너 방식)에 따라 아래와 같은 몇가지 유형이 나뉘어진다.
  • EXIF-JPEG: 디지털 카메라의 사진 저장 방식이다. EXIF 방식의 메타데이터를 포함하여 사진을 찍은 시간, GPS, 카메라 정보 등을 기록한다.
  • JFIF: JPEG File Interchange Format으로, 인터넷에서 스트림 전송[1]에 적합한 형태로 이미지를 담는 파일 형식이다. 독립 JPEG 그룹(Independent JPEG Group; IJG)에서 만들었다.
  • 그 외: JNG와 같은 파일 형식도 있다.

3. 특징



3.1. 정보 손실


[image]
흔히 이미지가 '깨진다', 또는 '사이버풍화', '디지털 풍화'라고 말하는 현상.
JPEG/JFIF는 웹 상에서 사진 등의 화상을 보관하고 전송하는 데 가장 널리 사용되는 파일 형식이다. 압축 과정은 YIQ모델로 변환 → Macroblock화 → 8×8블록화 → 이산 코사인 변환 → 양자화[2] → 지그재그 스캐닝 → 엔트로피 코딩의 단계를 거친다. 이 중에서 '''양자화 과정이 유일하게 되돌릴 수 없는 과정'''으로, 이 과정에서 일부 데이터가 소실된다. 때문에 이 압축 방법은 인물이나 풍경 사진에는 쓸만할지 몰라도, 문자, 선, 세밀한 격자 등 고주파 성분이 많은 이미지의 변환에서는 GIFPNG에 비해 불리하며, 나쁜 품질을 보이는 경우가 많다.
현재는 JPEG 표준에도 비손실 압축 방법이 정의되어 있지만, 사실 원래 손실 압축 전용 규격이며 이를 대체하기 위한 손실/비손실 통합 규격이 이미 2000년대 초(JPEG 2000)와 2006년(JPEG XR)에 제안된 바 있다.[3] 비손실 JPEG 표준(9.1)은 저 둘이 실패한 후 2014년에야 나왔다(JPEG 최초버전은 1992년 생이다!). 아마 새로운 이름으로 보급이 안 되니깐 기존이 쓰던 이름 그대로 버전업 형식으로 추가하면 그나마 보급이 되지 않을까 싶어 시도한 것으로 보이지만, 특허 문제와 압축률 등의 이유로 잘 사용되지는 않으며, 비손실 압축 형식을 쓰려는 사람은 PNG 등의 비손실 압축 전용 포맷을 많이 사용한다.[4] 반대로 9.1 이전 JPEG으로 비손실 저장을 하는 방법도 있지만, 이쪽은 압축과정 대부분을 생략하는 편법에 가까워서 포맷만 JPEG이지 압축률 문제가 극심하다. 현재 손실/비손실 통합 포맷 중 그나마 쓰이는 편인 건 구글이 밀어주는 WebP(2010년) 정도이다.
사진을 압축할 목적으로 개발한 알고리즘이기 때문에 복잡한 패턴과 색상이 포함될수록 손실을 으로 감지하기 어려워진다. 쉬운 예로 단색이나 뚜렷한 윤곽선을 가지는 그래픽을 JPEG 압축하면 색이 뭉개지며 흩뿌려지거나 윤곽선 주위에 노이즈가 낀다.[5]
품질 설정이 낮을수록 '''과감하게''' 손실시키면서 압축하기 때문에 적당히 낮은 값으로 고정되어 설정 자체를 보여주지도 않는 그림판 같은데서 이 포맷으로 저장하면 아름답게 도트가 뭉개지고 색이 갈변하는 것을 볼 수 있다.(...)[6] 그리고 DSLR을 사용하는 사람들은 JPEG보다는 raw 이미지를 사용하고, 인쇄 출판 계통쪽 사람들은 TIFF, EPS 포맷을, 웹에서 무손실 포맷이 필요할 때는 PNG를 많이 쓰는 편. JPEG로 저장할 때 최상 퀄리티로 설정해두면 그만큼 압축률은 떨어지지만 손실도 적어져서 포토샵 기준 품질 12[7][8]정도 되면 웬만큼 확대해서 비교해도 무손실인 것처럼 보이는 수준이긴 한데, JPEG 9.1이 아닌 이상 아무리 높은 퀄리티로 해도 손실이 없어지진 않는다.
JPEG를 쓸 때 빨간색이 들어가는 이미지라면 다른 포맷을 쓰는 것이 좋다. 빨간색이 특히 잘 무너진다. 또한 흰색의 녹화 현상도 심하다. 인코더 설정에서 1:1 서브샘플링(4:4:4 컬러 서브 샘플링 또는 픽셀 서브샘플링 없음) 설정이 가능하면 전혀 일어나지 않는 현상이다. 물론 용량 증가[9]는 감수해야 한다.
JPEG로 저장된 파일을 불러와서 편집하고, 다시 JPEG 형식으로 저장하면 그림이 한 층 더 뭉개진다(…). 손실 압축 포맷 자체의 특성상 당연한 얘기지만... 따라서 JPEG로 그림을 보관하는 경우에는 편집을 대비해서 원본을 별도로 보관할 필요가 있다.

3.2. 작은 용량


작은 용량 덕분에 각종 웹 사이트들이 가장 좋아하는 업로드 확장자의 하나이다. 특히 대부분 국내 웹 사이트들은 이미지 업로드시 강제적으로 JPEG나 GIF 혹은 PNG 형식 파일만 업로드 하게 지정해놓고 있다. 이유는 딱 하나. 용량이 작으니까.[10] 그 중에서도 JPG 확장자를 제일 선호하는 듯 싶다.

3.3. 이중 압축


손실 압축을 하는데도, 한 번 더 (무손실)압축할 수 있는 프로그램이 있다. (WinZip, Stuffit, PackJPG) 단, 고유 파일형식을 사용하기 때문에 똑같은 프로그램이 없으면 압축 해제가 안된다.

3.4. 순차 주사


순차 주사(Progressive)를 지원한다. 이걸 쓸 경우 웹상에서 로딩 방식이 달라지고[11] 포토샵 기준으로 파일 용량이 10% 가량 줄어드는 장점이 있다. 다만 저장할 때마다 세팅을 일일이 해야 하는 귀찮음이 있다(...).

3.5. Motion JPEG



이 JPEG 기술을 이용해서 나온 동영상 파일 포맷이 Motion JPEG로, QuickTime Player에 처음 채용했다. MPEG과는 달리, 여러 프레임 사이의 압축을 하지 않기 때문에 MPEG보다 더 용량이 크다.
의외로 여러 군데서 쓰였는데, 플레이스테이션의 동영상 포맷으로 사용되었다. 일부 디지털 카메라로 동영상을 촬영하면 이 포멧으로 인코딩 된다.
여담으로 JPEG Still Image라고도 한다.

3.6. JPEG2000


위 정보손실 문단에서 언급된 방식으로, 웨이블릿 변환(Wavelet Transform) 방식을 기반으로 한다. JPEG의 후계 포맷으로 고안되었다가 코덱이 지나치게 무거워서 보급에는 실패하였으나 '''사실상 디지털 영화의 표준'''인 DCP의 영상에서 쓰여 아주 중요한 포맷이 됐다.

4. 유용한 웹 사이트


만일 JPEG로 인한 화질 저하가 없으면서, 파일 용량을 줄이길 바라면 이 사이트에서 변환하면 된다. 사진 크기나 기타 다른 변환 없이 용량만 줄여준다. 다만, 업로드 시 JPEG 확장자만 지원한다.
위 사이트랑은 정반대로, 화질이 손실되는 확장자라는 걸 조크로 삼아 이미지 화질을 확 내리는 needs more jpeg라는 사이트도 존재한다. 레딧에서도 봇이 존재한다.
[image]
[image]
Need more jpeg에서 변환한 이미지(...)

5. 그 외



5.1. 웹 문화


  • 디시인사이드에서 시작된 것인데, 언젠가부터 글 제목 뒤에 '***.jpg'가 붙어 있는 글들이 생겨나기 시작했다(예시: XXX 근황.jpg). 이것은 그 게시물의 내용이 그림이 주임을 제목으로부터 전달하려고 만들어진 것이다. 이래야 조회수가 높아지기도 하고. 특히 국내야구 갤러리 같은 메이저 갤러리에선 거의 개념글 제목이 '.jpg'로 도배되어 있는 풍경을 볼 수도 있다(...). 물론 이를 악용해서 낚시하기도 한다. 또, 이와 비슷한 .txt 또는 '.manhwa', '.ssul'와 '.gisa'와 같은 그냥 로마자 단어 하나를 넣는 것도(...) 언제부터인지 쓰이기 시작했다. '.jpg'와 '.gif'를 합친 '.jpgif'라는 변종도 있으며(예시: XXX 근황.jpgif), 바리에이션으로 'jyp'로 부르기도 한다. 그리고 리그 오브 레전드 유럽 리그인 LEC에서도 .jpg 드립을 썼다.deadlions.jpg 아래와 같이 영미권에서는 주로 jpeg으로 읽는 것을 생각하면..
  • 제목에 '.JPG'를 붙이는 이유.JPG 가 있는데, 조회수와 추천수에서 큰 차이를 보인다. #
  • 영미권에서는 'JPEG'를 /제이펙/으로, 한 단어처럼 읽는다. 한국에서는 그냥 /제이피(이)쥐/로 약어를 하나씩 읽는 것이 압도적.
  • 'JPEG = Japanese Girl'이라는 드립이 있다.


5.2. 압축률 향상을 위한 노력


  • 웹에서 가장 많이 쓰이고 있어 동일 화질 기준 좀 더 크기를 작게(동일 용량 기준 화질이 좋게) 하기 위한 연구가 많이 있다. 대표적인 것이 모질라의 프로젝트인 mozjpeg # 와 구글의 Guetzli가 있다.
  • mozjpeg는 약 10% 정도 더 작게 압축을 한다고 한다.
  • Guetzli는 약 35% 정도 더 작게 압축을 할 수 있다고 하는데, 문제는 압축 속도가 250배 이상 느리다. 심지어 저 속도는 mozjpeg 기준이다! mozjpeg도 포크 원본인 libjpeg-turbo[12]에 비해 느리다고 많이 까인 걸 생각하면 충격과 공포 수준...# (댓글들 참고)
  • mozjpeg가 더 먼저 나왔고 평가도 더 좋은 편이다. JPEG의 원래 용도(사진이나 고해상도 게임 그래픽 등 복잡한 패턴과 색상을 압축할 때)에서 체감 화질 대비 압축률이 매우 좋은 편이다. 반면 Guetzli는 단색이나 뚜렷한 윤곽선을 가지는 그래픽에서 JPEG 특유의 단점을 덜 드러내는 편인데, 그런 경우 차라리 WebPHEIF, AVIF, PNG를 쓰는 게 나은 경우가 많다. WebP, HEIF, AVIF야 차기 포맷이라 당연히 우수해야 하고, 어디까지나 WebP는 차기 치곤 많이 쓰이는 편이고 아직 은근히 지원 안 되는 곳이 많다지만, PNG에게도 까이는 상황은...[13] 1, 2, 3, 4
  • 윈도우 사용자를 위한 GUI 변환기는 mozjpeGUI(mozjpeg), iPress링크[14], XnView(Guetzli)를 사용하는 것이 가장 편리하다. #

[1] 일반적으로 스트림 전용 방식이라면 파일 전송이 완료되기 전에 메타데이터를 먼저 전송해서 파일 정보를 일찍 확인할 수 있게 만들고, 네트워크 환경이 불안정해서 전송이 일부 끊겨도 처음부터 다시 전체 파일을 받을 필요 없이 패킷을 관리할 수 있게 구조를 짜는 등의 기술이 들어간다.[2] Quantization, 계수화라고도 한다.[3] 반디집으로 유명한 키플러님이 2007년 당시 관련 프로그램을 만들면서 소개한 글이 있다.[4] PNG도 Opus 비슷한 방식으로 손실 압축을 하는 게 가능하지만, 별도 유틸을 이용한 개조이지 포맷 자체는 비손실만 정의하고 있다. 음악 쪽으로는 손실 FLAC이 비슷한 처지.[5] 이 때문에 배경을 따는 데 애로사항이 생긴다. 여기서 나온 것이 디자이너를 괴롭히는 방법이다(...).[6] 그림판을 열어 빨간색으로 선을 쭉 그은뒤 저장해보자. 갈색이 된다.[7] 프리셋 맥스가 아니다! 프리셋 맥스는 품질 10인 점을 조심. 포토샵은 품질 12가 최대이다. 100을 최대값으로 쓰는 프로그램들과 혼동하지 않도록 주의할 것.[8] 웹용으로 저장(Ctrl+Shift+Alt+S)을 쓰는 경우 품질을 100단계로 설정 가능하다.[9] 용량이 정해진 상황이라면 결국 다른 측면에서 화질 열화가 일어난다.[10] 보안적인 이유도 있다. 웹셸이나 XSS 등 서버나 클라이언트에 악영향을 주는 파일의 업로드를 원천적으로 차단하기 위함이다.[11] 저해상도의 이미지를 앞서 보여준 다음 점점 해상도를 높이는 방식으로 로딩된다.[12] 제일 원조는 libjpeg/SIMD이고, libjpeg/SIMD와 libjpeg-turbo 모두 SIMD 및 최신 CPU기술 활용을 통한 속도 향상에 중점을 두고 있다.[13] 사실 해당 상황은 소스 자체에 대한 JPEG의 한계이기 때문에 mozjpeg도 PNG에게 까이는 건 마찬가지다. 진짜 문제는 Guetzli는 너무 느리다. mozjpeg 정도의 느린 거야 최신 CPU의 힘으로 웃어넘길 수 있는 수준인 반면, Guetzli은 어지간한 HD급 게임 스크린샷 한 장 변환하는데도 몇 분이 걸릴 정도로 정말 한참 걸린다(...)[14] 구라제거기 제작자가 만든 것.