亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

WebP原理簡介

2023-07-14 09:59:38
116
0
目前對于JPEG、PNG、GIF等常用圖片格式的優化已幾乎達到極致,因此Google于2010年提出了一種新的圖片壓縮格式 -- WebP,給圖片的優化提供了新的可能。
WebP的優勢在于它具有更優的圖像數據壓縮算法,在擁有肉眼無法識別差異的圖像質量前提下,帶來更小的圖片體積,同時具備了無損和有損的壓縮模式、Alpha 透明以及動畫的特性,在 JPEG 和 PNG 上的轉化效果都非常優秀、穩定和統一。
 
WebP的壓縮主要分為有損壓縮、無損壓縮以及有損帶透明通道壓縮。
 
 
1 有損WebP
 
有損WebP基于VP8視頻編碼中的預測編碼方法來壓縮圖像數據,其基本步驟類似于JPEG壓縮,主要包含格式轉換、分割子塊、預測編碼、FDCT、量化、Z排列、熵編碼。
 
1) 格式轉換
 
若壓縮前圖像數據為RGB格式,則需先進行格式轉換成YUV格式,Y表示亮度分量,UV表示色度分量。之所以轉換成YUV格式是因為人類視覺對亮度遠比色度敏感,所以可通過適當減少色度數據的存儲來節省數據占用的空間,但卻不會對視覺效果造成太大影響,如可每兩個或四個相鄰的像素點才保存一對UV值。
 
2) 分割宏塊
 
接下來將數據分割成一個個8x8或16x16的宏塊。
 
3) 預測編碼
 
預測編碼的原理是基于前面編碼好的宏塊,預測多余的動作顏色等信息,屬于幀內預測。對各宏塊可使用以下幾種幀內預測模式:
 
- H_PRED(horizontal prediction).使用block左邊的一列L來填充block中的每一列
 
- V_PRED(vertical prediction):使用block上邊的一行A來填充block中的每一行
 
- DC_PRED(DC prediction):使用L和A中所有像素的平均值作為唯一的值填充block
 
- TM_PRED(TrueMotion prediction):使用漸進的方式,記錄上面一行的漸進差,以同樣的差值,以L為基準拓展每一行。
 
4) FDCT
 
FDCT(Forward Discrete Cosine Transform,正向離散余弦變換)是將一組空間域的像素點轉變成頻域中的系數,對每個宏塊執行FDCT,使得變換后數據的低頻部分分布在數據塊的左上方,高頻部分集中在右下方,其中左上角第一個系數稱為直流系數,其他均為交流系數。
 
5) 量化
 
量化是壓縮中損失數據的主要步驟,它主要原理是把經過DCT變換后的宏塊中每個數值除以量化表中對應的系數并取整。其中量化表中高頻部分對應的系數比低頻部分系數要大得多,則在經過量化后,高頻部分的頻率系數被大大衰減甚至許多被清零,而低頻部分的頻率系數則較好地被保留。由于人眼對低頻部分更敏感,所以經過量化后再還原成圖像對視覺效果影響較小,但數據得到有效的壓縮。量化的最終目的是減少低頻部分非零系數的幅值并增加高頻部分零值系數的數量。
 
6) Z排列
 
為更便于后續的編碼,需在編碼前對數據塊進行重新的排列,使得低頻部分的數據排在前面,高頻部分的數據排在后面,以增加數組中連續零值的數量,所以采用一種Z字型的排列方式。
 
7) DPCM
 
可用DPCM(Differential Pulse Code Modulation,差分脈沖編碼調制)對直流系數進行編碼。由于直流系數的數值較大,且相鄰數據塊的直流系數相差不大,所以可使用DPCM對相鄰數據塊間量化后的直流系數差值進行編碼,從而提高壓縮比。
 
8) 行程編碼
 
行程編碼是一種根據相同數據重復多次的情況簡化表示的算法,例如1111222222333按照行程編碼表示為(1,4)(2,6)(3,3)。由于量化后的交流系數中包含較多連續零值系數,因此可用行程編碼對它們進行編碼來有效壓縮數據長度。
 
9) 熵編碼
 
熵編碼是一種無損數據壓縮編碼方式,WebP中采用布爾算術編碼作為熵編碼方式。和其它熵編碼方法不同的地方在于,其他的熵編碼方法通常是把輸入的消息分割為符號,然后對每個符號進行編碼,而算術編碼是直接把整個輸入的消息編碼為一個數,一個滿足(0.0 ≤ n < 1.0)的小數n。消息越長,編碼表示它的間隔就越小,表示這一間隔所需的二進制位就越多。
 
10) 其他
 
WebP還有一些細節上的步驟,比如自適應分塊(對不同區域的宏塊分配不同的壓縮參數)、環路濾波等。
 
WebP和JPEG相比的優勢
 
- 主要原因是預測編碼。
 
- 自適應分塊也提供了較好表現。
 
- 環路濾波在中、低比特率的情況下有較大幫助。
 
- 算數編碼相比霍夫曼增強了5%~10%的壓縮能力。
 
 
2 無損WebP
 
無損WebP基于使用不同的技術對圖像數據進行轉換,包括:預測空間變換、色彩空間轉換、使用調色板、多像素打包成一個像素、alpha值替換等技術。對于熵編碼,則采用改進的LZ77-Huffman編碼來緊湊稀疏值,它是一種對距離值的2D編碼技術。
 
 
3 有損WebP(支持透明)
 
區別于有損WebP和無損WebP,這種編碼允許對RGB頻道的有損編碼同時可對透明度頻道進行無損編碼。由于這種形式目前其他的格式還未能提供,所以目前需要使用透明度的話都會使用無損的PNG,導致大小膨脹。對于這類圖片,WebP提供了較好的壓縮效果。相比有損的WebP,添加透明通道只增加22%的大小。
 
因此,將支持透明的PNG換成無損+支持透明的WEBP可以平均節省60%-70%大小,這個已經被一些含較多Icon的移動網站證明。
 
4 動態WebP
 
動態WebP的原理與GIF和APNG原理類似,每一幀記錄變化區域的坐標、長寬、播放延時等用于還原并播放。
0條評論
0 / 1000
wbq
18文章數
0粉絲數
wbq
18 文章 | 0 粉絲
wbq
18文章數
0粉絲數
wbq
18 文章 | 0 粉絲
原創

WebP原理簡介

2023-07-14 09:59:38
116
0
目前對于JPEG、PNG、GIF等常用圖片格式的優化已幾乎達到極致,因此Google于2010年提出了一種新的圖片壓縮格式 -- WebP,給圖片的優化提供了新的可能。
WebP的優勢在于它具有更優的圖像數據壓縮算法,在擁有肉眼無法識別差異的圖像質量前提下,帶來更小的圖片體積,同時具備了無損和有損的壓縮模式、Alpha 透明以及動畫的特性,在 JPEG 和 PNG 上的轉化效果都非常優秀、穩定和統一。
 
WebP的壓縮主要分為有損壓縮、無損壓縮以及有損帶透明通道壓縮。
 
 
1 有損WebP
 
有損WebP基于VP8視頻編碼中的預測編碼方法來壓縮圖像數據,其基本步驟類似于JPEG壓縮,主要包含格式轉換、分割子塊、預測編碼、FDCT、量化、Z排列、熵編碼。
 
1) 格式轉換
 
若壓縮前圖像數據為RGB格式,則需先進行格式轉換成YUV格式,Y表示亮度分量,UV表示色度分量。之所以轉換成YUV格式是因為人類視覺對亮度遠比色度敏感,所以可通過適當減少色度數據的存儲來節省數據占用的空間,但卻不會對視覺效果造成太大影響,如可每兩個或四個相鄰的像素點才保存一對UV值。
 
2) 分割宏塊
 
接下來將數據分割成一個個8x8或16x16的宏塊。
 
3) 預測編碼
 
預測編碼的原理是基于前面編碼好的宏塊,預測多余的動作顏色等信息,屬于幀內預測。對各宏塊可使用以下幾種幀內預測模式:
 
- H_PRED(horizontal prediction).使用block左邊的一列L來填充block中的每一列
 
- V_PRED(vertical prediction):使用block上邊的一行A來填充block中的每一行
 
- DC_PRED(DC prediction):使用L和A中所有像素的平均值作為唯一的值填充block
 
- TM_PRED(TrueMotion prediction):使用漸進的方式,記錄上面一行的漸進差,以同樣的差值,以L為基準拓展每一行。
 
4) FDCT
 
FDCT(Forward Discrete Cosine Transform,正向離散余弦變換)是將一組空間域的像素點轉變成頻域中的系數,對每個宏塊執行FDCT,使得變換后數據的低頻部分分布在數據塊的左上方,高頻部分集中在右下方,其中左上角第一個系數稱為直流系數,其他均為交流系數。
 
5) 量化
 
量化是壓縮中損失數據的主要步驟,它主要原理是把經過DCT變換后的宏塊中每個數值除以量化表中對應的系數并取整。其中量化表中高頻部分對應的系數比低頻部分系數要大得多,則在經過量化后,高頻部分的頻率系數被大大衰減甚至許多被清零,而低頻部分的頻率系數則較好地被保留。由于人眼對低頻部分更敏感,所以經過量化后再還原成圖像對視覺效果影響較小,但數據得到有效的壓縮。量化的最終目的是減少低頻部分非零系數的幅值并增加高頻部分零值系數的數量。
 
6) Z排列
 
為更便于后續的編碼,需在編碼前對數據塊進行重新的排列,使得低頻部分的數據排在前面,高頻部分的數據排在后面,以增加數組中連續零值的數量,所以采用一種Z字型的排列方式。
 
7) DPCM
 
可用DPCM(Differential Pulse Code Modulation,差分脈沖編碼調制)對直流系數進行編碼。由于直流系數的數值較大,且相鄰數據塊的直流系數相差不大,所以可使用DPCM對相鄰數據塊間量化后的直流系數差值進行編碼,從而提高壓縮比。
 
8) 行程編碼
 
行程編碼是一種根據相同數據重復多次的情況簡化表示的算法,例如1111222222333按照行程編碼表示為(1,4)(2,6)(3,3)。由于量化后的交流系數中包含較多連續零值系數,因此可用行程編碼對它們進行編碼來有效壓縮數據長度。
 
9) 熵編碼
 
熵編碼是一種無損數據壓縮編碼方式,WebP中采用布爾算術編碼作為熵編碼方式。和其它熵編碼方法不同的地方在于,其他的熵編碼方法通常是把輸入的消息分割為符號,然后對每個符號進行編碼,而算術編碼是直接把整個輸入的消息編碼為一個數,一個滿足(0.0 ≤ n < 1.0)的小數n。消息越長,編碼表示它的間隔就越小,表示這一間隔所需的二進制位就越多。
 
10) 其他
 
WebP還有一些細節上的步驟,比如自適應分塊(對不同區域的宏塊分配不同的壓縮參數)、環路濾波等。
 
WebP和JPEG相比的優勢
 
- 主要原因是預測編碼。
 
- 自適應分塊也提供了較好表現。
 
- 環路濾波在中、低比特率的情況下有較大幫助。
 
- 算數編碼相比霍夫曼增強了5%~10%的壓縮能力。
 
 
2 無損WebP
 
無損WebP基于使用不同的技術對圖像數據進行轉換,包括:預測空間變換、色彩空間轉換、使用調色板、多像素打包成一個像素、alpha值替換等技術。對于熵編碼,則采用改進的LZ77-Huffman編碼來緊湊稀疏值,它是一種對距離值的2D編碼技術。
 
 
3 有損WebP(支持透明)
 
區別于有損WebP和無損WebP,這種編碼允許對RGB頻道的有損編碼同時可對透明度頻道進行無損編碼。由于這種形式目前其他的格式還未能提供,所以目前需要使用透明度的話都會使用無損的PNG,導致大小膨脹。對于這類圖片,WebP提供了較好的壓縮效果。相比有損的WebP,添加透明通道只增加22%的大小。
 
因此,將支持透明的PNG換成無損+支持透明的WEBP可以平均節省60%-70%大小,這個已經被一些含較多Icon的移動網站證明。
 
4 動態WebP
 
動態WebP的原理與GIF和APNG原理類似,每一幀記錄變化區域的坐標、長寬、播放延時等用于還原并播放。
文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0