高光谱真彩色图像合成原理及具体操作过程

  • 前言
  • 一、真彩色图像合成原理
  • 二、具体操作过程


前言

刚刚入门高光谱图像处理的朋友,也许会对这个问题有所困扰,虽然部分图像(含有波段信息)可以在 ENVI class 版本中直接通过“Load true color”选项一键导入真彩色图像,但是却不知道为什么自动选择的三个波段送入RGB通道后就是真彩色。此外,在一些网上共享的 .mat 格式数据中,往往不包含波段信息,因此在转换成img格式后,导入ENVI中却不知道如何选择波段以生成真彩色。下面笔者针对这个问题做出解答,希望对您有所帮助。

一、真彩色图像合成原理

在自然界中,人所能感受到的光的波段范围称之为 “可见光",而自然界中的色彩是三基色构成,所谓的三基色是指通过其他颜色的混合无法得到的 “基本色” 由于人的肉眼有感知RGB三种不同颜色的锥体细胞 ,因此色彩空间通常可以由RGB三种基本色来表达, 一般指光的三基色 R (Red)、G (Green)、B (Blue)。

想要合成真彩色图像,就要先知道RGB三个通道的固定波长范围,一般选择范围是 红色波段是620-780nm绿色波段是500-560nm蓝色是430-470nm。下面来说一下大概的可见光范围,以及RGB三个基色的大致波长范围:

  • 可见光 的大概范围 400-780 nm
  • R: 620-780 nm
  • G: 500-560 nm
  • B: 430-470 nm

上述光谱范围是大概范围,也是我常用选择RGB波段的范围,在合成真彩色图像时,需要从这些波长范围中选出某一个波段,然后分别丢入到RGB通道中,生成的图像都是真彩色的。

二、具体操作过程

高光谱数据获取代价较大,所以很多从事高光谱研究的科研人员都是采用网上共享数据集。而网上共享的 mat 格式数据,大部分都经过了一定的处理,去掉了相关波长信息的。所以无法直接合成真彩色图像,这时候就需要我们进行一些必要的计算,所以如果你想生成RGB真彩色图像,则需要知道该数据每个波段所对应的波长信息。所以对于这些数据,你首先要找到这个数据的出处,查看传感器的类型,一般相同传感器采集数据的波长都是固定的,所以你首先需要找到这几个数据的传感器获取数据的波长范围,然后知道数据去除的水汽吸收或者坏损波段(如果是原始数据最好了),根据波长范围,算出每个波段所在的波长区间。然后利用RGB合成原理,筛RGB波长范围内的三个波段并送入RGB通道,合成真彩色图像。

下面给你一个示例,具体如下:

例: 数据A传感器采集数据获取波长范围是400-1000nm,共采集100个波段,
那个100个波段的波长跨度为1000-400=600nm,
每个波长代表范围是600/100=6nm,
那么有,
波段1:400 nm
波段2:406 nm

波段100:1000 nm

根据上面给出的RGB范围,假如我们选RGB波长分别为 [630nm, 520nm, 460nm](当然也可以选其他的,原理是一样的),然后算出这些波长所在的波段大概范围:
R:(620-400)/6=36.6
G:(500-400)/6=16.6
B:(430-400)/6=5

那么我们选择 [37,16,5] 波段作为RGB 通道,进行合成,就可以显示出真彩色图像,其他的如 [40,18,10] 这些也是可以合成真彩色的。

注意:上述只是给出一个大概的计算过程,如果共享数据中去除了相应的坏损波段、水汽吸收波段时,则需要根据去除的波长范围,计算去掉的波段位置和数量,然后进行RGB彩色通道的筛选,过程稍微有点麻烦,但是原理是相同的。