上篇文章,写了如何读取光谱图片raw,本文就解决,如何把保存的像素值保存为BMP图片格式。
关于bmp文件格式,网上有很多,不再赘述。我们需要做的只是修改相关信息头,然后填充数据就可以了,本代码实现的是24真彩色显示,即不带调色板,R,G,B三个分量都显示同一波段的像素值。这个可以得到一个波段的图像。调整相关系数,就可以得到16个波段的图像。做这个,主要还是为了以后图像处理可以更方便的看到结果。
代码如下:
/* 读取RAW图像*/
#include <pshpack2.h>
#include <stdio.h>
#include <stdlib.h>
#include "string.h"
#define samples 512
#define lines 256
#define bands 16
typedef unsigned char BYTE;
/*写入bmp图像*/
typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef long LONG;
typedef struct {
WORD bfType;//文件类型,必须是0x424D,即字符“BM”
DWORD bfSize;//文件大小
WORD bfReserved1;//保留字
WORD bfReserved2;//保留字
DWORD bfOffBits;//从文件头到实际位图数据的偏移字节数
} BITMAPFILEHEADER;//位图