확인하기 위해 실험적으로 ForeverWintr의 분석을 테스트 하겠습니다 .
JPEG 압축을위한 입력 화상의 최악 (또는 임의의 압축, 실제로는) 이론적 비압축성 인 RGB 랜덤 노이즈 균일하다. netpbm 도구를 사용하여 생성하겠습니다 .
$ rawtoppm < /dev/urandom 640 480 > rnd.ppm
$ pnmtopng < rnd.ppm > rnd.png
$ du -b rnd.*
923772 rnd.png
921615 rnd.ppm
(균일하게 임의의 RGB 노이즈, 무손실 PNG 형식, 903kb)
참고 (2017 년 3 월) : 이 답변을 처음 작성하고 2013 년에 다시 올렸을 때 위의 이미지 가 PNG 형식 으로 되어 있다고 확신합니다 . 어느 시점에서 자동으로 JPEG로 변환되어 시각적 비교를 쓸모 없게 만듭니다.
새 PNG 테스트 이미지를 다시 업로드하려고 시도했지만 이미지에서 임의의 PNG 파일 크기 제한에 도달하고 JPEG로 자동 변환됩니다. 이 문제를 해결할 방법이 있는지 확실하지 않지만 적어도 Linux 상자에 액세스 할 수 있으면 주어진 명령을 다시 실행하여 자체 테스트 이미지를 생성 할 수 있습니다. 어쨌든 압축 품질의 직접적인 시각적 비교를 방지하는 것 외에는 아래의 분석이 어떤 식 으로든 무효화되지 않습니다.
압축되지 않은 PPM 파일의 길이는 예상대로 640 × 480 × 3 = 921,600 바이트에 최소 PPM 헤더의 경우 15 바이트입니다. PNG 형식을 사용하여 손실없이 압축하려고하면 크기가 2157 바이트 증가하여 PNG 헤더와 메타 데이터에 의해 압축되어 압축 불가능한 데이터를 압축하려는 압축 알고리즘에서 약간의 비효율이 발생할 수 있습니다.
(예, 픽셀 당 3 바이트가 아닌 4의; 얻을 수있는 그래픽 파일 형식으로 간단하게 대한 경우에도 PPM 형식을 디스크에 픽셀 당 쓸모없는 네 번째 바이트를 저장하는 바보 충분하지 않다가. 수 일부 수 특히 알파 채널도 저장해야하지만 파일에 이미지를 쓸 때 이러한 이유가 적용되지 않는 경우 정렬 이유 때문에 메모리에 저장하는 이점 이 있습니다.)
그렇다면 JPEG는 어떻습니까? 먼저 압축 손실을 최소화 해 봅니다 (품질 = 100, 크로마 서브 샘플링 없음, 부동 소수점 DCT). 불행히도 pnmtojpeg
매뉴얼 에는 모든 관련 옵션을 설정하는 방법이 명확하게 설명되어 있지 않습니다 (특히 -sample
옵션은 libjpeg 문서의 파일을 참조하는 "마법사 옵션"섹션에 나열되어 있음). 대신 김프. 결과 파일은 다음과 같습니다.
897249 rnd.jpg
(JPEG 압축 RGB 노이즈, 품질 = 100, 크로마 서브 샘플링 없음, 876 kb)
어떻게 작아 질 수 있습니까? 순수한 소음은 압축 할 수 없다고 말하지 않았습니까? 음, 일 정상 JPEG 압축이 아닌, 심지어 최대 품질로이다 매우 무손실. 김프에서 이미지를 다시 열고 원본과 비교하면 일부 픽셀의 색상 값이 1-2 단계 (256 개 중)만큼 이동했음을 알 수 있습니다. 이것들은 JPEG 압축 알고리즘이 "속임수"로 여기에서 조금 던져 버린 픽셀입니다. 다른 곳에서는 변화가 눈에 띄지 않을 것으로 추정했습니다. 실제로, 육안으로 볼 수없는 결과는 원본과 상당히 구별 할 수 없지만, 폐기 된 비트는 헤더 및 인코딩 오버 헤드를 고려한 후에도 파일 크기가 크게 감소합니다.
그것은 최대 품질이었습니다. pnmtojpeg
기본값 (품질 = 75, 서브 샘플링 사용) 과 같은 일반적인 설정은 어떻습니까? 해 봅시다:
$ pnmtojpeg < rnd.ppm > rnd2.jpg
$ du -b rnd2.jpg
185128 rnd2.jpg
(JPEG 압축 RGB 노이즈, 품질 = 75, 크로마 서브 샘플링, 184 kb)
와우, 901에서 184kb까지! 그러나 그것은 매우 공격적인 압축이며 이미지를 자세히 비교할 때 차이점을 분명히 알 수 있습니다. 대부분 기본적으로 색상 (색조 / 채도) 데이터의 75 %를 버리는 크로마 서브 샘플링 때문입니다. 서브 샘플링이 비활성화 된 김프에서 시도하면 350,618 바이트 파일이 확대 되어도 원본과 거의 비슷하게 보입니다.
어쨌든,이 모든 포인트는 것을 증명하는 것입니다, 시끄러운 당신의 밤 하늘의 사진이 될 수 있는지에 상관없이, 당신이 선택할 수 있습니다 얼마나 높은 품질에 상관없이, 그냥 없다 방법 640 × 480 JPEG 파일은 900보다 훨씬 더 큰 얻을 수 있습니다 kb. (카메라가 멀티 메가 바이트 Exif 컬러 프로파일을 똑같이 어리석은 것에 부착하지 않는 한, 즉 더 일반적인 JPEG 압축 설정을 사용하는 경우 가능한 최대 파일 크기는 약 200kb 정도로 줄어 듭니다. .