前言
数字图像处理笔记
正文
可以使用Utrapdit软件查看图片的ASIIC值(可以看任何文件的ASIIC值)
一. 第一讲 数字图像处理概述
- 图形和图像的区别:
- 图形: 一条指令; 比如一条直线的表示
- 图像: 大矩阵, 里面的数据是每一点的颜色值
-
宽高相乘就是图像的像素
-
图像空间分辨率和灰度级分辨率(表用多少位表示)
-
jpg是压缩格式; 网上的视屏也是经过压缩后传输再解压缩播放的
二. 第二讲 图像存储格式
-
单色图像(黑白图像): 一位;
-
8位索引图像: 有一个颜色表和一个像颜色表的序号的数据矩阵
- 8位索引灰度图像: 颜色表中的RGB相等
- 8位伪彩色索引图像: 颜色表中的RGB值不等
-
彩色图像: 分为伪彩色和真彩色(每个像素24位, RGB各占8位);
-
BMP, GIF, TIF, JPEG
- GIF: 主要用于不同平台上交流和传输, 而不是作为文件的存储格式
- TIF: 最复杂
三. 第三讲 BMP位图文件的存储格式
- BMP文件组成:
- 位图文件头结构: BITMAPFILEHEADER
- 位图信息头结构: BITMAPINFOHEADER
- 位图颜色表: RGBQUAD(有的可能没有颜色表, 具体有没有, 参见第二讲)
- 位图像素数据
- BMP文件头: 14个字节
typedef struct tagBITMAPFILEHEADER
{
WORD bfType; // BM: BMP文件标识(前两个字节), 一个字节是B, 一个字节是M
DWORD bfSize; // 文件大小
WORD bfReserved1; // 0
WORD bfReserved2; // 0
DWORD bfOffBits; // 位图数据的起始位置
} BITMAPFILEHEDADER;
- BMP信息头结构: 40个字节
typedef struct tagBITMAPINFOHEADER
{
DWORD biSize; // 本结构的大小: 40个字节
LONG biWidth; // 位图宽度, 像素为单位
LONG biHeight; // 位图高度, 像素为单位
WORD biPlanes; // 位平面数, 是标准的一般是1
WORD biBitCount; // 每个像素所需的位数
DWORD biCompression; // 位图压缩类型: BMP位图一般不压缩, 取0
DWORD biSizeImage; // 位图大小
LONG biXpelsPerMeter; // 水平分辨率(像素点/米)
LONG biYPelsPerMeter; // 垂直分辨率(像素点/米)
DWORD biCIrUsed; // 颜色数: 如果是标准颜色, 如16, 24, 256等位颜色, 则是0; 如果是自己定义, 则需要将颜色数写在这
DWORD biCIrImportant; // 重要的颜色数
} BITMAPINFOHEADER;
- 颜色表:
typedef struct tagRGBQUAD
{
BYTE rgbBlue; // 蓝色
BYTE rgbGreen; // 绿色
BYTE rgbRed; // 红色
BYTE rgbReserved; // 保留字节; 0
} RGBQUAD;
- 位图信息 – BITMAPINFO结构: 图像显示时作为参数传入函数
struct tagBITMAPINFO
{
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1]; // 颜色表(上的第一项)
} BITMAPINFO;
四. 几何变换基础
讲解平移, 缩放, 旋转, 镜像等的矩阵和原理