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