一种基于FPGA加速的夏克–哈特曼快速波前处理系统及方法
本发明涉及波前传感与硬件加速,特别涉及一种基于fpga加速的夏克–哈特曼快速波前处理系统及方法。
背景技术:
1、夏克–哈特曼波前传感器是一类基于局部波前斜率测量实现波前检测的光学传感装置,广泛应用于自适应光学、激光波前检测、精密光学测量和光学系统像差检测等领域。该类传感器通常利用微透镜阵列对入射波前进行分区采样,并在探测器靶面形成与各子孔径对应的光斑阵列图像。通过计算各子孔径光斑相对于参考光斑质心位置的偏移量,可以获得对应子孔径处的局部波前斜率,再根据所述局部波前斜率恢复波前相位分布。因此,夏克–哈特曼波前处理通常包括光斑位置计算、波前斜率换算和波前相位恢复等环节。随着子孔径数量、采样分辨率和处理帧率要求不断提高,传统软件处理方式在上述过程中容易面临计算量增加、数据搬移频繁和处理时间上升等问题。在先技术1(lambert a., polo m.c., “real-time algorithms implemented in hardware for centroiding on a shack-hartmann sensor”, imaging and applied optics 2015, osa technical digest,paper aow3f.2)比较了传统质心算法与基于第一傅里叶系数的光斑定位方法,并提出面向专用硬件的流式实现形式。该类光斑质心位置计算方法能够利用目标频点相位表征光斑位置变化,适合与固定基频goertzel递推结合实现快速处理,但若其仅作为独立前端步骤实现,后续波前斜率换算和相位恢复仍需在软件或其他处理单元中完成,仍可能产生中间数据传递和调度开销。
2、在波前重构方面,在先技术2(zhariy m., neubauer a., rosensteiner m.,ramlau r., “cumulative wavefront reconstructor for the shack-hartmannsensor”, inverse problems and imaging, 2011, 5(4):893–913)提出了cumulativereconstructor(cure)快速波前重构方法,该方法针对夏克–哈特曼波前传感器测得的斜率数据,通过直接累积方式实现波前相位恢复,具有计算过程直接、速度较快等特点。与cure类路径累积重构方法不同,southwell迭代重构方法是一类常用的区域波前重构方法,其基本思想是根据相邻相位节点与局部波前斜率之间的离散关系,对相位网格进行相位迭代更新。southwell迭代重构方法具有较好的重构稳定性,但从零初值或简单初值出发时通常需要较多迭代次数才能获得稳定结果;cure类方法虽然速度较快,但其结果容易受到传播路径选择和误差传播方向的影响,单一路径相位累积可能导致局部误差扩散。因此,如何在获得较好初始相位的基础上减少后续迭代次数,是提高波前处理速度的重要问题。
3、现有光斑质心位置计算方法和快速波前重构方法分别从前端光斑定位和后端相位恢复角度提高了处理效率,但二者通常作为相对独立的算法环节存在。对于由投影数据输入到波前相位输出的完整波前处理流程,若仍采用分段式软件处理或不同处理单元分工实现,容易引入外部存储访问、中间数据搬移和软件调度等待等问题。同时,若波前重构直接从零初值进入迭代过程,则迭代次数较多;若仅采用单一路径累积生成相位结果,又容易受到路径误差传播影响。因此,有必要提出一种基于fpga(field-programmable gatearray,现场可编程门阵列)加速的夏克–哈特曼快速波前处理系统及方法,将光斑质心位置计算、波前斜率换算、中心多路径初始相位生成、相位融合和固定次数相位迭代更新统一部署在fpga中,并通过片上斜率缓存和片上相位缓存实现前后处理模块的连续连接,从而缩短波前处理时间,同时保证波前重构精度。
技术实现思路
1、本发明公开了一种基于fpga加速的夏克–哈特曼快速波前处理系统及方法,用于缩短波前处理时间。该方法将夏克–哈特曼波前传感器采集得到的光斑阵列图像转换为一维投影序列,并在fpga中完成质心计算、光斑偏移量计算、波前斜率换算、相邻相位差约束构造、中心多路径初始相位生成、初始相位融合、固定次数相位迭代更新和波前相位输出,形成由投影数据输入到波前相位输出的连续fpga处理流程。本发明还公开了实现该方法的硬件系统。
2、一方面,本发明公开了一种基于fpga加速的夏克–哈特曼快速波前处理方法,包括以下步骤:
3、步骤1. 生成并输入投影数据和参考光斑质心位置数据。获取夏克–哈特曼波前传感器采集得到的光斑阵列图像,根据子孔径排列关系将所述光斑阵列图像划分为多个子孔径光斑区域,对每个子孔径光斑区域分别沿两个正交方向进行灰度累加投影,生成横向投影序列和纵向投影序列,并将所述横向投影序列、纵向投影序列以及预先标定得到的参考光斑质心位置数据输入fpga中。所述横向投影序列由对应子孔径光斑区域沿纵向灰度累加得到,所述纵向投影序列由对应子孔径光斑区域沿横向灰度累加得到。所述参考光斑质心位置数据为参考平面波入射条件下预先标定得到的各子孔径参考光斑质心坐标数据,并按照与所述横向投影序列和纵向投影序列相同的子孔径编号顺序输入fpga中。
4、步骤2. 配置波前处理参数。通过控制配置接口向fpga中写入波前处理参数。所述波前处理参数包括子孔径数量、投影序列长度、固定基频参数、子孔径间距、像元尺寸、微透镜焦距、工作波长、迭代次数和相位输出单位。
5、步骤3. 执行固定基频goertzel递推。fpga按照子孔径编号读取当前子孔径对应的横向投影序列和纵向投影序列,并对所述横向投影序列和纵向投影序列分别执行固定基频goertzel递推,获得对应方向上的目标频点复响应。所述固定基频goertzel递推用于获所述横向投影序列和所述纵向投影序列在固定基频处的目标频点复响应,而不对所述横向投影序列和所述纵向投影序列进行完整频谱求解。所述目标频点复响应满足:
6、
7、式中,为投影序列中的采样点序号,为所述横向投影序列或所述纵向投影序列中第个采样点的灰度值,为投影序列长度,为固定基频序号,为固定基频处的目标频点复响应。
8、步骤4. 计算光斑偏移量并换算波前斜率。根据当前子孔径对应的目标频点复响应的相位与参考光斑质心位置数据对应的参考相位之间的相位差获得光斑偏移量,并根据所述光斑偏移量换算波前斜率,其关系为:
9、
10、式中,为第个子孔径光斑在对应方向上的光斑偏移量,其单位为像素或采样点数,为测量光斑投影序列在固定基频处的相位,为参考光斑质心位置数据对应的参考相位,为固定基频角频率,表示相位折返运算,为像元尺寸,为微透镜焦距,为对应方向上的波前斜率。上述关系分别作用于两个正交方向,以获得横向波前斜率和纵向波前斜率。
11、步骤5. 缓存波前斜率。将所述横向波前斜率和纵向波前斜率写入fpga片上斜率缓存。所述片上斜率缓存按照子孔径排列关系保存斜率数据,并向所述波前重构模块提供斜率输入。
12、步骤6. 构造相邻相位差约束。波前重构模块从片上斜率缓存中读取横向波前斜率和纵向波前斜率,并根据所述横向波前斜率、纵向波前斜率、子孔径间距和工作波长,构造相位网格中相邻相位节点之间的相邻相位差约束,其关系为:
13、
14、式中,表示横向方向或纵向方向,为相位网格位置处沿方向的相邻相位节点之间的相位差增量,为子孔径间距,为工作波长,为相位网格位置处沿方向的波前斜率。
15、步骤7. 中心多路径生成初始相位。根据所述相邻相位差约束,沿中心预设路径进行相位累积,分别生成多组初始相位。在一种实施方式中,所述中心预设路径包括中心列优先路径和中心行优先路径。所述中心列优先路径为以相位网格的中心列为参考,先沿中心列方向进行相位累积,再由中心列向左右两侧逐列扩展。所述中心行优先路径为以相位网格的中心行为参考,先沿中心行方向进行相位累积,再由中心行向上下两侧逐行扩展。
16、步骤8. 融合初始相位并写入相位缓存。对所述多组初始相位进行融合,得到统一初始相位,并将所述统一初始相位写入fpga片上相位缓存。在一种实施方式中,将中心列优先路径得到的第一初始相位和中心行优先路径得到的第二初始相位进行平均融合,得到统一初始相位,其关系为:
17、
18、式中,为由中心列优先路径得到的第一初始相位,为由中心行优先路径得到的第二初始相位,为融合后的统一初始相位。所述统一初始相位作为后续southwell迭代重构方法的迭代初值。
19、步骤9. 执行固定次数相位迭代更新。以所述统一初始相位为迭代初值,根据相邻相位节点关系和所述相邻相位差约束执行southwell迭代重构方法,对相位网格进行固定次数相位迭代更新,得到重构后的波前相位,其关系为:
20、
21、式中,为southwell迭代重构方法的初始相位,为所述统一初始相位,为迭代次数,为经过次相位迭代更新后的重构相位,为输出波前相位。当前相位和更新相位分别存储于两组fpga片上相位缓存中,并通过交替读写方式实现固定次数相位迭代更新。所述迭代次数为预设次数,并由控制配置接口输入。
22、步骤10. 输出波前相位。结果输出模块对所述重构后的波前相位进行去均值处理和单位换算,得到最终波前相位,并通过输出接口输出。
23、本发明中,处理时间是指从流式输入接口开始读取横向投影序列、纵向投影序列和参考光斑质心位置数据,到结果输出模块输出波前相位为止所经历的时间。通过将质心计算模块、片上斜率缓存模块、波前重构模块和片上相位缓存模块统一设置在fpga中,本发明形成由投影数据输入到波前相位输出的完整硬件处理流程,减少中间结果在外部软件环境和硬件模块之间的反复传递,缩短波前处理时间。
24、另一方面,本发明公开了一种基于fpga加速的夏克–哈特曼快速波前处理系统。
25、所述系统包括流式输入接口、控制配置接口、质心计算模块、片上斜率缓存模块、波前重构模块、片上相位缓存模块和结果输出模块。
26、所述流式输入接口用于接收由光斑阵列图像生成的横向投影序列、纵向投影序列以及参考光斑质心位置数据。
27、所述控制配置接口用于输入子孔径数量、投影序列长度、固定基频参数、子孔径间距、像元尺寸、微透镜焦距、工作波长、迭代次数和相位输出单位。
28、所述质心计算模块用于对横向投影序列和纵向投影序列执行固定基频goertzel递推,获得目标频点复响应,并根据所述目标频点复响应和参考光斑质心位置数据计算光斑偏移量,再将所述光斑偏移量换算为横向波前斜率和纵向波前斜率。
29、所述片上斜率缓存模块用于保存横向波前斜率和纵向波前斜率,并向所述波前重构模块提供斜率输入。
30、所述波前重构模块用于根据所述横向波前斜率和纵向波前斜率构造相邻相位差约束,沿中心预设路径生成多组初始相位,将所述多组初始相位融合为统一初始相位,并以所述统一初始相位作为southwell迭代重构方法的迭代初值进行固定次数相位迭代更新,得到重构后的波前相位。
31、所述片上相位缓存模块用于保存统一初始相位以及相位迭代更新过程中的中间相位数据。
32、所述结果输出模块用于对重构后的波前相位进行去均值处理和单位换算,并输出最终波前相位。
33、与现有技术相比,本发明至少具有以下有益效果:
34、(1)本发明采用一维投影序列表征子孔径光斑,并通过固定基频goertzel递推获得目标频点复响应。该方式不需要对一维投影序列进行完整频谱求解,可减少冗余频点计算,降低质心计算过程中的计算量和硬件实现复杂度。
35、(2)本发明将光斑偏移量换算得到的横向波前斜率和纵向波前斜率写入fpga片上斜率缓存,并由波前重构模块直接读取。该方式减少了斜率数据在外部存储器、通用处理器和独立处理单元之间的传递过程,有利于形成连续的fpga处理流程。
36、(3)本发明采用中心多路径初始相位生成与融合方式获得统一初始相位。相较于单一路径相位累积方式,该方式能够减弱路径选择和误差传播方向对初始相位的影响,为后续固定次数相位迭代更新提供较好的迭代初值。
37、(4)本发明以统一初始相位作为southwell迭代重构方法的迭代初值,并进行固定次数相位迭代更新。该方式避免从零初值开始进行长迭代计算,可减少不必要的迭代过程,在保持波前相位恢复一致性的同时缩短波前处理时间。
38、(5)本发明通过片上斜率缓存和片上相位缓存连接质心计算模块和波前重构模块,使质心计算、波前斜率换算、中心多路径初始相位生成、初始相位融合和固定次数相位迭代更新能够在同一fpga中连续完成,减少中间数据搬移和软件调度开销,适用于快速波前检测与在线波前处理系统。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com