資源描述:
《vc++圖象處理教程》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在應用文檔-天天文庫。
1、第1章Windows位圖和調(diào)色板1.1位圖和調(diào)色板的概念如今Windows(3.x以及95,98,NT)系列已經(jīng)成為絕大多數(shù)用戶使用的操作系統(tǒng),它比DOS成功的一個重要因素是它可視化的漂亮界面。那么Windows是如何顯示圖象的呢?這就要談到位圖(bitmap)。我們知道,普通的顯示器屏幕是由許許多多點構成的,我們稱之為象素。顯示時采用掃描的方法:電子槍每次從左到右掃描一行,為每個象素著色,然后從上到下這樣掃描若干行,就掃過了一屏。為了防止閃爍,每秒要重復上述過程幾十次。例如我們常說的屏幕分辨率為640×480,刷新頻率為70Hz,意思是說每行要掃描640個
2、象素,一共有480行,每秒重復掃描屏幕70次。我們稱這種顯示器為位映象設備。所謂位映象,就是指一個二維的象素矩陣,而位圖就是采用位映象方法顯示和存儲的圖象。舉個例子,圖1.1是一幅普通的黑白位圖,圖1.2是被放大后的圖,圖中每個方格代表了一個象素。我們可以看到:整個骷髏就是由這樣一些黑點和白點組成的。圖1.1???骷髏圖1.2????放大后的骷髏位圖那么,彩色圖是怎么回事呢?我們先來說說三元色RGB概念。我們知道,自然界中的所有顏色都可以由紅、綠、藍(R,G,B)組合而成。有的顏色含有紅色成分多一些,如深紅;有的含有紅色成分少一些,如淺紅。針對含有紅色成分的
3、多少,可以分成0到255共256個等級,0級表示不含紅色成分;255級表示含有100%的紅色成分。同樣,綠色和藍色也被分成256級。這種分級概念稱為量化。這樣,根據(jù)紅、綠、藍各種不同的組合我們就能表示出256×256×256,約1600萬種顏色。這么多顏色對于我們?nèi)搜蹃碚f已經(jīng)足夠豐富了。表1.1????常見顏色的RGB組合值顏色RGB紅25500藍02550綠00255黃2552550紫2550255青0255255白255255255黑000灰128128128你大概已經(jīng)明白了,當一幅圖中每個象素賦予不同的RGB值時,能呈現(xiàn)出五彩繽紛的顏色了,這樣就形成了
4、彩色圖。的確是這樣的,但實際上的做法還有些差別。讓我們來看看下面的例子。有一個長寬各為200個象素,顏色數(shù)為16色的彩色圖,每一個象素都用R、G、B三個分量表示。因為每個分量有256個級別,要用8位(bit),即一個字節(jié)(byte)來表示,所以每個象素需要用3個字節(jié)。整個圖象要用200×200×3,約120k字節(jié),可不是一個小數(shù)目呀!如果我們用下面的方法,就能省的多。因為是一個16色圖,也就是說這幅圖中最多只有16種顏色,我們可以用一個表:表中的每一行記錄一種顏色的R、G、B值。這樣當我們表示一個象素的顏色時,只需要指出該顏色是在第幾行,即該顏色在表中的索引
5、值。舉個例子,如果表的第0行為255,0,0(紅色),那么當某個象素為紅色時,只需要標明0即可。讓我們再來計算一下:16種狀態(tài)可以用4位(bit)表示,所以一個象素要用半個字節(jié)。整個圖象要用200×200×0.5,約20k字節(jié),再加上表占用的字節(jié)為3×16=48字節(jié).整個占用的字節(jié)數(shù)約為前面的1/6,省很多吧?這張R、G、B的表,就是我們常說的調(diào)色板(Palette),另一種叫法是顏色查找表LUT(LookUpTable),似乎更確切一些。Windows位圖中便用到了調(diào)色板技術。其實不光是Windows位圖,許多圖象文件格式如pcx、tif、gif等都用到了
6、。所以很好地掌握調(diào)色板的概念是十分有用的。有一種圖,它的顏色數(shù)高達256×256×256種,也就是說包含我們上述提到的R、G、B顏色表示方法中所有的顏色,這種圖叫做真彩色圖(truecolor)。真彩色圖并不是說一幅圖包含了所有的顏色,而是說它具有顯示所有顏色的能力,即最多可以包含所有的顏色。表示真彩色圖時,每個象素直接用R、G、B三個分量字節(jié)表示,而不采用調(diào)色板技術。原因很明顯:如果用調(diào)色板,表示一個象素也要用24位,這是因為每種顏色的索引要用24位(因為總共有224種顏色,即調(diào)色板有224行),和直接用R,G,B三個分量表示用的字節(jié)數(shù)一樣,不但沒有任何便
7、宜,還要加上一個256×256×256×3個字節(jié)的大調(diào)色板。所以真彩色圖直接用R、G、B三個分量表示,它又叫做24位色圖。1.2bmp文件格式介紹完位圖和調(diào)色板的概念,下面就讓我們來看一看Windows的位圖文件(.bmp文件)的格式是什么樣子的。bmp文件大體上分成四個部分,如圖1.3所示。位圖文件頭BITMAPFILEHEADER位圖信息頭BITMAPINFOHEADER調(diào)色板Palette實際的位圖數(shù)據(jù)ImageDate圖1.3????Windows位圖文件結構示意圖第一部分為位圖文件頭BITMAPFILEHEADER,是一個結構,其定義如下:type
8、defstructtagBITMAPFILEHEAD