2019年4月26日 星期五

[ JPEG 系列 ] JPEG圖片格式探討 (一)

前言


由於工作上常常碰到Jpeg, Exif等名詞,雖然大學有修過多媒體概論,有基本介紹一般常見的

儲存格式,但是總體來說還是只是為了考試,實際上對這些內容完全沒有概念。

在不斷解issue過程也開始對JPEG有比較深刻的體會,也不得不整理一些資料。

*想到就加入內容,有查到更多資料可以分享再來更新


正文


平常聽到JPEG檔案其實是一種針對相片影像而廣泛使用的失真壓縮標準方法
並且透過JFIFJPEG File Interchange Format,JPEG檔案交換格式) 詳細說明如何從一個JPEG串流,產出一個適合於電腦儲存和傳輸(像是在網際網路上)的檔案。
請參考維基百科介紹。


因此,可以知道JPEG是一種壓縮標準,而JFIF是一種檔案格式。

JPEG是第一個國際圖像壓縮標準,其特性如下:

  • 圖像壓縮演算法提供良好的壓縮率,並且可以在解壓縮後獲得較高的還原率
  • 廣泛使用於圖像︑影像領域
  • PEG的壓縮方式通常是失真壓縮(lossy compression),即在壓縮過程中圖像的品質會遭受到可見的破壞

JIFF是一個圖檔格式標準,其特性如下:

  • 使用JPEG圖像壓縮技術儲存圖片的方式
  • 方便用戶在不同的裝置之間傳輸JPEG圖像
  • 定義圖片長寬︑解析度︑色彩空間等基本訊息,這些訊息在JPEG壓縮標準沒有定義
  • 由系列標記(marker)或標記段(marker segments)組成





JPEG FILE Layout

一個典型的JPEG檔案 format大概如下:








1. SOI :  0xd8  // 圖像開始
2. APP0:  0xe0  // JFIF 應用層區塊
     a. APP0 length  // APP0標記的長度
     b. JFIF flag  // JFIF標示
     c. Version
     d. Units for X/Y densities
     f. X density
     g. Y density
     h. Thumbnail horizontal pixels
     i. Thumbnail vertical pixels
     j. Thumbnail RGB bitmap
3.  APP1: 0xe1
    a. APP1 length
    b. EXIF flag
    c. TIFF  // TIFF格式的EXIF數據
4. APPn: 0xen   // 可以填入Application所需要的資訊,例如塞入另一張圖像
5. DQT: 0xdb  // 定義quantization table
6. SOF0: 0xc0   // start of frame
    a. start of frame length
    b. Precision (Bits per pixel per color component)
    c. Image height
    d. Image width
    e. Number of color compnents
7. DHT:  0xc4  // 定義Huffman table
    a. Huffman table length
    b. Type , AC/DC
    c. Index
    d. A Bits table
    e. A Value table
8. SOS: 0xda  // 開始掃描的位置
9. EOI: 0xd9  // 圖片結束




今天先這樣,改天繼續補充。。。






參考資料:
https://blog.csdn.net/shelldon/article/details/54144406

https://zh.wikipedia.org/wiki/JPEG

http://vip.sugovica.hu/Sardi/kepnezo/JPEG%20File%20Layout%20and%20Format.htm

http://twins.ee.nctu.edu.tw/courses/soclab_04/lab_hw_pdf/proj1_jpeg_introduction.pdf



沒有留言:

張貼留言