版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1.BMP圖像的結(jié)構(gòu)與顯示BMP文件是Windows操作系統(tǒng)所推薦和支持的圖像文件格式,是一種將內(nèi)存或顯示器的圖像數(shù)據(jù)不經(jīng)過(guò)壓縮而直接按位存盤(pán)的文件格式,所以稱(chēng)為位圖(bitmap)文件,因其文件擴(kuò)展名為BMP,故稱(chēng)為BMP文件格式,簡(jiǎn)稱(chēng)BMP文件。BMP圖像文件被分成4個(gè)部分:位圖文件頭(Bitmap )、位圖信息頭(Bitmap Info Header)、顏色表(Color Map)和位圖數(shù)據(jù)(即圖像數(shù)據(jù),Data Bits或Data Body)。為了實(shí)現(xiàn)BMP圖像的各種處理(如顯示 ,平滑 ,銳化等),我們必須清楚BMP 圖像文件的組成 ,下面將詳細(xì)介紹一下BMP 圖像的文件格式。1.1
2、 BMP圖像的文件格式BMP圖像文件由文件頭、文件信息頭、調(diào)色板和圖像數(shù)據(jù)組成。(1)文件頭 文件頭是一個(gè)結(jié)構(gòu) ,長(zhǎng)度為 14 個(gè)字節(jié) ,各組成部分如下:WORD bfType / 2 個(gè)字節(jié)表示文件類(lèi)型 ,其值為“BMDWORD bfSize / 4 個(gè)字節(jié)表示文件的大小。WORD bfReserved1 / 2 個(gè)字節(jié)保留 ,其值為 0。WORD bfReserved1 / 2 個(gè)字節(jié)保留 ,其值為 0。DWORD bfOffBits / 4 個(gè)字節(jié)表示第一個(gè)像素的偏移量由文件頭可以獲得該文件型、小及第一個(gè)像素的偏移地址。(2)文件信息頭文件信息頭也是一個(gè)結(jié)構(gòu)體,長(zhǎng)度為40個(gè)字節(jié),各組成部
3、分如下:DWORLD biSize / 4個(gè)字節(jié)存放文件信息頭的長(zhǎng)度,其值為40。LONG biWidth / 4個(gè)字節(jié)存放位圖的寬度。LONG biHeight / 4個(gè)字節(jié)存放位圖的高度。WORD biplanes / 2個(gè)字節(jié)存放平面的數(shù)目,其值為1。WORD biBitcount /兩個(gè)字節(jié)存放每個(gè)像素所占的位數(shù),其值可以是1,4,8,24等。DWORD biCompression / 4個(gè)字節(jié)指定位圖是否壓縮,其值可以是常值BI_RGB,BI_RLE8,BI_RLE4等。如果沒(méi)有壓縮則為BI_RGB(即0)。DWORD biSizeImage / 4個(gè)字節(jié)表示位圖的實(shí)際大小。LONG
4、 biXPelsPerMeter / 4個(gè)字節(jié)指定目標(biāo)設(shè)備的水平分辨率,通常不用將其設(shè)為0。LONG biYPelsPerMeter / 4個(gè)字節(jié)指定目標(biāo)設(shè)備的垂直分辨率,通常不用將其設(shè)為0。DWORD biClrUsed / 4個(gè)字節(jié)指定圖像實(shí)際用到的顏色數(shù),若使用所有顏色則值為0。DWORD biClrImportant / 4個(gè)字節(jié)指定圖像中重要的顏色數(shù),若全部重要?jiǎng)t值為0。由文件信息頭可以獲得有關(guān)位圖的詳細(xì)信息,位圖的實(shí)際大小并不等于biWidth和biHeight的乘積。因?yàn)樵诒4嫖粓D時(shí)要求每一行的字?jǐn)?shù)必須是4的整數(shù)倍,如果不是,則需要補(bǔ)齊。(3) 顏色表顏色表實(shí)際上是一個(gè)RGBQU
5、AD結(jié)構(gòu)的數(shù)組,數(shù)組的長(zhǎng)度由biClrUsed指定(如果該值為零,則由biBitCount指定,即2的biBitCount次冪個(gè)元素)。RGBQUAD結(jié)構(gòu)是一個(gè)結(jié)構(gòu)體類(lèi)型,占4個(gè)字節(jié),其定義如下:BYTE rgbRed /紅色分量BYTE rgbGreen /綠色分量BYTE rgbBlue /藍(lán)色分量BYTE rgbReserved /保留位有些位圖需要顏色表;有些位圖(如真彩色圖)則不需要顏色表,顏色表的長(zhǎng)度由BITMAPINFOHEADER結(jié)構(gòu)中biBitCount分量決定。對(duì)于biBitCount值為1的二值圖像,每像素占1bit,圖像中只有兩種(如黑白)顏色,顏色表也就有21=2個(gè)表
6、項(xiàng),整個(gè)顏色表的大小為2*sizeof(RGBQUAD)=2*4=8個(gè)字節(jié);對(duì)于biBitCount值為8的灰度圖像,每像素占8bit,圖像中有28=256種顏色,顏色表也就有256個(gè)表項(xiàng),且每個(gè)表項(xiàng)的R、G、B分量相等,整個(gè)顏色表的大小為256*sizeof(RGBQUAD)=256*4=1024個(gè)字節(jié);而對(duì)于biBitCount=24的真彩色圖像,由于每像素3個(gè)字節(jié)中分別代表了R、G、B三分量的值,此時(shí)不需要顏色表,因此真彩色圖的BITMAPINFOHEADER結(jié)構(gòu)后面直接就是位圖數(shù)據(jù)。(4)位圖數(shù)據(jù) 緊跟在顏色表之后的是圖像數(shù)據(jù)字節(jié)陣列,即圖像數(shù)據(jù),記錄了圖像的每一個(gè)像素值。對(duì)于有顏色表
7、的位圖,位圖數(shù)據(jù)就是該像素顏色在調(diào)色板中的索引值;對(duì)于真彩色圖,位圖數(shù)據(jù)就是實(shí)際的R、G、B值(三個(gè)分量的存儲(chǔ)順序是B、G、R)。相應(yīng)地,對(duì)于2色圖象,用1位表示顏色,因此一個(gè)字節(jié)表示8個(gè)像素;對(duì)于16色圖象,用4位表示一個(gè)像素的顏色,一個(gè)字節(jié)表示2個(gè)像素;對(duì)于256色圖象,用8位表示一個(gè)像素的顏色,一個(gè)字節(jié)只表示1個(gè)像素。圖像的每一掃描行由表示圖像的像素的連素字節(jié)組成,每一行的字節(jié)數(shù)取決于圖像的顏色數(shù)目和用像素表示的圖像寬度。掃描行是由底向上存儲(chǔ)的,這就是說(shuō),陣列中的每一個(gè)字節(jié)表示位圖左下角的像素,而最后一個(gè)字節(jié)表示位圖右上角的像素。1.2 BMP圖象文件顯示在VC+的的應(yīng)用程序中顯示圖像
8、,通常有兩種方法。一種方法是在應(yīng)用程序中加入固定的位圖,為該圖指定ID,使用靜態(tài)圖片控件或ActiveX控件來(lái)顯示圖象。另一種方法是使用位圖類(lèi)Cbitmap,利用LoadImage函數(shù)動(dòng)態(tài)地從系統(tǒng)盤(pán)的文件中載入位圖圖像 ,將載入的圖像句柄和Cbitmap類(lèi)相關(guān)連。使用BitBlt函數(shù)把位圖拷貝到能夠顯示圖像的設(shè)備場(chǎng)境中。設(shè)備場(chǎng)境中包含有關(guān)于系統(tǒng)、應(yīng)用程序和繪圖窗口的信息。我們還可以使用 StretchBlt 函數(shù)拷貝圖像 ,并調(diào)整圖像的大小 ,使之適合在特定的設(shè)備場(chǎng)境中顯示。各函數(shù)的用法如下所示:HBITMAP hbitmap;/*加載BMP文件,為BMP文件名*/Hbitmap=(HBITM
9、AP):LoadImage(AfxGetInstanceHandle(),);/*Bitmap為Cbitmap類(lèi)的一個(gè)對(duì)象,實(shí)現(xiàn)圖象句柄和類(lèi)相關(guān)連*/Bitmap.Attach(hbitmap);/*拷貝位圖到屏幕*/BitBlt(10,10,width,height,&dc,0,0,SRCCOPY);/*拷貝圖象并調(diào)整顯示大小*/StrwtchBlt(10,10,Rwidth,Rheight,&dc,width,height,SRCCOPY);實(shí)際上,由BMP圖象文件格式可以很方便地從文件中讀出各部分信息,在獲得調(diào)色板和圖象數(shù)據(jù)后,利用SetDIBitsToDevice函數(shù)或
10、StrechDIBits函數(shù)來(lái)顯示圖象或打印圖象。2顏色表的修改2.1 RGB模型RGB模式是基于自然界中3種基色光的混合原理,將R、G、B三種基色按照從0(黑)到255(白色)的亮度值在每個(gè)色階中分配,從而指定其色彩,當(dāng)不同亮度的基色混合后共產(chǎn)生=16777216種顏色。在理想條件下,加色原理R+G=Y,R+B=M,G+B=C。當(dāng)3種基色的亮度值相等時(shí),產(chǎn)生灰色,當(dāng)3種亮度值都是255時(shí),產(chǎn)生純白色;而當(dāng)所有亮度值都是0時(shí),產(chǎn)生純黑色。當(dāng)3種色光混合生成的顏色一般比原來(lái)的顏色亮度值高,所以RGB模式產(chǎn)生顏色的方法又被稱(chēng)為加色混合。2.2 顏色表的修改一幅圖像有眾多的事物,為了按照人們的意愿,
11、傳達(dá)某種信息,突出自己最想表達(dá)的信息,可以用色彩來(lái)完成!那么,在我們的圖像中如何完成這樣的任務(wù)呢?256色的BMP格式的圖像是有顏色表的。顏色表分R,G,B三種基色。首先,我們應(yīng)該把顏色表找到并提取出來(lái)。根據(jù)BMP圖像數(shù)據(jù)存儲(chǔ)的特點(diǎn),我們很容易找到顏色表。找到顏色表之后,按照我們的需要,我們所想表達(dá)突出的色彩就可以通過(guò)修改顏色表的R,G,B三基色的值來(lái)完成。將三基色提取出來(lái),并恰當(dāng)?shù)母娜?到255間的值的大小,使得某種顏色變得突出,以來(lái)表達(dá)我們想要突出的色彩!例如我們想使花變的更紅一些,我們就可以適當(dāng)?shù)脑黾覴基色在0到255間的值,減小G,B兩種基色的大小,也就是改變G、B基色在0到2
12、55間的值,那么紅色的像素點(diǎn)就會(huì)增加紅的級(jí)數(shù),這樣就會(huì)使圖像的紅色更加突出。同理,適當(dāng)增加G基色在0到255間的值,減小R,B兩種基色在0到255間的值,綠色的像素點(diǎn)也就相應(yīng)的增加了級(jí)數(shù),那么就可以使圖像的綠色更加突出。例如在一幅春天草地的圖像中,增加G基色的級(jí)數(shù),就可以使小草顯得生機(jī)勃勃,以表達(dá)春意盎然的景象和情感,完成我們的表達(dá)重點(diǎn)了!我們更改了256色的BMP格式的顏色表,讓原有的圖像的某種顏色更加突出,來(lái)實(shí)現(xiàn)我們所需要的色彩的突出。我們更改某種基色,或者更改幾種基色,即重新給某種基色在0到255間賦值,使得圖像的像素都隨之適當(dāng)變化,達(dá)到我們所需的效果。3實(shí)驗(yàn)結(jié)果與分析 以512*512
13、的256色圖像進(jìn)行結(jié)果的驗(yàn)證分析。程序運(yùn)行結(jié)果圖如下:圖1 原圖圖2 原圖的顏色表圖4 藍(lán)色突出效果圖3修改顏色表對(duì)話(huà)框圖5藍(lán)色效果顏色表圖1為程序運(yùn)行打開(kāi)的原圖,圖2為程序運(yùn)行獲得的顏色表。圖3 為修改顏色表的對(duì)話(huà)框,這次修改顏色表目的是突出藍(lán)色效果,變化后的結(jié)果為圖4。圖5為修改顏色表突出藍(lán)色效果后,獲得的顏色表,在這幅顏色表截圖中可以很明顯的看到顏色表中藍(lán)色的顏色條增加了許多。同理可獲得綠色和紅色的突出效果。如圖6,圖7,圖8,圖9所示。圖7 綠色效果顏色表圖6 綠色突出效果圖9 紅色效果顏色表圖8 紅色突出效果4.總結(jié)本文討論了基于VC+6.0集成開(kāi)發(fā)環(huán)境,打開(kāi)一幅256色BMP圖像,通過(guò)修改其顏色表獲得相應(yīng)的顏色突出效果。本文對(duì)BMP圖像的結(jié)構(gòu)特點(diǎn)和顯示做了簡(jiǎn)單的介紹,著重于顏色表的修改。本次的實(shí)現(xiàn),方法總體來(lái)說(shuō)是比較快速和靈活的。能
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年汽車(chē)修理廠(chǎng)綜合維修工職業(yè)協(xié)議樣本版B版
- 2024年黃金產(chǎn)品銷(xiāo)售代表合同版B版
- 2025年度智能工廠(chǎng)產(chǎn)權(quán)轉(zhuǎn)讓及定金支付協(xié)議范本3篇
- 2024年度大蒜種植補(bǔ)貼項(xiàng)目采購(gòu)合同2篇
- 2024年環(huán)保設(shè)施運(yùn)營(yíng)管理服務(wù)合同
- 危重心律失常的急診處理
- 2025年度科幻小說(shuō)改編劇本創(chuàng)作合同3篇
- 2024版自建房房屋買(mǎi)賣(mài)合同
- 2024年規(guī)范保健品購(gòu)銷(xiāo)合同模板版B版
- 2024年物業(yè)管理分包協(xié)議6篇
- 城市生活垃圾分選系統(tǒng)設(shè)計(jì)
- 綠色施工管理體系與管理制度管理辦法(新版)
- 除氧器出水溶解氧不合格的原因有哪些
- 機(jī)動(dòng)車(chē)交通事故快速處理協(xié)議書(shū)(最新格式)
- 最新拉鏈廠(chǎng)安全操作規(guī)程
- 述職報(bào)告評(píng)分表
- 變壓器交接試驗(yàn)報(bào)告(1250)
- LOI外貿(mào)采購(gòu)意向(標(biāo)準(zhǔn)樣本)
- 水電交接確認(rèn)單(共2頁(yè))
- CTG-MBOSS CRM20 分總冊(cè)_普訓(xùn)版_圖文
- 2022年薄壁空心墩施工安全專(zhuān)項(xiàng)方案
評(píng)論
0/150
提交評(píng)論