数字图像处理—学习总结
Posted liutonghao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字图像处理—学习总结相关的知识,希望对你有一定的参考价值。
VC++数字图像处理 杨淑滢
本文对该老师的代码进行总结,代码小白顺便补充一下自己比较困惑的知识点,方便后续复习。
- 对于BMP格式的图像结构分为以下四个部分:
位图文件头结构BITMAPFILEHEADER |
位图信息头结构BITMAPINFOHEADER |
位图颜色表RGBQUAD |
位图像素数据部分 |
- 对于位图的图像分为四类:
- 单色图像:有两个值:0,255其中0表示黑,255表示白(也可以进行归一化处理为0和1)。
- 灰度图像:带有颜色表,相当于索引表。RGB的分量值相同。
- 伪彩色图像:RGB的分量不完全相同,带有颜色表,相当于索引,整个图像256种颜色。
- 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文件的类:
以上是关于数字图像处理—学习总结的主要内容,如果未能解决你的问题,请参考以下文章
《数字图像处理》学习总结及感悟:第二章数字图像基础人眼结构感知和错觉