版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗題目:實驗題目:v1 1、BMPBMP圖像文件的操作,編寫圖像文件的操作,編寫C+C+程序,可以程序,可以將一個標(biāo)準(zhǔn)將一個標(biāo)準(zhǔn)24bit24bit真彩色真彩色BMPBMP文件中三基色圖文件中三基色圖像提取出來存成獨立的像提取出來存成獨立的8bit8bit灰度圖像(灰度圖像(BMPBMP)v2 2、JPGJPG算法:自寫算法將算法:自寫算法將BMPBMP轉(zhuǎn)換為轉(zhuǎn)換為JPGJPG,再,再將將jpgjpg轉(zhuǎn)化為轉(zhuǎn)化為bmpbmp,比較前后兩個,比較前后兩個bmpbmp得質(zhì)量差得質(zhì)量差別,在不同的量化參數(shù)(別,在不同的量化參數(shù)(50%50%壓縮壓縮,75%,75%壓壓縮縮,95%,95%壓縮)下對
2、比效果,包括:壓縮)下對比效果,包括:jpgjpg壓縮后壓縮后的大小、圖像質(zhì)量、壓縮時間的大小、圖像質(zhì)量、壓縮時間一、一、BMP的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) v1:BMP文件組成 vBMP文件由四部分組成文件頭、位圖信息頭、顏色信息圖形數(shù)據(jù)。 2:BMP文件頭(14字節(jié)) vBMP文件頭數(shù)據(jù)結(jié)構(gòu)含有BMP文件的類型、文件大小和位圖起始位置等信息。 vtypedef struct tagBITMAPFILEHEADERWORDbf Type; / 位圖文件的類型,必須為BMP(0-1字節(jié))vDWORD bfSize; / 位圖文件的大小,以字節(jié)為單位(2-5字節(jié))vWORD bfReserved1; /
3、 位圖文件保留字,必須為0(6-7字節(jié))vWORD bfReserved2; / 位圖文件保留字,必須為0(8-9字節(jié))vDWORD bfOffBits; / 位圖數(shù)據(jù)的起始位置,以相對于位圖(10-13字節(jié))v/ 文件頭的偏移量表示,以字節(jié)為單位v BITMAPFILEHEADER;3:位圖信息頭(40字節(jié)) vBMP位圖信息頭數(shù)據(jù)用于說明位圖的尺寸等信息。typedef struct tagBITMAPINFOHEADERDWORD biSize; / 本結(jié)構(gòu)所占用字節(jié)數(shù)本結(jié)構(gòu)所占用字節(jié)數(shù)(14-17字節(jié)字節(jié))LONG biWidth; / 位圖的寬度,以像素為單位位圖的寬度,以像素為單位
4、(18-21字節(jié)字節(jié))LONG biHeight; / 位圖的高度,以像素為單位位圖的高度,以像素為單位(22-25字節(jié)字節(jié))WORD biPlanes; / 目標(biāo)設(shè)備的級別,必須為目標(biāo)設(shè)備的級別,必須為1(26-27字節(jié)字節(jié))WORD biBitCount;/ 每個像素所需的位數(shù),必須是每個像素所需的位數(shù),必須是1(雙色雙色),(28-29字節(jié)字節(jié))/ 4(16色色),8(256色色)或或24(真彩色真彩色)之一之一DWORD biCompression; / 位圖壓縮類型,必須是位圖壓縮類型,必須是 0(不壓縮不壓縮),(30-33字節(jié)字節(jié))/ 1(BI_RLE8壓縮類型壓縮類型)或或2(
5、BI_RLE4壓縮類型壓縮類型)之一之一DWORD biSizeImage; / 位圖的大小,以字節(jié)為單位位圖的大小,以字節(jié)為單位(34-37字節(jié)字節(jié))LONG biXPelsPerMeter; / 位圖水平分辨率,每米像素數(shù)位圖水平分辨率,每米像素數(shù)(38-41字節(jié)字節(jié))LONG biYPelsPerMeter; / 位圖垂直分辨率,每米像素數(shù)位圖垂直分辨率,每米像素數(shù)(42-45字節(jié)字節(jié))DWORD biClrUsed;/ 位圖實際使用的顏色表中的顏色數(shù)位圖實際使用的顏色表中的顏色數(shù)(46-49字節(jié)字節(jié))DWORD biClrImportant;/ 位圖顯示過程中重要的顏色數(shù)位圖顯示過程中
6、重要的顏色數(shù)(50-53字節(jié)字節(jié)) BITMAPINFOHEADER;4:顏色表:顏色表 v顏色表用于說明位圖中的顏色,它有若干個表項,每一個表項是一個RGBQUAD類型的結(jié)構(gòu),定義一種顏色。RGBQUAD結(jié)構(gòu)的定義如下: typedef struct tagRGBQUAD BYTE rgbBlue;/ 藍(lán)色的亮度藍(lán)色的亮度(值范圍為值范圍為0-255)BYTE rgbGreen; / 綠色的亮度綠色的亮度(值范圍為值范圍為0-255)BYTE rgbRed; / 紅色的亮度紅色的亮度(值范圍為值范圍為0-255)BYTE rgbReserved;/ 保留,必須為保留,必須為0 RGBQUAD
7、;v顏色表中RGBQUAD結(jié)構(gòu)數(shù)據(jù)的個數(shù)有biBitCount來確定:當(dāng)biBitCount=1,4,8時,分別有2,16,256個表項;當(dāng)biBitCount=24時,沒有顏色表項。v位圖信息頭和顏色表組成位圖信息,BITMAPINFO結(jié)構(gòu)定義如下:vtypedef struct tagBITMAPINFO vBITMAPINFOHEADER bmiHeader; / 位圖信息頭vRGBQUAD bmiColors1; / 顏色表v BITMAPINFO;5:位圖數(shù)據(jù) v位圖數(shù)據(jù)記錄了位圖的每一個像素值,記錄順序是在掃描行內(nèi)是從左到右,掃描行之間是從下到上。位圖的一個像素值所占的字節(jié)數(shù): v
8、當(dāng)biBitCount=1時,8個像素占1個字節(jié);v當(dāng)biBitCount=4時,2個像素占1個字節(jié);v當(dāng)biBitCount=8時,1個像素占1個字節(jié);v當(dāng)當(dāng)biBitCount=24時時,1個像素占個像素占3個字節(jié)個字節(jié);vWindows規(guī)定一個掃描行所占的字節(jié)數(shù)必須是v4的倍數(shù)(即以long為單位),不足的以0填充,vbiSizeImage = (bi.biWidth * bi.biBitCount) + 31) & 31) / 8) * bi.biHeight; 如某BMP文件開頭: v4D42 4690 0000 0000 0000 4600 0000 2800 0000 8
9、000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F 0000 0000 0000 0000 0000*00F8 0000 E007 0000 1F00 0000 0000 0000*02F1 84F1 04F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2 . .BMP文件可分為四個部分:位圖文件頭、位圖信息頭、彩色板、圖像數(shù)據(jù)陣列,在上圖中已用*分隔。 圖像文件頭圖像文件頭 v1)1:(這里的數(shù)字代表的是字,即兩個字節(jié),下同)圖像文件頭。0 x4D42=BM,表示
10、是Windows支持的BMP格式。 v2)2-3:整個文件大小。4690 0000,為00009046h=36934。 v3)4-5:保留,必須設(shè)置為0。 v4)6-7:從文件開始到位圖數(shù)據(jù)之間的偏移量。4600 0000,為00000046h=70,上面的文件頭就是35字=70字節(jié)。 位圖信息頭位圖信息頭 v5)8-9:位圖圖信息頭長度。 v6)10-11:位圖寬度,以像素為單位。8000 0000,為00000080h=128。 v7)12-13:位圖高度,以像素為單位。9000 0000,為00000090h=144。 v8)14:位圖的位面數(shù),該值總是1。0100,為0001h=1。
11、v9)15:每個像素的位數(shù)。有1(單色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,增強(qiáng)型真彩色)。1000為0010h=16。 v10)16-17:壓縮說明:有0(不壓縮),1(RLE 8,8位RLE壓縮),2(RLE 4,4位RLE壓縮,3(Bitfields,位域存放)。RLE簡單地說是采用像素數(shù)+像素值的方式進(jìn)行壓縮。T408采用的是位域存放方式,用兩個字節(jié)表示一個像素,位域分配為r5b6g5。圖中0300 0000為00000003h=3。 v11)18-19:用字節(jié)數(shù)表示的位圖數(shù)據(jù)的大小,該數(shù)必須是4的倍數(shù),數(shù)值上等于(位
12、圖寬度的最小的4的倍數(shù))位圖高度每個像素位數(shù)。0090 0000為00009000h=80902h=36864。 v12)20-21:用象素/米表示的水平分辨率。A00F 0000為0000 0FA0h=4000。 v13)22-23:用象素/米表示的垂直分辨率。A00F 0000為0000 0FA0h=4000。 v14)24-25:位圖使用的顏色索引數(shù)。設(shè)為0的話,則說明使用所有調(diào)色板項。 v15)26-27:對圖象顯示有重要影響的顏色索引的數(shù)目。如果是0,表示都重要。 彩色板彩色板 v16)28-.(不確定 ):彩色板規(guī)范。對于調(diào)色板中的每個表項,用下述方法來描述RGB的值: v1字節(jié)用
13、于藍(lán)色分量 v1字節(jié)用于綠色分量 v1字節(jié)用于紅色分量 v1字節(jié)用于填充符(設(shè)置為0) v對于24-位真彩色圖像就不使用彩色板,因為位圖中的RGB值就代表了每個象素的顏色。 v如,彩色板為00F8 0000 E007 0000 1F00 0000 0000 0000,其中: 00FB 0000為FB00h=1111100000000000,是藍(lán)色分量的掩碼。 vE007 0000為 07E0h=0000011111100000,是綠色分量的掩碼。 v1F00 0000為001Fh=0000000000011111,是紅色分量的掩碼。 v0000 0000總設(shè)置為0。 v將掩碼跟像素值進(jìn)行“與”
14、運算再進(jìn)行移位操作就可以得到各色分量值??纯囱诖a,就可以明白事實上在每個像素值的兩個字節(jié)16位中,按從高到低取5、6、5位分別就是r、g、b分量值。取出分量值后把r、g、b值分別乘以8、4、8就可以補(bǔ)齊第個分量為一個字節(jié),再把這三個字節(jié)按rgb組合,放入存儲器(同樣要反序),就可以轉(zhuǎn)換為24位標(biāo)準(zhǔn)BMP格式了。圖像數(shù)據(jù)陣列 v17)27(無調(diào)色板)-:每兩個字節(jié)表示一個像素。陣列中的第一個字節(jié)表示位圖左下角的象素,而最后一個字節(jié)表示位圖右上角的象素。注意點注意點v其中高度和寬度都是像素數(shù)。v 需要注意的是上面公式中的54是位圖文件的文件頭是位圖文件的文件頭,是彩色調(diào)色板的大小是彩色調(diào)色板的大小
15、。v另外需要注意的是這是一個近似值近似值,對于n位的位圖圖像來說,盡管可能有最多2n中顏色,一個特定的圖像可能并不會使用這些所有的顏色。v由于彩色調(diào)色板僅僅定義了圖像所用的顏色,所以實際的彩色調(diào)色板將小于256。 二二 JPEG壓縮的基本原理壓縮的基本原理 vJPEG標(biāo)準(zhǔn)是面向連續(xù)色調(diào)靜止圖像壓縮標(biāo)準(zhǔn)。它定義了多種類型打工作模式,其中最基本的是基于8*8塊的DCT變換的順序編碼。就是將一幀圖像分為8*8的數(shù)據(jù)塊單元,按照從左到右、自上而下的順序?qū)Α皦K流”編碼。JPEG壓縮是有損壓縮,它利用了人的視角系統(tǒng)的特性,使用量化和無損壓縮編碼相結(jié)合來去掉視角的冗余信息和數(shù)據(jù)本身的冗余信息vJPEG算法框
16、圖下頁如圖所示,壓縮編碼大致分成三個步驟:v(1)使用正向離散余弦變換(Forward Discrete Cosine Transform,F(xiàn)DCT)把空間域表示的圖變換成頻率域表示的圖。 v(2)使用加權(quán)函數(shù)對DCT系數(shù)進(jìn)行量化,這個加權(quán)函數(shù)對于人的視覺系統(tǒng)是最佳的。 v(3)使用哈夫曼可變字長編碼器對量化系數(shù)進(jìn)行編碼。 v譯碼或者叫做解壓縮的過程與壓縮編碼過程正好相反。vJPEG算法與彩色空間無關(guān),因此“RGB到Y(jié)UV變換”和“YUV到RGB變換”不包含在JPEG算法中。JPEG算法處理的彩色圖像是單獨的彩色分量圖像,因此它可以壓縮來自不同彩色空間的數(shù)據(jù),如RGB、YCbCr和CMYK。1
17、.顏色轉(zhuǎn)換顏色轉(zhuǎn)換 v由于JPEG只支持YUV顏色模式的數(shù)據(jù)結(jié)構(gòu),而不支持RGB圖像數(shù)據(jù)結(jié)構(gòu),所以在將彩色圖像進(jìn)行壓縮之前,必須先對顏色模式進(jìn)行數(shù)據(jù)轉(zhuǎn)換。各個值的轉(zhuǎn)換可以通過下面的轉(zhuǎn)換公式計算得出:vY=0.299R+0.587G+0.114BvU=-0.169R-0.3313G+0.5BvV=0.5R-0.4187G-0.0813Bv其中,Y表示亮度,U和V表示顏色。v轉(zhuǎn)換完成之后還需要進(jìn)行數(shù)據(jù)采樣。一般采用的采樣比例是2:1:1或4:2:2。由于在執(zhí)行了此項工作之后,每兩行數(shù)據(jù)只保留一行,因此,采樣后圖像數(shù)據(jù)量將壓縮為原來的一半。2離散余弦變換離散余弦變換(DCT)v(1)首先把一幅圖像劃
18、分成一系列的圖像塊,每個圖像塊包含88個像素。如果原始圖像有640480個像素,則圖片將包含80列60行的方塊。如果圖像只包含灰度,那么每個像素用一個8比特的數(shù)字表示。因此可以把每個圖像塊表示成一個8行8列的二維數(shù)組。數(shù)組的元素是0255的8比特整數(shù)。離散余弦變換就是作用在這個數(shù)組上。 v如果圖像是彩色的,那么每個像素可以用24比特、相當(dāng)于三個8位比特的組合來表示(用RGB或YIQ表示,在這里沒有影響)。因此,可以用三個8行8列的二維數(shù)組表示這個88的像素方塊。每一個數(shù)組表示其中一個八位比特組合的像素值。離散余弦變換作用于每個數(shù)組。 2離散余弦變換離散余弦變換(DCT)DCT變換是做什么的變換
19、是做什么的 ?v簡單的說,是用一個8行8列的二維數(shù)組產(chǎn)生另一個同樣包含8行8列二維數(shù)組的函數(shù),也就是說,把一個數(shù)組通過一個變換,變成另一個數(shù)組。v如圖下圖所示,對每個圖像塊做離散余弦變換。通過DCT變換可以把能量集中在矩陣左上角少數(shù)幾個系數(shù)上。 wf(i,j)經(jīng)DCT變換之后得到F(i,j),其中F(0,0)是直流系數(shù),稱為DC系數(shù),其他為交流系數(shù),稱為AC系數(shù)。 v(2)用f表示像素值的數(shù)組,f(i j)表示i行j列的值,則離散余弦變換后定義一個新的數(shù)組F (u ,v),表示u行v列的值。 DCT變換使用公式(1)計算:77001(21)(21),( , )coscos41616ijiujv
20、u vuvf i j()=C( )C( )(1) 它的逆變換使用公式(2)計算:77001(21)(21),( , )coscos41616uviujvf i juvF u v()=C( )C( )(2) 上面兩式中,C(u), C(v) = ,當(dāng)u, v =0;C(u), C(v) = 1,其他。 1/2圖1 顯示了對一個源圖像的88的圖像樣本的原始數(shù)組應(yīng)用離散余弦變換的結(jié)果。為便于計算在對源數(shù)組f進(jìn)行變換之前首先對源圖像中的每個樣本數(shù)據(jù)減去了128。然后再按公式(1)分別計算出結(jié)果數(shù)組F中每個數(shù)組元素的值。比如說,計算F(0,0)的值過程如下:16) 12(cos16) 12(cos),(
21、)()(41)0 , 0(7070ijvjuijifvCuCF ),()0()0(417070ijjifCC1885212141235.6(因為cos(0)=1)這樣再繼續(xù)計算出數(shù)組中其余元素的值,得到數(shù)組F。圖1 離散余弦變換的數(shù)組f(i,j)經(jīng)DCT變換之后得到F(i,j),其中F(0,0)是直流系數(shù),稱為DC系數(shù),其他為交流系數(shù),稱為AC系數(shù)。(3)在計算二維的DCT變換時,也可使用下面的計算式(3)、(4)進(jìn)行簡化,把二維的DCT變換變成一維的DCT變換,如圖2所示為二維DCT變換方法。701(21),( , )cos216iiuu vuG i v()=C( )(3) 701(21)(
22、 , )( , )cos216ijvG i vvf i j=C( )(4) 圖 2 兩維DCT變換方法v3量化量化v為了達(dá)到壓縮數(shù)據(jù)的目的,DCT系數(shù)需做量化。量化是對經(jīng)過FDCT變換后的頻率系數(shù)進(jìn)行量化,這是一個多到一映射的過程。量化的目的是減小非0系數(shù)的幅度以及增加0值系數(shù)的數(shù)目,在一定的主觀保真的前提下,丟掉那些對視覺效果影響不大的信息,量化是圖像質(zhì)量下降的最主要原因。對于有損壓縮算法,JPEG算法使用如圖3所示的均勻量化器進(jìn)行量化,量化步距是量化表的元素,它由系數(shù)所在的位置和每種顏色分量的色調(diào)值來確定。因為人眼對亮度信號比對色差信號更敏感,因此使用了兩種量化表:如表4-4所示的色度量化
23、值和表4-5所示的亮度量化值。此外,由于人眼對低頻分量的圖像比對高頻分量的圖像更敏感,因此圖中左上角的量化步距要比右下角的量化步距小。表4-4和表4-5中的數(shù)值對CCIR 601標(biāo)準(zhǔn)(國際無線電咨詢委員會CCIRInternational Radio Consultative Committee在20世紀(jì)80年代初制定的彩色電視圖像數(shù)字化標(biāo)準(zhǔn))電視圖像已經(jīng)是最佳的。如果不使用這兩種表,你也可以用自己的量化表替換它們。對于上面的例子,我們用表4-4的量化表對其進(jìn)行量化,得到數(shù)組Q(i,j)。量化的公式為:Q(i,j)=Integer(F(i,j)/U(i,j)其中:U(i,j)為量化數(shù)組中對應(yīng)的
24、數(shù)組元素。也就是用數(shù)組F中的各元素分別除以量化數(shù)組Q中的相應(yīng)元素,如圖4-14所示。圖4-14 用量化表量化的數(shù)組以上是編碼時對圖像塊的正向離散余弦變換和量化過程,解碼的時候要進(jìn)行逆量化和逆向離散余弦變換,圖4-15說明了解碼的過程,并且在逆向離散余弦變換之后對重構(gòu)圖像中的每個樣本數(shù)據(jù)加了128,最后得到重構(gòu)圖像樣本:4編碼階段編碼階段 v(1)Z字形編排。對于量化后的二維數(shù)組,我們還要對其進(jìn)行線性化,然后再進(jìn)行壓縮加以傳輸。一個合理的線性化方法可能是一次傳輸Q的一行。由于出現(xiàn)這么多的0,可以使用行程編碼。w(2)直流系數(shù)的編碼。88圖像塊經(jīng)過DCT變換之后得到的DC直流系數(shù)有兩個特點,一是系數(shù)的數(shù)值比較大,二是相鄰88圖像塊的DC系數(shù)值變化不大。根據(jù)這個特點,JPEG算法使用了差分脈沖調(diào)制編碼(DPCM)技術(shù),對相鄰圖像塊之間量化DC系數(shù)的差值進(jìn)行編碼 。wDelta = Dc(0,0)k-Dc(0,0)k1 (4-15)v編碼時,每個矩陣資料的DC值與63個AC值,將分別使用不同的Huffman編碼表,而亮度與
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 銅山區(qū)幼兒園勞務(wù)合同
- 提前還貸后貸款合同處理
- 《堅持依法行政》課件
- 《血壓測量》課件
- 2025年岳陽貨運資格證題庫在線練習(xí)
- 2025年來賓貨運資格證模擬考試題庫下載
- 保障性住房交易附加條款
- 零售行業(yè)文員聘用合同樣本
- 增資擴(kuò)股協(xié)議書
- 花店攤位租賃合同
- 多西他賽化療方案
- 中職學(xué)校專業(yè)建設(shè)指導(dǎo)委員會
- 2024年度醫(yī)院內(nèi)窺鏡科述職報告課件
- 醫(yī)院保安提升服務(wù)方案
- 小紅書app創(chuàng)業(yè)計劃書
- 采煤安全管理知識課件
- 人工智能在通信網(wǎng)絡(luò)中的應(yīng)用
- 高頻電灼儀產(chǎn)品技術(shù)要求深圳半島醫(yī)療
- 年度委托代理記賬服務(wù) 投標(biāo)方案
- 卵圓孔未閉封堵術(shù)術(shù)前宣教
- 中建室外落地式卸料平臺施工方案
評論
0/150
提交評論