【画像処理基礎】BMPフォーマット画像の解析
2274 ワード
最近ずっとbmpフォーマットのピクチャーで画像アルゴリズムの学習を行って、bmpに対して1つの整理をして、後で使うことに備えます.
BMPファイルフォーマットは、Bitmap(ビットマップ)またはDIB(Device-Independent Device)とも呼ばれ、Windowsシステムで広く使われている画像ファイルフォーマットです.画像画素領域のデータを変換せずに保存できるため,RAWデータを取得するための重要なソースとなる.Windowsのグラフィックユーザインタフェース(graphical user interfaces)も、内蔵画像サブシステムGDIでBMPフォーマットをサポートしている.
BMPファイルのデータは、ファイルヘッダから順に4つの部分に分けられる.
bmpファイルヘッダ(bmp file header):ファイルのフォーマット、サイズなどの情報を提供する
ビットマップ情報ヘッダ(bitmap information):画像データのサイズ、ビット平面数、圧縮方式、色インデックスなどの情報を提供する
パレット(color palette):オプションで、インデックスを使用して画像を表す場合、パレットはインデックスに対応する色のマッピングテーブルです.
ビットマップデータ(bitmap data):画像データです
C言語から彼らの定義を見ることができます
(1)bmpファイルヘッダ(14バイト)
(2)ビットマップ情報ヘッダ(40バイト)
(3)パレット(パレットサイズはオプション、サイズはN*4(bytes)で、Nは色の数を表す)
(4)ビットマップデータ(画像によって大きさが異なる):
ビットマップデータは対応する配列であり、RGB、YUV、HSVなど様々なフォーマットが可能である.
BMPファイルフォーマットは、Bitmap(ビットマップ)またはDIB(Device-Independent Device)とも呼ばれ、Windowsシステムで広く使われている画像ファイルフォーマットです.画像画素領域のデータを変換せずに保存できるため,RAWデータを取得するための重要なソースとなる.Windowsのグラフィックユーザインタフェース(graphical user interfaces)も、内蔵画像サブシステムGDIでBMPフォーマットをサポートしている.
BMPファイルのデータは、ファイルヘッダから順に4つの部分に分けられる.
bmpファイルヘッダ(bmp file header):ファイルのフォーマット、サイズなどの情報を提供する
ビットマップ情報ヘッダ(bitmap information):画像データのサイズ、ビット平面数、圧縮方式、色インデックスなどの情報を提供する
パレット(color palette):オプションで、インデックスを使用して画像を表す場合、パレットはインデックスに対応する色のマッピングテーブルです.
ビットマップデータ(bitmap data):画像データです
C言語から彼らの定義を見ることができます
(1)bmpファイルヘッダ(14バイト)
typedef struct tagBITMAPFILEHEADER {
WORD bfType; // , 2
DWORD bfSize; // , 4
WORD bfReserved1; // 1, 2
WORD bfReserved2; // 2, 2
DWORD bfOffBits; // , : = + + 。 4
} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
(2)ビットマップ情報ヘッダ(40バイト)
typedef struct tagBITMAPINFOHEADER{
DWORD biSize; // ,4 。
LONG biWidth; // , ,4 。
LONG biHeight; // , ,4 。
WORD biPlanes; // , 1,2 。
WORD biBitCount; // , ,2 。
DWORD biCompression; // :0 - ( BI_RGB )1 - RLE 8- 8 RLE ( BI_RLE8 )2 - RLE 4- 4 RLE ( BI_RLE4 )3 - Bitfields- ( BI_BITFIELDS ),4 。
DWORD biSizeImage; // , 4 ,4 。
LONG biXPelsPerMeter; // / ,4 。
LONG biYPelsPerMeter;// / ,4 。
DWORD biClrUsed; // 。 0, 。 8- / 0x100 256,4 。
DWORD biClrImportant; // 。 ( 0 ), ,4 。
} BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
(3)パレット(パレットサイズはオプション、サイズはN*4(bytes)で、Nは色の数を表す)
typedef struct tagRGBQUAD {
BYTE rgbBlue;//
BYTE rgbGreen;//
BYTE rgbRed;//
BYTE rgbReserved;//
} RGBQUAD;
(4)ビットマップデータ(画像によって大きさが異なる):
ビットマップデータは対応する配列であり、RGB、YUV、HSVなど様々なフォーマットが可能である.