【图像处理基础】BMP格式图片的解析

最近一直在用bmp格式的图片进行图像算法的学习,对bmp来做一个整理,以备后面使用。

BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式。由于它可以不作任何变换地保存图像像素域的数据,因此成为我们取得RAW数据的重要来源。Windows的图形用户界面(graphical user interfaces)也在它的内建图像子系统GDI中对BMP格式提供了支持。

BMP文件的数据按照从文件头开始的先后顺序分为四个部分:

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等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Demo.demo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值