发明名称 基于FPGA构建的分层次栅格转矢量处理方法
摘要 基于FPGA构建的分层次栅格转矢量处理方法,属于计算机硬件和计算机程序两个技术领域。含有数据预处理步骤;采用FPGA电路提取边界节点步骤;多边形搜索步骤;创建多边形矢量步骤;创建矢量文件步骤。对经过预处理的遥感影像进行矢量化,将遥感影像上具有相同属性内容的像元,转化为包含有:不同面积、不同周长、不同属性、不同形状来表示的矢量图形元素,并且在转化后的矢量图形元素间具有完整的空间拓扑关系;在转化后的矢量图形元素属性与遥感影像上所对应的像元,在空间位置和属性上具有完全相同的一一对应关系。
申请公布号 CN103871086B 申请公布日期 2017.02.08
申请号 CN201410054902.3 申请日期 2014.02.18
申请人 中国林业科学研究院资源信息研究所;中天共创科技(北京)有限公司 发明人 孟献策;鞠洪波;肖鹏;陈永富;张怀清;刘华
分类号 G06T9/00(2006.01)I 主分类号 G06T9/00(2006.01)I
代理机构 北京市商泰律师事务所 11255 代理人 毛燕生
主权项 基于FPGA构建的分层次栅格转矢量处理方法,其特征在于包括:1)、数据预处理步骤;2)、采用FPGA电路提取边界节点步骤;3)、多边形搜索步骤;4)、创建多边形矢量步骤;5)、创建矢量文件步骤;具体为;1)、数据预处理步骤;在获取遥感影像数据后,对栅格数据进行边界扩展处理,再将原栅格数据的四周添加一圈新的像元数据;对于所要添加的像元数据,要求是该数据的像元值或属性内容,要与原栅格数据中任何一个的像元值或属性内容都不相同;根据像元值或属性内容的分类,设置栅格转矢量的条件;是将栅格数据全部转换为矢量数据;还是只转换某些指定像元值或属性内容中某些类型的像元,即设置栅格转矢量所依据的转换条件;在数据预处理结束后,启动节点提取步骤;在节点提取步骤中;能够根据转换条件,将扩展后的栅格数据按照所设置的栅格转矢量条件,传送到栅格转矢量处理器中,处理器按分层次转换条件进行节点提取,节点提取后传回节点数据,为多边形搜索提供边界节点数据;其具体转换数量由转换条件决定;只对栅格数据中的某些指定的像元属性值或内容,进行栅格转矢量计算;而现有栅格转矢量算法中,只能一次将栅格数据全部转化为矢量数据的强制性限制;2)、采用FPGA电路提取边界节点步骤;在采用FPGA电路构造的节点提取电路中,主要包含有参数寄存器初始化操作;FPGA电路构造的节点提取电路由栅格数据存储地址计算单元、3*3像元矩阵节点计算单元、节点保存控制单元和循环控制操作单元硬件功能电路组成,这些硬件功能电路在系统时序的控制下,逐步进行操作,直到完成所有栅格数据的节点提取操作;参数寄存器初始化操作:在参数寄存器初始化操作中,包含栅格数据参数初始化,节点计算参数初始化两个部分;栅格数据参数初始化主要用于记录栅格数据的基本信息,基本信息包括扩展后的栅格数据存储在存储器中的开始地址、栅格数据的行数和列数、一个像元所使用的字节数量和栅格数据需要转换为矢量数据的转换条件及转换数量;节点计算参数初始化用于记录节点计算中需要使用参数信息,及在计算中需要保存的参数和计算结果信息,并且在节点计算中还需要使用栅格数据参数中数据;参数寄存器初始化操作完成后,进入节点提取的循环操作,其操作步骤如下:栅格数据存储地址计算单元:栅格数据存储地址计算单元,是根据参数寄存器的初始化内容和当前计算像元的位置信息,计算出进行3*3像元矩阵计算时,需要参与计算的栅格数据的存储地址,供3*3像元矩阵节点计算单元读取栅格数据进行计算;节点计算单元:在3*3像元矩阵节点计算单元中,根据地址计算单元提供的栅格数据的地址,读取栅格数据按照分层次边界拓扑搜索模型要求进行计算,生成节点编码;节点保存控制控制单元:节点保存控制单元包含有:节点保存地址计算电路、节点有效性检查电路和条件转换分层控制电路、节点读写控制电路四部分组成;节点保存地址计算电路,根据节点计算参数寄存器的初始化内容和节点数量计算出节点数据需要保存在内存中地址,供保存节点时使用;节点有效性检查电路和条件转换分层控制电路,对节点计算单元所计算出的节点编码进行判断,该节点编码是否有效及该像元是否符合分层条件;节点读写控制电路,对符合分层条件的有效节点,根据节点保存地址,将节点编码和像元的行列位置信息保存到存储器中,供多边形搜索时使用;循环控制操作单元包含有行循环控制操作单元和列循环控制操作单元两部分;负责完成对栅格数据的全遍历循环控制操作,直到完成栅格数据在具体某个转换条件层次的边界拓扑搜索模型的计算工作,生成全部节点数据,供多边形搜索时使用;如果节点提取的循环操作没有结束则继续进行节点提取的操作;3)、多边形搜索步骤;当节点提取电路运行结束时,符合条件的节点数据已经全部提取出来;启动多边形搜索流程进行多边形搜索计算,此流程是一个并行计算的操作流程,其所需启动的流程的个数,将根据所设置的栅格转矢量条件中的转换类型数量来确定;或者按照行或列进行分组进行并行计算;在流程中需要对每个多边形搜索队列的接受和反馈信息进行处理,控制和调度多边形搜索对流的运行状况,保证并行计算的正确运行;首先是创建一个多边形数据结构;然后从边界节点数据中开始读取节点数据,并以读取节点数据的节点为开始节点,创建一个新的多边形搜索队列;创建完多边形搜索队列后,继续读取边界节点数据,按照搜索条件开始进行多边形搜索计算,满足此多边形搜索条件的节点添加到此多边形队列中,直到新节点的指向为开始节点时,此多边形队列已经形成一个封闭的多边形,即完成了一个多边形的搜索计算流程,多边形封闭后,将这个多边形作为多边形数据结构中的一条多边形记录进行保存;同时需要删除该多边形搜索队列;如果读取的边界节点数据,不是现有并行计算多边形队列中的连接节点时,则需要创建一个新的多边形搜索队列,重复多边形搜索计算直到将边界节点数据中的所有节点,全部变成形成封闭多边形,完成多边形搜索计算;4)、创建多边形矢量步骤;在创建多边形矢量数据流程中,将根据多边形搜索计算中获得的有关该多边形的顺序号、面积、周长、开始节点位置、多边形类型、空洞多边形数量、多边形范围及节点数据集信息记录到多边形数据结构表中,为合并多边形矢量数据进行数据准备,同时启动创建矢量数据文件操作流程;在多边形搜索计算结束后,启动创建多边形矢量数据流程;创建多边形矢量数据的目的是,为多边形数据结构中的每个岛多边形,找到一个能够包容他的最小独立多边形,找到这个独立多边形后,将岛多边形的坐标点链表中的坐标数据,添加到包容他的独立多边形的坐标点链表的末端,修改独立多边形的面积为:S=S‑Sd,S为独立多边形面积,Sd为岛多边形面积;并给独立多边形的岛多边形数量的属性值+1,它的初始值为0;重复创建多边形矢量数据的操作直到为所有岛多边形找到包容他的独立多边形为止;5)、创建矢量文件步骤;在创建矢量文件流程中,首先根据栅格数据所使用的坐标系信息,创建矢量文件和坐标系,然后根据多边形矢量数据中独立多边形的数量,建立循环搜索过程,每次读取一个多边形矢量数据,并按照多边形矢量数据的结构写入到矢量文件中,当将多边形矢量数据中的所有独立多边形矢量数据全部写入到矢量文件中时,完成创建矢量文件流程,结束栅格转矢量流程,结束对一个栅格文件的转换工作;还含有栅格转矢量处理步骤;分层次边界拓扑搜索模型:栅格数据中的一个像元就是对应于地表上的一个二维矩形的区域,该矩形的四条边,就是此像元与其他相邻像元的分界线;对于一个由3*3像元组成的像元矩阵来讲,处于矩阵中心的像元,称之为中心点像元,在中心点像元周围还分布有八个像元;将所有这些相邻像元都当作一个相邻数据层;依据分层次处理的技术路线,通过将独立数据层与相邻数据层间的分界线都提取出来,连接成一个个封闭多边形,即分层次栅格转矢量;采用分层次边界拓扑搜索模型进行边界节点计算时,需要将栅格数据中的每个像元,都作为中心点像元,同时读取中心点像元和四个相邻像元进行比较计算,确认每个中心点像元是否为边界节点,对栅格数据进行全遍历的一个搜索计算过程。
地址 100091 北京市海淀区香山路东小府1号院