数字图像处理—学习总结

VC++数字图像处理 杨淑滢

本文对该老师的代码进行总结,代码小白顺便补充一下自己比较困惑的知识点,方便后续复习。

  • 对于BMP格式的图像结构分为以下四个部分:
位图文件头结构BITMAPFILEHEADER
位图信息头结构BITMAPINFOHEADER
位图颜色表RGBQUAD
位图像素数据部分
  • 对于位图的图像分为四类:
  1. 单色图像:有两个值:0,255其中0表示黑,255表示白(也可以进行归一化处理为0和1)。
  2. 灰度图像:带有颜色表,相当于索引表。RGB的分量值相同。
  3. 伪彩色图像:RGB的分量不完全相同,带有颜色表,相当于索引,整个图像256种颜色。
  4. 24位真彩色图像:没有调色表,RGB三分量各占8位。
  • 对于C++中结构体结构的介绍:

            在c++中如果用typedef的话:

    struct   Student   
    {   
    int   a;   
    }stu1;//stu1是一个变量  

 
    typedef   struct   Student2   
    {   
    int   a;   
    }stu2;//stu2是一个结构体类型=struct Student  

             即在C++中用typedef相当于重命名操作,相当于对struct后面的变量重新命名。

  •   对于变量中的类型别名问题—引入头文件“windowsX.h"

             windef.h——基本型态定义 
             winbase.h——Kernel函数 
             wingdi.h——图形设备接口函数 
             winuser.h——使用者接口函数

            其中这里主要使用的是第一个应用:基本形态定义,这里面定义了宏,方便后面的使用。

         

1 typedef unsigned long       DWORD; 
2 typedef int                 BOOL;
3 typedef unsigned char       BYTE; 
4 typedef unsigned short      WORD;
5 typedef float               FLOAT;

于是可以将BMP图像的格式用代码的方式展现出来

位图文件头:

1 typedef struct tagBITMAPFILEHEADER
2 {
3     WORD bftype;//表示2个字节,16位的短整数,用来判断是否为位图文件类型
4     DWORD bfsize;//表示4个字节,位图文件的大小。
5     WORD  bfReaserved1;//位图文件的保留字,必须为0.
6     WORD  bfReaserved2;//位图文件的保留字,必须为0
7     DWORD bfOffBits;//表示数据的起始位置     
8 } BITMAPFILEHEADER; 

位图信息头:

typedef struct tagBITMAPINFOHEADER
{
DWORD biSize;//本结构所占用字节数
LONG biWidth;//位图的宽度,以像素为单位
LONG biHeight;//位图的高度,以像素为单位
WORD biPlanes;//目标设备的级别,必须为1
WORD biBitCount;//每个像素所需的位数,1、4、8、24
DWORD biCompression;/*位图压缩类型,必须为0(不压缩)、1(BI_RLE8压缩类型)、2(BI_RLE4压缩类型)之一*/
DWORD biSizeImage;//位图的大小,以字节为单位
LONG biXPelsPerMeter;//位图水平分辨率,每米像素数
LONG biYPelsPerMeter;//位图垂直分辨率,每米像素数
DWORD biClrUsed;//位图实际使用的颜色表的颜色数
DWORD biClrImportant;//位图显示过程中重要的颜色数
}BITMAPINFOHEADER;

颜色表:

typedef struct tagRGBQUAD
{
BYTE rgbBlue;//蓝色的亮度(0~255)
BYTE rgbGreen;//绿色
BYTE rgbRed;//红色
BYTE rgbReserved;//保留,必须为0
}RGBQUAD;

把结构体构造结束之后,来构造BMP文件的类:

 

         

猜你喜欢

转载自www.cnblogs.com/liutonghao/p/9757970.html