1.实验原理
RGB转YUV的公式
- Y=0.30 * R+0.59 * G+0.11 * B
- U=0.493 * (B-Y)
- V=0.877 * (R-Y)
位深度和存储方式
BMP 文件的图像深度可选 lbit、4bit、8bit、16bit 及 24bit,8位图像可以是索引彩色图像外,也可以是灰阶图像。
如果图像是16位、24位,则图像文件中不保存调色板,则不存在调色板数据给出。如果图像是1位、4位或者8位,则紧跟其后的是位图数据,位图数据是指向调色板的索引序号。
BMP文件通常是不压缩的,所以它们通常比同一幅图像的压缩图像文件格式要大很多。根据颜色深度的不同,图像上的一个像素可以用一个或者多个字节表示,它由n/8所确定(n是位深度,1字节包含8个数据位)。图片浏览器等基于字节的ASCII值计算像素的颜色,然后从调色板中读出相应的值。
n位2n种颜色的位图近似字节数可以用下面的公式计算:BMP文件大小约等于 54+4∗2n+(w∗h∗n)/8 ,其中高度和宽度都是像素数。需要注意的是上面公式中的54是位图文件的文件头,是彩色调色板的大小。另外需要注意的是这是一个近似值,对于n位的位图图像来说,尽管可能有最多2n中颜色,一个特定的图像可能并不会使用这些所有的颜色。由于彩色调色板仅仅定义了图像所用的颜色,所以实际的彩色调色板将小于计算的值。
bmp文件格式
- bmp位图文件头
typedef struct tagBITMAPFILEHEADER {
WORD bfType; /* 说明文件的类型 */
DWORD bfSize; /* 说明文件的大小,用字节为单位 */
/*注意此处的字节序问题
WORD bfReserved1; /* 保留,设置为0 */
WORD bfReserved2; /* 保留,设置为0 */
DWORD bfOffBits; /* 说明从BITMAPFILEHEADER结构开始到实际的图像数据之间的字节偏移量 */
} BITMAPFILEHEADER;
- bmp位图信息头
typedef struct tagBITMAPINFOHEADER {
DWORD biSize; /* 说明结构体所需字节数 */
LONG biWidth; /* 以像素为单位说明图像的宽度 */
LONG biHeight;