掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明属于图像处理技术领域,更进一步涉及高光谱图像处理技术领域中的一种基于现场可编程门阵列FPGA(Field Programmable Gate Array)的高光谱端元提取系统及其方法。本发明可用于卫星遥感应用条件下,从高光谱图像中实时提取端元,所提取的端元作为高光谱图像中一种具有典型光谱特征得地物像元,为后续图谱定量分析提供依据。

背景技术

高光谱端元提取技术旨在从高光谱图像中查找具有典型地物光谱特征的一组像元,这组像元就是需要提取的端元,通过这组端元的特定混合方式可表示图像中任意光谱像元。由于端元提取的过程可以不依赖于背景及目标先验知识,因而更适合高光谱图像的星上实时处理场景,包括农业监测、军事对抗等领域。目前大多数高光谱端元提取系统及其方法尽管提高了探测精度,但是,这些端元提取方法往往采用大规模复杂的矩阵计算,比如矩阵的协方差、矩阵的逆、特征值求解等,此类高计算复杂度操作降低了高光谱图像中端元的检测速度,不利于星载场景下高光谱端元提取系统的设计。

北京环境特性研究所在其申请的专利文献“一种基于空-谱结合的高光谱端元提取预处理方法”(申请日期:2017.11.23,申请号:201711178807.4,申请公布号:CN108021874 A)中公开了一种基于空-谱结合的高光谱端元提取预处理方法。该方法的实现步骤是:(1)对原始高光谱图像进行多维高斯滤波;(2)对新高光谱图像进行空间均匀性计算;(3)用无监督聚类方法处理原始高光谱图像;(4)将每个集群按照像素的均匀性指数确定像素的子集;(5)对其子集中的像素进行端元提取并得到一组端元丰度图;(6)根据端元丰度图完成对图像的识别和分类。该方法存在的不足之处是,引入过多预处理操作使得计算量大大增加,其基于FPGA的实现需要消耗大量的时间,因此无法实现星载场景下从高光谱图像中实时地提取端元。

李聪在其发表的论文“高光谱图像实时目标提取关键技术研究”(中科院大学中国科学院遥感与数字地球研究所,博士论文,2018)中提出一种实时最大单形体体积端元提取算法并设计了基于FPGA的硬件架构。该方法利用Woodbury公式对矩阵行列式进行迭代求解,减小了算法的计算量,通过借助FPGA平台实现了相较于软件平台不错的加速比。然而,这种技术所采用的Woodbury递归公式会引入高阶行列式计算,步骤较繁琐,需要耗费较多端元提取系统的资源。

发明内容:

本发明的目的在于针对上述现有技术的不足,提出一种基于FPGA的低复杂度、可递归提取高光谱端元的系统及方法,用于解决无法实现星载场景下从高光谱图像中实时地提取端元的问题,以及计算步骤繁琐,需要耗费较多端元提取系统的资源的问题。

本发明实现目的的思路是,针对传统高光谱图像端元提取方法中矩阵行列式计算需要进行数据降维且计算繁琐的问题,本发明采用最大投影公式提取每个端元,将传统端元提取中复杂的矩阵行列式计算转换为一种低复杂度的矩阵乘加运算,降低了端元提取过程中的计算量。针对端元提取中直接计算正交投影矩阵运算量渐增的问题,本发明采用了一种递归的正交投影矩阵更新公式,使得本发明以一种固定规模运算量更新正交投影矩阵。针对现有实现平台中高光谱端元提取时需要进行数据转译造成处理效率较低且稳定性较差的缺陷的问题,本发明设计了该端元提取算法的FPGA硬件系统,借助硬件平台的加速效果,使得端元提取系统可满足星载场景下实时化需求。针对不同场景下多种空间尺寸和光谱维度的高光谱图像,本发明设计的系统通过灵活调整初始参数,使得本发明对今后分辨率增加的高光谱图像仍符合提取端元的时效性需求。

本发明的基于FPGA的端元提取系统,在FPGA平台上设置包括数据存储及地址产生模块、参数初始化模块、初始端元查找模块、初始投影矩阵计算模块、端元查找模块、投影矩阵更新模块、端元矩阵更新模块和状态转移控制模块;其中,

所述数据存储及地址产生模块,数据存储及地址产生模块采用三层嵌套计数器,产生高光谱图像的FPGA内部存储地址,并将外部输入的高光谱图像按照地址顺序读入到FPGA内的块随机存储器BRAM(Block Ramdom Access Memory)中缓存;

所述参数初始化模块,用于对FPGA各模块进行复位,包括状态标志信号清零和参数寄存器赋初值;

所述初始端元查找模块,利用最大内积公式,计算高光谱图像中每个像元的内积,选择具有最大内积结果的像元,将该像元作为高光谱图像的初始端元;

所述初始投影矩阵计算模块,利用正交子空间公式,计算初始端元的正交投影矩阵;

所述端元查找模块,利用最大投影公式,计算高光谱图像中每个像元投影到正交投影矩阵所在平面上的投影向量的模值,选择其中最大模值的像元,将该像元作为高光谱图像的当前提取端元;

所述投影矩阵更新模块,利用递归公式,更新正交投影矩阵;

所述端元矩阵更新模块,利用当前提取端元更新端元矩阵;

所述状态转移控制模块,用于判断高光谱图像中所有端元是否提取完,如果端元提取完毕,则输出高光谱图像中提取的所有端元,否则,继续执行端元查找模块和投影矩阵更新模块。

本发明的基于FPGA的方法实现步骤包括如下:

步骤1,读入高光谱图像:

数据存储及地址产生模块采用三层嵌套计数器,产生高光谱图像的FPGA内部存储地址,并将外部输入的高光谱图像按照地址顺序读入到FPGA内的块随机存储器BRAM中缓存;

步骤2,提取高光谱图像的初始端元:

初始端元查找模块利用最大内积公式,计算高光谱图像中每个像元的内积,选择具有最大内积结果的像元,将该像元作为高光谱图像的初始端元;

步骤3,计算初始端元的正交投影矩阵:

初始投影矩阵计算模块利用正交子空间公式,计算初始端元的正交投影矩阵;

步骤4,提取当前端元:

端元查找模块利用最大投影公式,计算高光谱图像中每个像元投影到正交投影矩阵所在平面上的投影向量的模值,选择其中最大模值的像元,将该像元作为高光谱图像的当前提取端元;

步骤5,更新正交投影矩阵:

投影矩阵更新模块利用递归公式,更新正交投影矩阵;

步骤6,更新端元矩阵:

端元矩阵更新模块利用当前提取端元更新端元矩阵;

步骤7,判断高光谱图像中所有端元是否提取完毕:

状态转移控制模块判断高光谱图像中所有端元是否提取完毕,如果端元提取完毕,则执行步骤8,否则,执行步骤4;

步骤8,输出高光谱图像中所有端元。

本发明与现有技术相比有以下优点:

第一,由于本发明的端元提取方法中采用最大投影公式提取每个端元,将现有方法中采用矩阵行列式计算方式提取高光谱端元的过程,转换为求解最大像元投影方式提取高光谱端元,克服了现有技术矩阵行列式计算造成的计算复杂且耗时的问题,使得本发明大大减少了端元提取的计算量。

第二,由于本发明的端元提取方法中采用一种递归的正交投影矩阵更新公式,克服了直接计算正交投影矩阵运算量不断增长的问题,使得本发明以一种固定规模运算量更新正交投影矩阵,提高了端元提取效率。

第三,本发明的基于FPGA的实现系统,克服了现有端元提取实现平台中需要进行数据转译造成处理效率较低且稳定性较差的缺陷问题,借助FPGA低功耗、高稳定性优势,使得本发明可实现星载场景下高光谱端元的实时提取。

附图说明

图1为本发明的系统结构框图;

图2为本发明系统状态转移示意图;

图3为本发明实现方法流程图。

具体实施方式

下面将结合附图对本发明做进一步的描述。

参照图1,对本发明基于FPGA的高光谱端元提取系统做进一步描述。

本发明的基于FPGA的端元提取系统,在FPGA平台上设置包括数据存储及地址产生模块、参数初始化模块、初始端元查找模块、初始投影矩阵计算模块、端元查找模块、投影矩阵更新模块、端元矩阵更新模块和状态转移控制模块;其中,

所述数据存储及地址产生模块,数据存储及地址产生模块采用三层嵌套计数器,产生高光谱图像的FPGA内部存储地址,并将外部输入的高光谱图像按照地址顺序读入到FPGA内的块随机存储器BRAM中缓存;

所述参数初始化模块,用于对FPGA各模块进行复位,包括状态标志信号清零和参数寄存器赋初值;

所述初始端元查找模块,利用最大内积公式,计算高光谱图像中每个像元的内积,选择具有最大内积结果的像元,将该像元作为高光谱图像的初始端元;

所述初始投影矩阵计算模块,用于计算初始端元的正交投影矩阵,随着初始端元查找模块运行完毕,该模块启动,利用初始端元计算正交投影矩阵;

所述端元查找模块,利用最大投影公式,计算高光谱图像中每个像元投影到正交投影矩阵所在平面上的投影向量的模值,选择其中最大模值的像元,将该像元作为高光谱图像的当前提取端元;

所述投影矩阵更新模块,利用递归公式,更新正交投影矩阵;

所述端元矩阵更新模块,利用当前提取端元更新端元矩阵;

所述状态转移控制模块,用于判断高光谱图像中所有端元是否提取完,如果端元提取完毕,则输出高光谱图像中提取的所有端元,否则,继续执行端元查找模块和投影矩阵更新模块。

参照图2,对本发明的基于FPGA端元提取系统的状态转移过程做进一步的描述。

Idle:空闲状态,当系统复位或算法执行完毕,系统会处于该状态并等待下一次光谱数据得到来,当接收到高光谱图像,系统工作状态切换到S0;

S0:初始化状态,此状态下,各电路模块回到默认状态、系统参数存储器先复位清零,然后进行初始端元提取并计算初始端元的正交投影矩阵,当计算完成,系统进入下一状态S1;

S1:端元提取状态,进入该状态,利用正交投影矩阵对每个像元进行投影操作,并计算投影像元的模值,通过查找最大模值来提取当前端元,当端元提取完成,系统进入下一状态S2;

S2:投影矩阵更新状态,进入该状态,利用递归公式更新正交投影矩阵,当投影矩阵更新完毕,系统进入下一状态S3;

S3:循环判断状态,进入该状态,通过端元计数器判断当前已提取端元数是否等于目标端元数,当前已提取端元数等于目标端元数时表示端元提取完毕,系统将进入状态Idle并输出结果,当已提取端元数小于目标端元数时,当前已提取端元计数加一,同时系统进入状态S1。

参照图3和实施例,对本发明的基于FPGA的高光谱端元提取方法做进一步的描述。

步骤1,将高光谱图像读入到FPGA处理系统中。

本发明的实施例中数据存储及地址产生模块,采用三层嵌套计数器产生高光谱图像的FPGA内部存储地址,并将外部输入的高光谱图像按照地址顺序读入到FPGA内的块随机存储器BRAM(Block Ramdom Access Memory)中缓存。

所述三层嵌套计数器分别为波段计数器、列计数器和行计数器,当波段计数器计满一次时,列计数器加一计数。以此类推,当列计数器计满一次时,行计数器加一计数。通过三个计数器嵌套计数方式,得到图像片内BRAM存储地址。

所述BRAM是FPGA内部集成的专用随机存储块资源,通过使用该储块资源可以实现对图像的即时读取。

本发明的实施例中,读入一张Hydice的尺寸为64*64*169的高光谱图像。

步骤2,提取高光谱图像的初始端元。

利用下式,计算高光谱图像中每个像元的内积,选择具有最大内积结果的像元作为高光谱图像的初始端元:

其中,m

步骤3,利用下式,计算初始端元的正交投影矩阵:

其中,P

所述正交投影矩阵在几何空间中表示一个正交平面,该平面与当前提取端元构成的超平面垂直正交,高光谱图像中像元在该正交平面上投影模值越大,表示该像元与当前提取端元的差异性越强。

步骤4,通过正交投影矩阵确定当前提取端元。

利用下式,计算高光谱图像中每个像元投影到正交投影矩阵所在的平面上投影向量的模值,选择其中最大模值的像元作为当前提取端元:

m

其中,m

步骤5,利用下述递归公式,更新正交投影矩阵:

其中,P

步骤6,利用当前提取端元更新端元矩阵。

端元矩阵更新指的是,在当前端元矩阵的最右侧扩充一列,将当前提取端元向量中的元素依次填充到扩充后端元矩阵的最右侧一列中,当前端元矩阵的行的总数不变。

步骤7,判断高光谱图像中所有端元是否提取完,若是,则执行步骤8,否则,执行步骤4。

本发明的实施例中,预设高光谱图像中端元数目等于20,当已经提取的端元数小于预设端元数目时,当前提取端元序号加一并跳转到步骤4,进行下一次端元提取循环。当已经提取的端元数等于预设端元数目20时,执行步骤8。

步骤8,输出高光谱图像中提取的所有端元。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

本发明未详细说明部分属于本领域技术人员公知常识。

技术分类

06120114703433