major头文件_JPEG头文件结构及组成
JPEG頭文件結構及組成
2018-11-25
最近在做關于圖片顯示方面的嵌入式程序.發現國內這方面資料介紹得還是比較少的,所以發表在這里.
Before the image data is ever loaded when a JPEG image is selected for viewing the markers must be read.? In a JPEG image, the very first marker is the SOI, or Start Of Image, marker.? This is the first "hey, I"m a JPEG" declaration by the file.? The JPEG standard, as written by the Joint Picture Expert"s Group, specified the JPEG interchange format.? This format had several shortcomings for which the JFIF (JPEG File Interchange Format) was an attempted remedy.? The JFIF is the format used by almost all JPEG file readers/writers.? It tells the image readers, "Hey, I"m a JPEG that almost anyone can understand."
Most markers will have additional information following them.? When this is the case, the marker and its associated information is referred to as a "header." ? In a header the marker is immediately followed by two bytes that indicate the length of the information, in bytes, that the header contains.? The two bytes that indicate the length are always included in that count.
A marker is prefixed by FF (hexadecimal).? The marker/header information that follows does not specify all known markers, just the essential ones for baseline JPEG.
A component is a specific color channel in an image.? For instance, an RGB image contains three components; Red, Green, and Blue.
1998 by James R. Weeks
Start of Image (SOI) marker -- two bytes (FFD8)
JFIF marker (FFE0)
length -- two bytes
identifier -- five bytes: 4A, 46, 49, 46, 00 (the ASCII code equivalent of a zero terminated "JFIF" string)
version -- two bytes: often 01, 02
the most significant byte is used for major revisions
the least significant byte for minor revisions
units -- one byte: Units for the X and Y densities
0 => no units, X and Y specify the pixel aspect ratio
1 => X and Y are dots per inch
2 => X and Y are dots per cm
Xdensity -- two bytes
Ydensity -- two bytes
Xthumbnail -- one byte: 0 = no thumbnail
Ythumbnail -- one byte: 0 = no thumbnail
(RGB)n -- 3n bytes: packed (24-bit) RGB values for the thumbnail pixels, n = Xthumbnail * Ythumbnail
Define Quantization table marker (FFDB)
the first two bytes, the length, after the marker indicate the number of bytes, including the two length bytes, that this header contains
until the length is exhausted (loads two quantization tables for baseline JPEG)
the precision and the quantization table index -- one byte: precision is specified by the higher four bits and index is specified by the lower four bits
precision in this case is either 0 or 1 and indicates the precision of the quantized values; 8-bit (baseline) for 0 and? up to 16-bit for 1
the quantization values -- 64 bytes
the quantization tables are stored in zigzag format
Define Huffman table marker (FFC4)
the first two bytes, the length, after the marker indicate the number of bytes, including the two length bytes, that this header contains
until length is exhausted (usually four Huffman tables)
index -- one byte: if >15 (i.e. 0x10 or more) then an AC table, otherwise a DC table
bits -- 16 bytes
Huffman values -- # of bytes = the sum of the previous 16 bytes
Start of frame marker (FFC0)
the first two bytes, the length, after the marker indicate the number of bytes, including the two length bytes, that this header contains
P -- one byte: sample precision in bits (usually 8, for baseline JPEG)
Y -- two bytes
X -- two bytes
Nf -- one byte: the number of components in the image
3 for color baseline JPEG images
1 for grayscale baseline JPEG images
Nf times:
Component ID -- one byte
H and V sampling factors -- one byte: H is first four bits and V is second four bits
Quantization table number-- one byte
The H and V sampling factors dictate the final size of the component they are associated with. For instance, the color space defaults to YCbCr and the H and V sampling factors for each component, Y, Cb, and Cr, default to 2, 1, and 1, respectively (2 for both H and V of the Y component, etc.) in the Jpeg-6a library by the Independent Jpeg Group. While this does mean that the Y component will be twice the size of the other two components--giving it a higher resolution, the lower resolution components are quartered in size during compression in order to achieve this difference. Thus, the Cb and Cr components must be quadrupled in size during decompression.
Start of Scan marker (FFDA)
the first two bytes, the length, after the marker indicate the number of bytes, including the two length bytes, that this header contains
Number of components, n -- one byte: the number of components in this scan
n times:
Component ID -- one byte
DC and AC table numbers -- one byte: DC # is first four bits and AC # is last four bits
Ss -- one byte
Se -- one byte
Ah and Al -- one byte
Comment marker (FFFE)
the first two bytes, the length, after the marker indicate the number of bytes, including the two length bytes, that this header contains
whatever the user wants
End of Image (EOI) marker (FFD9)
the very last marker
JPEG文件由八個部分組成,每個部分的標記字節為兩個,首字節固定為:0xFF,當然,準許在其前面再填充多個0xFF,以最后一個為準。下面為各部分的名稱和第二個標記字節的數值,用ultraedit的16進制搜索功能可找到各部分的起始位置,在嵌入式系統中可用類似的數值匹配法定位。
一、圖像開始SOI(Start of Image)標記,數值0xD8
二、APP0標記(Marker),數值0xE0
1、APP0長度(length)??????????????????????????? 2byte
2、標識符(identifier)???????????????????? 5byte
3、版本號(version)??????????????????????? 2byte
4、X和Y的密度單位(units=0:無單位;units=1:點數/英寸;units=2:點數/厘米)??????????????????????? 1byte
5、X方向像素密度(X density)????????????????????? 2byte
6、Y方向像素密度(Y density)?????????????????????? 2byte
7、縮略圖水平像素數目(thumbnail horizontal pixels)????????????? ???????? 1byte
8、縮略圖垂直像素數目(thumbnail vertical pixels)??????????????????????????? 1byte
9、縮略圖RGB位圖(thumbnail RGB bitmap),由前面的數值決定,取值3n,n為縮略圖總像素?? 3n byte
三、APPn標記(Markers),其中n=1~15,數值對應0xE1~0xEF
1、APPn長度(length)
2、應用細節信息(application specific information)
四、一個或者多個量化表DQT(difine quantization table),數值0xDB
1、量化表長度(quantization table length)
2、量化表數目(quantization table number)
3、量化表(quantization table)
五、幀圖像開始SOF0(Start of Frame),數值0xC0
1、幀開始長度(start of frame length)
2、精度(precision),每個顏色分量每個像素的位數(bits per pixel per color component)
3、圖像高度(image height)
4、圖像寬度(image width)
5、顏色分量數(number of color components)
6、對每個顏色分量(for each component)
包括:ID、垂直方向的樣本因子(vertical sample factor)、水平方向的樣本因子(horizontal sample factor) 、量化表號(quantization table#)
六、一個或者多個霍夫曼表DHT(Difine Huffman Table),數值0xC4
1、霍夫曼表的長度(Huffman table length)
2、類型、AC或者DC(Type, AC or DC)
3、索引(Index)
4、位表(bits table)
5、值表(value table)
七、掃描開始SOS(Start of Scan),數值0xDA
1、掃描開始長度(start of scan length)
2、顏色分量數(number of color components)
3、每個顏色分量
包括:ID、交流系數表號(AC table #)、直流系數表號(DC table #)
4、壓縮圖像數據(compressed image data)
八、圖像結束EOI(End of Image),數值0xD9
免責聲明:本文僅代表文章作者的個人觀點,與本站無關。其原創性、真實性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容文字的真實性、完整性和原創性本站不作任何保證或承諾,請讀者僅作參考,并自行核實相關內容。
http://www.pinlue.com/style/images/nopic.gif
總結
以上是生活随笔為你收集整理的major头文件_JPEG头文件结构及组成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020年有寓意的领证日期_2020年有
- 下一篇: 名词解释_名词解释的答题技巧