图像格式基础
??????? 所謂位映像,即是指一個(gè)二維的像素矩陣,而位圖就是采用位映像方法顯示和存儲(chǔ)圖像。一幅圖像的顯示就是將圖像的像素映射到屏幕的像素上并顯示一定的顏色。當(dāng)一幅圖形的像素由彩色表示時(shí)就是我們通常所說(shuō)的彩色圖像了。
? ? ? ? 由于數(shù)字圖像可以表示為矩陣的形式,所以在計(jì)算機(jī)數(shù)字圖像處理程序中,通常用二維數(shù)組來(lái)存放圖像數(shù)據(jù)。二維數(shù)組的行對(duì)應(yīng)圖像的高,二維數(shù)組的列對(duì)應(yīng)圖像的寬,二維數(shù)組的元素對(duì)應(yīng)圖像的像素,二維數(shù)組元素的值就是像素的灰度值。采用二維數(shù)組來(lái)存儲(chǔ)數(shù)字圖像,符合二維圖像的行列特性,同時(shí)也便于程序的尋址操作,使得計(jì)算機(jī)圖像編程十分方便.
?? ? ?? 圖像的問(wèn)題數(shù)據(jù)是一個(gè)二維數(shù)組(矩陣),矩陣的每一個(gè)元素對(duì)應(yīng)了圖像的一個(gè)像素,當(dāng)保存一幅圖像時(shí),不但要保存圖像的位圖數(shù)據(jù)矩陣,還要將每個(gè)像素的顏色保存下來(lái),顏色的記錄是利用顏色表來(lái)完成的。
? ? ? ? 顏色表,也叫顏色查找表,是圖像像素?cái)?shù)據(jù)的顏色索引表。對(duì)于真彩色圖像,每個(gè)像素占存儲(chǔ)空間3個(gè)字節(jié)(24位),分別對(duì)應(yīng)R, G, B三個(gè)分量,每個(gè)像素的值已經(jīng)將該像素的顏色記錄下來(lái)了,不再需要顏色表,因此24位真彩色位圖沒(méi)有顏色表。
?? ? ?? 彩色圖像可以由RGB彩色空間表示。彩色空間是用來(lái)表示彩色的數(shù)學(xué)模型,又被稱(chēng)為彩色模型。計(jì)算計(jì)算上顯示的圖像經(jīng)常有二值圖像、灰度圖像、偽彩色圖像及真彩色圖像等不同格式類(lèi)型。而灰度和彩色格式是數(shù)字圖像處理中最常用到的類(lèi)型。
??????? 灰度圖像是數(shù)字圖像的最基本形式,灰度圖像可以由黑白照片數(shù)字化得到,或從彩色圖像進(jìn)行去色處理得到。灰度圖像只表達(dá)圖像的亮度信息而沒(méi)有彩色信息,因此,灰度圖像的每個(gè)像素點(diǎn)上只包含一個(gè)量化的灰度級(jí)(即灰度值),用來(lái)表示該點(diǎn)的亮度水平,并且通常用1個(gè)字節(jié)(8個(gè)二進(jìn)制位)來(lái)存儲(chǔ)灰度值。??
??? ? ? 彩色圖像數(shù)據(jù)不僅包含亮度信息,還包含顏色信息。BMP文件結(jié)構(gòu)及其存取:數(shù)字圖像在外存儲(chǔ)器設(shè)備中的存儲(chǔ)形式是圖像文件,圖像必須按照某個(gè)已知的、公認(rèn)的數(shù)據(jù)存儲(chǔ)順序和結(jié)構(gòu)進(jìn)行存儲(chǔ),才能使不同的程序?qū)D像文件順利進(jìn)行打開(kāi)或存盤(pán)操作,實(shí)現(xiàn)數(shù)據(jù)共享。
??? ? ? 圖像數(shù)據(jù)子文件中的存儲(chǔ)順序和結(jié)構(gòu)稱(chēng)為圖像文件格式。目前廣為流傳的圖像文件格式有許多種,常見(jiàn)的格式包括BMP, GIF, JPEG, TIFF,PSD, DICOM, MPEG等。在各種圖像文件格式中,一部分時(shí)由某個(gè)軟硬件廠商提出并廣泛接受和采用的格式,如BMP, GIF和PSD格式。另一部分是由各種國(guó)際標(biāo)準(zhǔn)組織提出的形式,例如JPEG/ TIFF和DICOM,其中JEPG是國(guó)際靜止圖像壓縮標(biāo)準(zhǔn)組織提出的格式,TIFF是由部分廠商組織提出的格式,DICOM是醫(yī)學(xué)圖像國(guó)際標(biāo)準(zhǔn)組織提取的醫(yī)學(xué)圖像專(zhuān)用格式。
?????? 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文件結(jié)構(gòu):
?? ? ? BMP文件圖像被分成4部分:位圖文件頭、位圖信息頭、顏色表和位圖數(shù)據(jù)。
? ? ?? 第一部分為位圖文件頭BITMAPFILEHEADER,是一個(gè)結(jié)構(gòu)體類(lèi)型,該結(jié)構(gòu)的長(zhǎng)度是固定的,為14個(gè)字節(jié)。
?? ? ? 第二部分為位圖信息頭BITMAPINFOHEADER,也是一個(gè)結(jié)構(gòu)體類(lèi)型的數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)的長(zhǎng)度也是固定的,為40個(gè)字節(jié)。
?? ? ? 第三部分為顏色表。顏色表實(shí)際上時(shí)一個(gè)RGBQUAD結(jié)構(gòu)的數(shù)組,數(shù)組的長(zhǎng)度由biClrUsed指定。RGBQUAD結(jié)構(gòu)是一個(gè)結(jié)構(gòu)體類(lèi)型,占4個(gè)字節(jié)。
???? ? 第四部分是位圖數(shù)據(jù),即圖像數(shù)據(jù),其緊跟在位圖文件頭、位圖信息頭和顏色表(如果有顏色表的話(huà))之后,記錄了圖像的每一個(gè)像素值。對(duì)于由顏色表的位圖,位圖數(shù)據(jù)就是該像素顏色在調(diào)色板中的索引值。對(duì)于真彩色圖,位圖數(shù)據(jù)就是實(shí)際的R, G, B值(三個(gè)分量的存貯順序是R, G, R)。
?? ? ? windows規(guī)定一個(gè)掃描行所占的字節(jié)數(shù)必須是4的倍數(shù),不足4的倍數(shù)則要對(duì)其進(jìn)行擴(kuò)充。一般來(lái)說(shuō),BMP文件的數(shù)據(jù)是從圖像的坐下角開(kāi)始逐行掃描的,即從下到上、從左到右,將圖像的像素值一一記錄下來(lái),因此圖像坐標(biāo)零點(diǎn)在圖像坐下角。
???? ?? 假設(shè)內(nèi)存中位圖數(shù)據(jù)的指針為pBmpBuf,一行像素所占的字節(jié)數(shù)為lineByte(4的倍數(shù))那么,對(duì)于灰度圖像,第i行第j列的像素指針(所在的存儲(chǔ)空間位置)為pBmpBuf+i*lineByte+j , *(pBmpBuf+i*lineByte+j)是該像素的灰度值,如果想讓該像素變成指定顏色,只需要給*(pBmpBuf+i*lineByte+j)賦指定的值即可;對(duì)于彩色圖像,每像素占3個(gè)字節(jié),那么pBmpBuf+i*lineByte+j*3+0、pBmpBuf+i*lineByte+j*3+1、pBmpBuf+i*lineByte+j*3+2分別代表了第i行第j列像素B、G、R三個(gè)分量的指針,若想給該點(diǎn)指定一種顏色,則需要給三個(gè)分量分別賦值。
?? ? ?? 灰度圖像的顏色表是一個(gè)256個(gè)表項(xiàng)的RGBQUAD結(jié)構(gòu)體數(shù)組,而每個(gè)RGBQUAD中的R、G、B分量的值是相等的。隨著顏色表駐足下標(biāo)從0到255變化,顏色表數(shù)組元素。R、G、B分量也從0到255依次變化。灰度圖像的位圖數(shù)據(jù)每像素一個(gè)字節(jié),其值為0到255之間的一個(gè),當(dāng)顯示一幅灰度圖像時(shí),系統(tǒng)根據(jù)像素值,到顏色表數(shù)組下表與之對(duì)應(yīng)的表項(xiàng)(數(shù)組元素)中查看顏色,根據(jù)該表項(xiàng)中的顏色顯示像素。由于灰度圖像顏色表每個(gè)表項(xiàng)中R、G、B分量相等,因此只有圖像亮度信息,沒(méi)有顏色信息,因而顯示出的灰度也就沒(méi)有顏色了。
?? ? ?? 從以上的解釋中我們知道,圖像顏色表決定了圖像的顏色,如果對(duì)灰度圖像的顏色表中的數(shù)據(jù)進(jìn)行改變,圖像顏色自然也就被改變了。改變后弧度圖像顏色表改變,此時(shí)顏色表R、G、B三個(gè)分量的值已經(jīng)不再相等,因此圖像也就具有了顏色信息,只不過(guò)此時(shí)的顏色并不是物體真實(shí)的顏色。
? ? ? ? 由于數(shù)字圖像可以表示為矩陣的形式,所以在計(jì)算機(jī)數(shù)字圖像處理程序中,通常用二維數(shù)組來(lái)存放圖像數(shù)據(jù)。二維數(shù)組的行對(duì)應(yīng)圖像的高,二維數(shù)組的列對(duì)應(yīng)圖像的寬,二維數(shù)組的元素對(duì)應(yīng)圖像的像素,二維數(shù)組元素的值就是像素的灰度值。采用二維數(shù)組來(lái)存儲(chǔ)數(shù)字圖像,符合二維圖像的行列特性,同時(shí)也便于程序的尋址操作,使得計(jì)算機(jī)圖像編程十分方便.
?? ? ?? 圖像的問(wèn)題數(shù)據(jù)是一個(gè)二維數(shù)組(矩陣),矩陣的每一個(gè)元素對(duì)應(yīng)了圖像的一個(gè)像素,當(dāng)保存一幅圖像時(shí),不但要保存圖像的位圖數(shù)據(jù)矩陣,還要將每個(gè)像素的顏色保存下來(lái),顏色的記錄是利用顏色表來(lái)完成的。
? ? ? ? 顏色表,也叫顏色查找表,是圖像像素?cái)?shù)據(jù)的顏色索引表。對(duì)于真彩色圖像,每個(gè)像素占存儲(chǔ)空間3個(gè)字節(jié)(24位),分別對(duì)應(yīng)R, G, B三個(gè)分量,每個(gè)像素的值已經(jīng)將該像素的顏色記錄下來(lái)了,不再需要顏色表,因此24位真彩色位圖沒(méi)有顏色表。
?? ? ?? 彩色圖像可以由RGB彩色空間表示。彩色空間是用來(lái)表示彩色的數(shù)學(xué)模型,又被稱(chēng)為彩色模型。計(jì)算計(jì)算上顯示的圖像經(jīng)常有二值圖像、灰度圖像、偽彩色圖像及真彩色圖像等不同格式類(lèi)型。而灰度和彩色格式是數(shù)字圖像處理中最常用到的類(lèi)型。
??????? 灰度圖像是數(shù)字圖像的最基本形式,灰度圖像可以由黑白照片數(shù)字化得到,或從彩色圖像進(jìn)行去色處理得到。灰度圖像只表達(dá)圖像的亮度信息而沒(méi)有彩色信息,因此,灰度圖像的每個(gè)像素點(diǎn)上只包含一個(gè)量化的灰度級(jí)(即灰度值),用來(lái)表示該點(diǎn)的亮度水平,并且通常用1個(gè)字節(jié)(8個(gè)二進(jìn)制位)來(lái)存儲(chǔ)灰度值。??
??? ? ? 彩色圖像數(shù)據(jù)不僅包含亮度信息,還包含顏色信息。BMP文件結(jié)構(gòu)及其存取:數(shù)字圖像在外存儲(chǔ)器設(shè)備中的存儲(chǔ)形式是圖像文件,圖像必須按照某個(gè)已知的、公認(rèn)的數(shù)據(jù)存儲(chǔ)順序和結(jié)構(gòu)進(jìn)行存儲(chǔ),才能使不同的程序?qū)D像文件順利進(jìn)行打開(kāi)或存盤(pán)操作,實(shí)現(xiàn)數(shù)據(jù)共享。
??? ? ? 圖像數(shù)據(jù)子文件中的存儲(chǔ)順序和結(jié)構(gòu)稱(chēng)為圖像文件格式。目前廣為流傳的圖像文件格式有許多種,常見(jiàn)的格式包括BMP, GIF, JPEG, TIFF,PSD, DICOM, MPEG等。在各種圖像文件格式中,一部分時(shí)由某個(gè)軟硬件廠商提出并廣泛接受和采用的格式,如BMP, GIF和PSD格式。另一部分是由各種國(guó)際標(biāo)準(zhǔn)組織提出的形式,例如JPEG/ TIFF和DICOM,其中JEPG是國(guó)際靜止圖像壓縮標(biāo)準(zhǔn)組織提出的格式,TIFF是由部分廠商組織提出的格式,DICOM是醫(yī)學(xué)圖像國(guó)際標(biāo)準(zhǔn)組織提取的醫(yī)學(xué)圖像專(zhuān)用格式。
?????? 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文件結(jié)構(gòu):
?? ? ? BMP文件圖像被分成4部分:位圖文件頭、位圖信息頭、顏色表和位圖數(shù)據(jù)。
? ? ?? 第一部分為位圖文件頭BITMAPFILEHEADER,是一個(gè)結(jié)構(gòu)體類(lèi)型,該結(jié)構(gòu)的長(zhǎng)度是固定的,為14個(gè)字節(jié)。
?? ? ? 第二部分為位圖信息頭BITMAPINFOHEADER,也是一個(gè)結(jié)構(gòu)體類(lèi)型的數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)的長(zhǎng)度也是固定的,為40個(gè)字節(jié)。
?? ? ? 第三部分為顏色表。顏色表實(shí)際上時(shí)一個(gè)RGBQUAD結(jié)構(gòu)的數(shù)組,數(shù)組的長(zhǎng)度由biClrUsed指定。RGBQUAD結(jié)構(gòu)是一個(gè)結(jié)構(gòu)體類(lèi)型,占4個(gè)字節(jié)。
???? ? 第四部分是位圖數(shù)據(jù),即圖像數(shù)據(jù),其緊跟在位圖文件頭、位圖信息頭和顏色表(如果有顏色表的話(huà))之后,記錄了圖像的每一個(gè)像素值。對(duì)于由顏色表的位圖,位圖數(shù)據(jù)就是該像素顏色在調(diào)色板中的索引值。對(duì)于真彩色圖,位圖數(shù)據(jù)就是實(shí)際的R, G, B值(三個(gè)分量的存貯順序是R, G, R)。
?? ? ? windows規(guī)定一個(gè)掃描行所占的字節(jié)數(shù)必須是4的倍數(shù),不足4的倍數(shù)則要對(duì)其進(jìn)行擴(kuò)充。一般來(lái)說(shuō),BMP文件的數(shù)據(jù)是從圖像的坐下角開(kāi)始逐行掃描的,即從下到上、從左到右,將圖像的像素值一一記錄下來(lái),因此圖像坐標(biāo)零點(diǎn)在圖像坐下角。
???? ?? 假設(shè)內(nèi)存中位圖數(shù)據(jù)的指針為pBmpBuf,一行像素所占的字節(jié)數(shù)為lineByte(4的倍數(shù))那么,對(duì)于灰度圖像,第i行第j列的像素指針(所在的存儲(chǔ)空間位置)為pBmpBuf+i*lineByte+j , *(pBmpBuf+i*lineByte+j)是該像素的灰度值,如果想讓該像素變成指定顏色,只需要給*(pBmpBuf+i*lineByte+j)賦指定的值即可;對(duì)于彩色圖像,每像素占3個(gè)字節(jié),那么pBmpBuf+i*lineByte+j*3+0、pBmpBuf+i*lineByte+j*3+1、pBmpBuf+i*lineByte+j*3+2分別代表了第i行第j列像素B、G、R三個(gè)分量的指針,若想給該點(diǎn)指定一種顏色,則需要給三個(gè)分量分別賦值。
?? ? ?? 灰度圖像的顏色表是一個(gè)256個(gè)表項(xiàng)的RGBQUAD結(jié)構(gòu)體數(shù)組,而每個(gè)RGBQUAD中的R、G、B分量的值是相等的。隨著顏色表駐足下標(biāo)從0到255變化,顏色表數(shù)組元素。R、G、B分量也從0到255依次變化。灰度圖像的位圖數(shù)據(jù)每像素一個(gè)字節(jié),其值為0到255之間的一個(gè),當(dāng)顯示一幅灰度圖像時(shí),系統(tǒng)根據(jù)像素值,到顏色表數(shù)組下表與之對(duì)應(yīng)的表項(xiàng)(數(shù)組元素)中查看顏色,根據(jù)該表項(xiàng)中的顏色顯示像素。由于灰度圖像顏色表每個(gè)表項(xiàng)中R、G、B分量相等,因此只有圖像亮度信息,沒(méi)有顏色信息,因而顯示出的灰度也就沒(méi)有顏色了。
?? ? ?? 從以上的解釋中我們知道,圖像顏色表決定了圖像的顏色,如果對(duì)灰度圖像的顏色表中的數(shù)據(jù)進(jìn)行改變,圖像顏色自然也就被改變了。改變后弧度圖像顏色表改變,此時(shí)顏色表R、G、B三個(gè)分量的值已經(jīng)不再相等,因此圖像也就具有了顏色信息,只不過(guò)此時(shí)的顏色并不是物體真實(shí)的顏色。
總結(jié)
- 上一篇: 2020年华为杯中国研究生数学建模出结果
- 下一篇: 使用handler倒计时