作者:馬健
郵箱:stronghorse_mj@hotmail.com
主頁:http://www.comicer.com/stronghorse/
發布:2017.07.23
教程十九:用JpegQuality看JPG文件的壓縮參數
事先聲明:
- 嚴格說來這篇教程是講JpegQuality的,其實與CEP本身關系不大,但因為我自己經常從CEP啟動JpegQuality查看JPG壓縮參數, 我覺得其他人可能也有類似的需求,所以就在CEP系列教程里加了這么一篇,並不是有意給JpegQuality打廣告。
- JpegQuality顯示的信息比較簡略,如果想看JPG文件的詳細信息,比如說EXIF的具體內容,請使用JPEGsnoop,JpegQuality可以說是它的簡化版。
- 本文內容是我的一家之言,部分內容可能令人反感,因此技術考據癖、技術抬杠癖敬請退散,不必往下看了,以免浪費你我的時間和口水。
- 本文所有數據只基於我手上所擁有的實際樣本,並且沒有一個樣本是廠家直接提供的。如果有文中提到的廠家對本文內容不滿,可以抬頭向上看,請用上面的郵箱地址與我聯系,並提供相關企業身份證據,我將在第一時間刪除相關信息並在本文中做補充說明。
言歸正傳。在上一篇教程中,我列舉了與JPG文件長度、質量有關的壓縮參數,包括質量系數(其實是量化表)、色彩縮水系數等。在CEP中轉存JPG時,一方面可以自己重新設定JPG的壓縮參數,另一方面也可以設置為直接copy源JPG文件的壓縮參數,以獲得與源JPG文件差不多的文件長度和質量。那么常見的圖像處理軟件,或圖像獲取設備(相機、手機)所生成的JPG文件,他們的JPG壓縮參數又是怎樣的?從中又能看出些什么?
用JpegQuality看JPG的壓縮參數其實操作很簡單,啟動JpegQuality后把要看的JPG文件拖拽過去就行了,或者從CEP里啟動,即可看到CEP正在處理的JPG文件的壓縮參數。以Photoshop CC 2015為例,我用同一張圖片設置為不同色彩空間、用不同質量系數存為JPG后用JpegQuality顯示出來的參數如表1所示。表中數據均用WinCam32從JpegQuality直接復制過來,不存在手工輸入錯誤的問題 ,以下各表不再重復說明。
表1 Photoshop CC 2015的JPG壓縮參數
色彩空間 | 質量 | 色彩空間 | 通道數 | 采樣 | 數據精度 | 漸進式 | 優化編碼 | 量化表數 | 16位量化表 | 反推質量系數 | 方差 |
RGB色彩空間 | 0 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 是 | 2 | 否 | 46/81 | 20996.66/4238.72 |
1 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 是 | 2 | 否 | 52/82 | 14797.56/3344.80 | |
2 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 是 | 2 | 否 | 62/85 | 6735.90/1496.54 | |
3 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 是 | 2 | 否 | 73/87 | 2366.12/885.74 | |
4 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 是 | 2 | 否 | 77/88 | 1338.37/510.31 | |
5 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 是 | 2 | 否 | 82/90 | 671.52/255.96 | |
6 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 是 | 2 | 否 | 86/91 | 255.23/98.34 | |
7 | YCbCr | 3 | 1x1 1x1 1x1 | 8 | 否 | 是 | 2 | 否 | 83/88 | 462.13/592.80 | |
8 | YCbCr | 3 | 1x1 1x1 1x1 | 8 | 否 | 是 | 2 | 否 | 88 | 111.68/201.04 | |
9 | YCbCr | 3 | 1x1 1x1 1x1 | 8 | 否 | 是 | 2 | 否 | 91 | 31.57/55.24 | |
10 | YCbCr | 3 | 1x1 1x1 1x1 | 8 | 否 | 是 | 2 | 否 | 94 | 8.52/8.09 | |
11 | YCbCr | 3 | 1x1 1x1 1x1 | 8 | 否 | 是 | 2 | 否 | 97 | 3.47/0.74 | |
12 | YCbCr | 3 | 1x1 1x1 1x1 | 8 | 否 | 是 | 2 | 否 | 98 | 4.81/0.50 | |
CMYK色彩空間 | 0 | YCCK | 4 | 1x1 2x2 2x2 1x1 | 8 | 否 | 是 | 2 | 否 | 46/81 | 20996.66/4238.72 |
1 | YCCK | 4 | 1x1 2x2 2x2 1x1 | 8 | 否 | 是 | 2 | 否 | 52/82 | 14797.56/3344.80 | |
2 | YCCK | 4 | 1x1 2x2 2x2 1x1 | 8 | 否 | 是 | 2 | 否 | 62/85 | 6735.90/1496.54 | |
3 | YCCK | 4 | 1x1 2x2 2x2 1x1 | 8 | 否 | 是 | 2 | 否 | 73/87 | 2366.12/885.74 | |
4 | YCCK | 4 | 1x1 2x2 2x2 1x1 | 8 | 否 | 是 | 2 | 否 | 77/88 | 1338.37/510.31 | |
5 | YCCK | 4 | 1x1 2x2 2x2 1x1 | 8 | 否 | 是 | 2 | 否 | 82/90 | 671.52/255.96 | |
6 | YCCK | 4 | 1x1 2x2 2x2 1x1 | 8 | 否 | 是 | 2 | 否 | 86/91 | 255.23/98.34 | |
7 | YCCK | 4 | 1x1 1x1 1x1 1x1 | 8 | 否 | 是 | 2 | 否 | 83/88 | 462.13/592.80 | |
8 | YCCK | 4 | 1x1 1x1 1x1 1x1 | 8 | 否 | 是 | 2 | 否 | 88 | 111.68/201.04 | |
9 | YCCK | 4 | 1x1 1x1 1x1 1x1 | 8 | 否 | 是 | 2 | 否 | 91 | 31.57/55.24 | |
10 | YCCK | 4 | 1x1 1x1 1x1 1x1 | 8 | 否 | 是 | 2 | 否 | 94 | 8.52/8.09 | |
11 | YCCK | 4 | 1x1 1x1 1x1 1x1 | 8 | 否 | 是 | 2 | 否 | 97 | 3.47/0.74 | |
12 | YCCK | 4 | 1x1 1x1 1x1 1x1 | 8 | 否 | 是 | 2 | 否 | 98 | 4.81/0.50 | |
灰度 | 0 | 灰度 | 1 | 1x1 | 8 | 否 | 是 | 1 | 否 | 46 | 20996.66 |
1 | 灰度 | 1 | 1x1 | 8 | 否 | 是 | 1 | 否 | 52 | 14797.56 | |
2 | 灰度 | 1 | 1x1 | 8 | 否 | 是 | 1 | 否 | 62 | 6735.9 | |
3 | 灰度 | 1 | 1x1 | 8 | 否 | 是 | 1 | 否 | 73 | 2366.12 | |
4 | 灰度 | 1 | 1x1 | 8 | 否 | 是 | 1 | 否 | 77 | 1338.37 | |
5 | 灰度 | 1 | 1x1 | 8 | 否 | 是 | 1 | 否 | 82 | 671.52 | |
6 | 灰度 | 1 | 1x1 | 8 | 否 | 是 | 1 | 否 | 86 | 255.23 | |
7 | 灰度 | 1 | 1x1 | 8 | 否 | 是 | 1 | 否 | 83 | 462.13 | |
8 | 灰度 | 1 | 1x1 | 8 | 否 | 是 | 1 | 否 | 88 | 111.68 | |
9 | 灰度 | 1 | 1x1 | 8 | 否 | 是 | 1 | 否 | 91 | 31.57 | |
10 | 灰度 | 1 | 1x1 | 8 | 否 | 是 | 1 | 否 | 94 | 8.52 | |
11 | 灰度 | 1 | 1x1 | 8 | 否 | 是 | 1 | 否 | 97 | 3.47 | |
12 | 灰度 | 1 | 1x1 | 8 | 否 | 是 | 1 | 否 | 98 | 4.81 |
我從表1看出來的東西:
- 我終於明白以前我一直覺得很古怪的YCCK色彩空間是怎么來的了,原來是Adobe給自家在JPEG標准里留的一塊自留地。印刷行業是Adobe的傳統大客戶源,而印刷行業的傳統慣用色彩空間是CMYK。與RGB類似,CMYK的4個通道也是平等的,並且把色度與亮度混在一起, 所以如果想專門針對色度進行縮水以增加壓縮比,就只能把CMYK轉換成YCCK,然后針對CC色度分量進行縮水。
- 色彩就是PS的生命與價值所在,所以PS在存儲彩色JPG文件時,只要質量系數不低於7,就不會對色度信息縮水,即“采樣”欄顯示的都是1x1。而當用戶指定了7以下的質量系數時,顯然說明用戶已經在不顧一切地追求壓縮比了,相比之下質量神馬的都是浮雲,所以色度信息就縱、橫各縮水一半,只保留1/4的色度信息,即“采樣”欄顯示的都是2x2。看到這里,您是不是知道平時用PS的時候應該如何選擇質量系數了?
- JpegQuality中顯示的質量系數是按照IJG的算法反推的,方差反映的是反推出的量化表與JPG中實際所使用的量化表之間的差距。從表1中“方差”列看,質量系數10~12時方差不大,可以認為與IJG的量化表基本相當;質量系數小於等於9時方差明顯增大,可以認為PS采用的量化表與IJG所采用的差距較大 。
- 實際對比JpegQuality中左右兩側顯示的量化表,質量系數10~12時差異確實不大;7~9時PS逐漸增加量化表左上角的值,右下角保持不變,因此與IJG量化表的差異逐漸拉開;到6時量化表左上角的值比7降了一點,然后隨着質量系數的降低左上角值逐漸增加,到5時左上角已經追上右下角,從4開始反超,到0時左上角與右下角差不多是3倍的差距。
- PS的量化表在中、低質量時右下角始終保持不變,只增加左上角的值,估計是與PS日常處理的圖像多半是照片有關:一堆“數毛黨”在盯着細節部分,所以PS不太好對高頻分量下手。
- 表1中的“漸進式”選項都是“否”,其實只是因為我在PS中存儲JPG時“格式選項”選的都是“基線(標准)”,如果選擇“連續”就是漸進式了。但即使選擇“基線(標准)”,表1中“優化編碼”仍然顯示“是”,說明PS所使用的缺省Huffman編碼表與IJG的不同,估計是經過Adobe自己的優化,以追求更小的文件長度。
在看過軟件廠商的JPG參數后,再來看看相機廠家的參數吧,畢竟現在用CEP處理的源文件很多都是用相機拍攝的。我手上現在有佳能A570、G16和尼康D750三款相機,檔次分別是入門DC、旗艦DC、中檔全畫幅單反。用這三款相機內設的不同質量系數進行拍照,直接機內輸出JPG,用JpegQuality顯示的JPG壓縮參數如表2所示。
補充說明:
- 目前影響手機、相機成像質量的因素主要包括物理光學組件(鏡頭、光圈等)、光電轉換器(CCD/CMOS)、ISP(Image Signal Processor,圖像信號處理器)三部分。
- JPG壓縮系數只是ISP中的一組小小參數,對最終JPG文件質量的影響究竟具體有多大,至少我還說不出一個具體的數字,所以下面只是我的一些定性分析,而且充滿個人的主觀色彩,不喜勿看。
表2 相機直出的JPG壓縮參數
廠家 | 型號 | 質量 | 像素(千萬) | 色彩空間 | 通道數 | 采樣 | 數據精度 | 漸進式 | 優化編碼 | 量化表數 | 16位量化表 | 反推質量系數 | 方差 |
佳能 | A570 | 超精細 | 0.7 | YCbCr | 3 | 1x1 2x1 2x1 | 8 | 否 | 否 | 2 | 否 | 97 | 1.65/5.29 |
精細 | YCbCr | 3 | 1x1 2x1 2x1 | 8 | 否 | 否 | 2 | 否 | 93/88 | 5.28/21.42 | |||
標准 | YCbCr | 3 | 1x1 2x1 2x1 | 8 | 否 | 否 | 2 | 否 | 72 | 2.71/648.98 | |||
G16 | 超精細 | 1.2 | YCbCr | 3 | 1x1 2x1 2x1 | 8 | 否 | 否 | 2 | 否 | 97 | 1.65/5.29 | |
精細 | YCbCr | 3 | 1x1 2x1 2x1 | 8 | 否 | 否 | 2 | 否 | 93/88 | 5.28/21.42 | |||
尼康 | D750 | FINE | 2.4 | YCbCr | 3 | 1x1 2x1 2x1 | 8 | 否 | 否 | 2 | 否 | 98 | 5.50/0.89 |
NOMAL | YCbCr | 3 | 1x1 2x1 2x1 | 8 | 否 | 否 | 2 | 否 | 97 | 1.22/0.18 | |||
BASIC | YCbCr | 3 | 1x1 2x1 2x1 | 8 | 否 | 否 | 2 | 否 | 91 | 3.28/2.52 |
我對表2的解讀:
- 這三款相機不約而同的選擇了2x1的色度采樣系數,即在色度方面沿寬度方向縮水了一半的信息,高度方向沒有縮水。經常聽到有人抱怨用RAW格式看照片看得好好的,但輸出成JPG就總覺得顏色差了點,估計色度方面的縮水是一個重要原因——即使只是沿單方向縮水,但畢竟也是縮了。
- 佳能A570的主控芯片是Digital 4,G16的是Digital 6,從版本數字上看二者差了兩代,但二者的壓縮參數完全一樣,看來佳能對自己的參數還是很有自信的,沒打算做什么修改升級。
- 對比尼康、佳能在最高質量時的量化表,尼康的數值明顯比佳能更小,可以保留更多的細節。
手機方面我自己到現在為止也只用過一款智能手機,就是拍照效果把我惡心得一提起來就想吐的紅米2(采用O-fi歐菲光的解決方案,估計國產的千元機都是這個水平)。所以為了盡量廣泛的搜集數據,我就在readfree論壇上搞了一次“手機拍報紙”活動,用論壇幣換原片,搜集到的部分手機、PAD的JPG壓縮參數見表3。
補充說明:手機廠商現在做廣告都以“美美的人像”為號召,而我之所以會以“手機拍報紙”為目標搞活動,是因為我認為現在各種美顏軟件實在太過泛濫,用人像根本看不出原始成像質量的好壞,而用“拍報紙”為手段檢驗相機的對焦精度、成像銳度等,尤其是手機歷來短板的邊緣成像質量,則是攝影界祖祖輩輩、代代相傳的不二法寶,而且與我主要想用手機拍紙質資料的需求相吻合。但出乎我意料的是由於論壇上各位的拍攝水平不一,拍報紙對拍攝水平的要求又比拍 人像更高,所以搜集到的照片不一定真實地體現了手機的成像質量,說不定同樣的手機、同樣的報紙換個人拍攝效果會更好或更差,不過如果只是想看看JPG壓縮參數還是夠了。再重申一次:JPG壓縮系數只是ISP中的一組小小參數,對最終JPG的質量究竟有多大影響,我也沒法具體量化。以紅米2為例,盡管質量系數高高在上,但最終拍出來的照片慘不忍睹,只能說與之相配的其它部分實在太便宜了。
表3 我收集到的部分手機、PAD的JPG壓縮參數
廠家 | 型號 | 像素(千萬) | 色彩空間 | 通道數 | 采樣 | 數據精度 | 漸進式 | 優化編碼 | 量化表數 | 16位量化表 | 反推質量系數 | 方差 |
小米 | 紅米2 | 0.8 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 97 | 1.09/0.24 |
紅米3 | 1.3 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 97 | 1.09/0.24 | |
MiPad | 0.8 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 87 | 1.28/0.38 | |
Note | 1.3 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 97 | 3.21/0.24 | |
小米2 | 0.8 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 90 | 1.14/0.34 | |
小米4C | 1.3 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 97 | 1.09/0.24 | |
小米5s+ | 1.3 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 97 | 1.09/0.24 | |
華為 | P10/P10+ | 1.2 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 94 | 62.59/57.16 |
P7 | 1.3 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 97 | 0.87/0.28 | |
Mate2 | 1.3 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 97 | 0.87/0.28 | |
Mate8 | 1.6 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 95 | 41.10/37.48 | |
Mate9 | 1.2 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 94 | 62.59/57.16 | |
榮耀暢玩5x | 1.3 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 95 | 1.25/0.26 | |
榮耀6+ | 1.3 | YCbCr | 3 | 1x1 2x1 2x1 | 8 | 否 | 否 | 2 | 否 | 94 | 62.59/57.16 | |
榮耀7i | 1.3 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 90 | 1.14/0.34 | |
榮耀7 | 2 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 94 | 62.59/57.16 | |
榮耀8 | 1.6 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 95 | 1.25/0.26 | |
榮耀 NOTE8 | 1.3 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 95 | 41.10/37.48 | |
蘋果 | IPAD mini 4 | 0.8 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 95 | 5.64/0.59 |
IP5s+ | 0.8 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 96 | 1.49 | |
IP6s | 1.2 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 93 | 12.88/0.19 | |
IP6s+ | 1.2 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 93 | 12.88/0.19 | |
IP7 | 1.2 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 93 | 12.88/0.19 | |
LG | D315 | 0.5 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 95 | 1.25/0.26 |
F180 | 1.3 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 95 | 1.25/0.26 | |
Nokia | Lumia 1020 | 3.3 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 95 | 1.25/0.26 |
魅族 | 魅藍Note4 | 1.3 | YCbCr | 3 | 1x1 2x1 2x1 | 8 | 否 | 否 | 2 | 否 | 96 | 3.19/1.17 |
mx pro5 | YCbCr | 3 | 1x1 2x1 2x1 | 8 | 否 | 否 | 2 | 否 | 95 | 1.25/0.26 | ||
三星 | S2 | 0.8 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 95 | 1.25/0.26 |
S5 | 1.2 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 96 | 0.69/0.33 | |
S7 | 1.2 | YCbCr | 3 | 1x1 2x1 2x1 | 8 | 否 | 否 | 2 | 否 | 96 | 0.69/0.33 | |
GT-N7105 | 0.8 | YCbCr | 3 | 1x1 2x1 2x1 | 8 | 否 | 否 | 2 | 否 | 96 | 0.69/0.33 | |
note 3 | 1.3 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 96 | 0.69/0.33 | |
OPPO | R2017 | 0.5 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 95 | 1.25/0.26 |
Kindle | Fire HDX 8.9 | 0.8 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 95 | 1.25/0.26 |
酷派 | 9976a | 1.3 | YCbCr | 3 | 1x1 2x1 2x1 | 8 | 否 | 否 | 2 | 否 | 80 | 20.03/4.14 |
vivo | xshot X710L | 1.3 | YCbCr | 3 | 1x1 2x2 2x2 | 8 | 否 | 否 | 2 | 否 | 95 | 1.25/0.26 |
我對表3數據的解讀:
- 除三星、魅族、酷派外,其它手機基本上都對色度信息進行了雙方向縮水。所以我每次見到那些把手機和單反相提並論的廣告就想笑:請把縮水掉的色彩信息給我還回來先!咱不說 無損的RAW格式,就算只沿單方向縮水也比沿雙方向縮水強不是?
- 華為、蘋果的方差比較大,說明所用量化表與IJG的差異較大,即在自身的ISP中進行了定制。以“性價比”為號召的手機一般方差都比價小 (實際與IJG的量化表比較,那差異更像是計算量化表值時的浮點數舍入誤差),可能是使用了公版ISP。
- 不同廠家、不同型號的手機具有相同的“指紋”(縮水系數、量化表),說明他們可能使用了相同的ISP,這也是降低成本的一個辦法。