一种基于FPGA的实时频域幸运成像方法及系统

文档序号:26638860发布日期:2021-09-15 00:01阅读:128来源:国知局
一种基于FPGA的实时频域幸运成像方法及系统
一种基于fpga的实时频域幸运成像方法及系统
技术领域
1.本发明涉及一种基于fpga的实时频域幸运成像方法及系统,属于图像处理技术领域。


背景技术:

2.大气湍流是大气中一种重要的运动形式,它的存在对光波、声波和电磁波在大气中的传播产生了一定的干扰作用,因此,大气湍流使望远镜的实际分辨率远低于望远镜的衍射极限分辨率,它是限制地基光学望远镜空间分辨率的一个主要因素。自适应光学是补偿由大气湍流或其他因素造成的成像过程中波前畸变的技术,这种技术能确保在观测中获得接近望远镜衍射极限的高分辨率图像,但是其缺点也是非常的明显,即复杂且昂贵。因此,可以使用幸运成像技术来代替昂贵的自适应光学系统,这是一种用于去除大气湍流效应的低成本图像恢复技术。虽然幸运成像技术可以弥补自适应光学系统复杂且昂贵的缺点,且空域幸运成像技术已有成功的实时化算法及其实现的系统,但是效果更佳的频域幸运成像技术仍然是一种事后图像处理方法。因此,为了能够达到自适应光学系统的效果,且能弥补其复杂且昂贵的缺点,频域幸运成像技术的实时化将刻不容缓。
3.基于cpu的频域幸运成像技术因其串行的处理方式,难以实现实时化,而并行处理的方式对于该技术的实时化将会更有效。并行处理是一种可以同时处理多个运算的处理方式,在图像处理领域,主要有gpu和fpga这两大器件。gpu最大的优点是擅长大量数据的浮点型运算和数据并行操作,而fpga既能数据并行,又能流水线并行,所以fpga的实时性比gpu的实时性更强,且fpga是一种半定制型电路,可以根据实际需求去编程,随时都能对硬件资源的调用进行变更,所以fpga的灵活度也更强。因此,使用fpga进行图像处理是图像处理领域的一个研究热点。


技术实现要素:

4.本发明要解决的技术问题是:本发明克服基于cpu的频域幸运成像技术不能实时处理、动态更新和显示的缺点,提供了一种基于fpga的实时频域幸运成像方法,并搭建了一个具有实时处理、动态更新和显示的频域幸运成像系统。
5.本发明技术方案是:一种基于fpga的实时频域幸运成像方法,其方法是采用降维处理的方式对图像数据进行二维傅里叶变换,使用频域数据实部的平方与虚部的平方之和代替幅值进行数据选择并使用分组处理的方式对数据的选择进行加速,从而实现在图像数据传输的同时,进行实时频域幸运成像处理以及结果图像的动态更新和显示。
6.进一步地,所述方法具体步骤如下:
7.步骤1:emccd相机采集数字图像,并将数字图像存储在工作站,通过rgmii接口将图像数据不断的发送给千兆网接收模块;
8.步骤2:千兆网接收模块将接收到的图像数据送入预处理模块,以每帧原始图像的最大值为中心,截取128
×
128像素大小的图像,然后用3
×
3的模板对截取后的图像进行高
斯滤波;
9.步骤3:将预处理后的数据送入实时频域幸运成像处理模块,分别进行二维傅里叶正变换,频域数据选择,频域数据叠加,二维傅里叶反变换;
10.步骤4:将经实时频域幸运成像处理后的结果图送入空域叠加模块进行空域叠加处理;
11.步骤5:将空域叠加处理后的图像数据分成两路:一路数据做平均处理,然后经千兆网发送模块回传到工作站;另一路传给阈值二值化模块,将感兴趣的目标区域突显出来,然后送入hdmi控制模块,控制hdmi显示模块驱动fpga片外接口电路,最后将高分辨率图像在hdmi显示器上显示;
12.步骤6:在天文图像连续传输的过程中,以100帧图像为一组,重复上述步骤2至步骤5的过程,利用以太网传输的时间间隙完成实时频域幸运成像处理及动态更新高分辨率图像。
13.一种基于fpga的实时频域幸运成像系统,包括emccd相机、工作站、千兆网接收模块、千兆网发送模块、预处理模块、实时频域幸运成像处理模块、空域叠加模块、阈值二值化模块以及hdmi控制和显示模块;所述emccd相机、工作站、千兆网接收模块、预处理模块、实时频域幸运成像处理模块、空域叠加模块、阈值二值化模块以及hdmi控制和显示模块依次连接,千兆网发送模块再分别与空域叠加模块、工作站连接。
14.进一步地,所述emccd相机用于采集数字图像。
15.所述工作站用于存储数字图像,并通过rgmii接口将图像数据发送给千兆网接收模块,同时千兆网发送模块通过rgmii接口将高分辨率图像回传工作站。
16.所述千兆网接收模块用于fpga开发板接收图像数据。
17.所述千兆网发送模块,用于将空域叠加模块做平均处理后的图像回传到工作站。
18.所述图像预处理模块,它由两部分组成:第一部分用于以每帧原始图像的最大值为中心,截取128
×
128像素大小的图像;另一部分是高斯滤波模块,用于对截取后的图像进行高斯滤波;然后用一个深度为16384,宽度为16位的fifo对滤波后的图像数据进行缓冲。
19.所述实时频域幸运成像处理模块包括二维傅里叶变换模块、频域数据选择模块、频域数据叠加模块;二维傅里叶变换模块,用于对图像数据进行空域到频域的变换、存储、频域到空域的变换;频域数据选择模块,用于在频域上选择需要的数据;频域数据叠加模块,用于将选出的频域数据进行叠加操作;
20.所述空域叠加模块用于将高分辨率结果图像做空域叠加处理,然后将图像数据分成两路:一路数据做平均处理,然后经千兆网发送模块回传到工作站;另一路传给阈值二值化模块;
21.所述阈值二值化模块,用于将感兴趣的目标区域突显出来,然后送入hdmi控制模块,控制hdmi显示模块驱动fpga片外接口电路,最后将高分辨率图像在hdmi显示器上显示;
22.所述千兆网发送模块,用于将空域叠加模块做平均处理后的图像回传到工作站;
23.所述hdmi控制及显示模块用于控制和显示经阈值二值化后的图像在hdmi显示器上显示。
24.进一步地,所述二维傅里叶变换模块,它有两部分组成,第一部分是二维傅里叶正变换部分,即用于将图像数据由空域变换至频域,另一部分是二维傅里叶反变换部分,即用
于将图像数据由频域变换至空域;
25.所述频域数据选择模块,采用频域数据实部的平方与虚部的平方之和代替幅值进行数据选择,用于降低算法在fpga上实现的复杂度,采用以100帧图像为一组的分组处理方法,用于对数据的选择进行加速,从而实现实时化。
26.所述二维傅里叶变换模块的工作流程如下:
27.步骤1:将预处理模块处理后的数据先进行fft行变换。
28.步骤2:将行变换的结果存入ram中进行列转置,每当ram存完1帧图像数据时,ram开始进行读操作。
29.步骤3:读出的数据做fft列变换,同时将列变换后的频域数据存入ddr3中,每存满100帧,开始做频域数据选择和叠加操作。
30.步骤4:将经选择和叠加后的数据进行ifft行变换。;
31.步骤5:将行反变换的结果存入ram中进行行列转置,每当ram存完一帧图像时,ram开始进行读操作。
32.步骤6:读出的数据做ifft列变换,同时将列变换后的频域数据送入空域叠加模块。
33.进一步地,所述频域数据选择模块的工作流程如下:
34.步骤1:从ddr3中读出图像的频域数据,读完第1帧图像的第1(n)行数据(即128个)经fifo存入到ram中后,下一次读出的就是第2帧图像相对应的行数据(即第n行数据),且以同样的方式存入ram中,一直到第10帧相对应的行数据存入ram。
35.步骤2:从第11帧开始,读出相对应的行数据先存入fifo中,并在该行的任意一个数据存入ram之前,要先将ram中前10行相对应点的数据的实部平方与虚部平方之和进行比较,找出最小的那个数值及地址。
36.步骤3:将这个要存入ram中的任意数据的实部平方与虚部平方之和跟前面找出的最小的数值进行比较,若大于前面找出的最小值,则将该数据存入前面找出最小值的地址,若小于前面找出的最小值,则该数据直接舍去。
37.步骤4:从第12帧到第100帧,一直重复步骤2、步骤3的这个过程,当第100帧相对应行的数据存完后,ram将该10行数据送到频域数据叠加模块进行叠加。
38.步骤5:将这100帧图像的第2行至第128行完全重复步骤1至步骤4的操作,即完成了100图像的频域数据选择。
39.步骤6:本系统以100帧图像为一组,完全重复步骤1至步骤5的操作,直至完成所有图像的频域数据选择。
40.所述频域叠加模块用于将经数据选择后的频域数据做叠加处理,此频域数据既有正数又有负数,而fpga在进行运算时无法识别符号位,因此,本数据叠加模块将分如下3种情况进行讨论:若两个叠加数据都是正数,此时的叠加操作就是直接将两个数据进行相加;若两个叠加数据一个是正数一个是负数,此时的叠加操作就是将这个正数减去这个负数所有二进制位取反再加1之和的差;若两个叠加数据都是负数,此时的叠加操作就是将这两个数据的所有二进制位进行取反加1,然后相加,再取反,最后再加1。
41.本发明的有益效果是:本发明克服了基于cpu的频域幸运成像技术不能实时的缺点。提供了一种基于fpga的频域实时幸运成像方法,并搭建了一个具有实时处理、动态更新
和显示的频域幸运成像系统。同时本发明的成像效果比现有的实时空域幸运成像系统更佳,且能对128
×
128像素大小的图像进行动态显示,比现有的实时空域幸运成像系统展示了更大的目标区域,这对观测间距较大的双星、多星或星团中的暗弱天体将会更有效。本发明设计合理,成像效果好,实时性好,也具有通用性,也可以为其它fpga算法的设计和实现作为参考。
附图说明
42.图1是本发明系统框图;
43.图2是本发明的二维傅里叶变换模块框图;
44.图3是本发明的频域数据选择模块框图;
45.图4是本发明的频域数据叠加模块框图;
46.图5是本发明的算法示意图。
具体实施方式
47.下面结合附图和具体实施例,对本发明作进一步说明。
48.实施例1:如图1所示,一种基于fpga的实时频域幸运成像方法,其方法是采用降维处理的方式对图像数据进行二维傅里叶变换,使用频域数据实部的平方与虚部的平方之和代替幅值进行数据选择并使用分组处理的方式对数据的选择进行加速,从而实现在图像数据传输的同时,进行实时频域幸运成像处理以及结果图像的动态更新和显示。
49.本系统的算法示意图如图5所示。
50.所述方法具体步骤如下:
51.步骤1:系统上电,emccd相机采集数字图像,并将数字图像存储在工作站,通过rgmii接口将图像数据不断的发送给千兆网接收模块。
52.步骤2:千兆网接收模块将接收到的图像数据送入预处理模块,以每帧原始图像的最大值为中心,截取128
×
128像素大小的图像,然后用3
×
3的模板对截取后的图像进行高斯滤波。
53.步骤3:将预处理后的数据送入实时频域幸运成像处理模块,分别进行二维傅里叶正变换,频域数据选择,频域数据叠加,二维傅里叶反变换。
54.步骤4:将经实时频域幸运成像处理后的结果图送入空域叠加模块进行空域叠加处理。
55.步骤5:将空域叠加处理后的图像数据分成两路:一路数据做平均处理,然后经千兆网发送模块回传到工作站;另一路传给阈值二值化模块,将感兴趣的目标区域突显出来,然后送入hdmi控制模块,控制hdmi显示模块驱动fpga片外接口电路,最后将高分辨率图像在hdmi显示器上显示。
56.步骤6:在天文图像连续传输的过程中,以100帧图像为一组,重复上述步骤2至步骤5的过程,利用以太网传输的时间间隙完成实时频域幸运成像处理及动态更新高分辨率图像。
57.一种基于fpga的实时频域幸运成像系统,包括emccd相机、工作站、千兆网接收模块、千兆网发送模块、预处理模块、实时频域幸运成像处理模块、空域叠加模块、阈值二值化
模块以及hdmi控制和显示模块;所述emccd相机、工作站、千兆网接收模块、预处理模块、实时频域幸运成像处理模块、空域叠加模块、阈值二值化模块以及hdmi控制和显示模块依次连接,千兆网发送模块再分别与空域叠加模块、工作站连接。
58.所述emccd相机用于采集数字图像。
59.所述工作站用于存储数字图像,并通过rgmii接口将图像数据发送给千兆网接收模块,同时千兆网发送模块通过rgmii接口将高分辨率图像回传工作站。
60.所述千兆网接收模块用于fpga开发板接收图像数据。
61.所述千兆网发送模块,用于将空域叠加模块做平均处理后的图像回传到工作站。
62.所述预处理模块,它由两部分组成:第一部分用于以每帧原始图像的最大值为中心,截取128
×
128像素大小的图像;另一部分是高斯滤波模块,用于对截取后的图像进行高斯滤波;然后用一个深度为16384,宽度为16位的fifo对滤波后的图像数据进行缓冲。
63.所述实时频域幸运成像处理模块包括二维傅里叶变换模块、频域数据选择模块、频域数据叠加模块;二维傅里叶变换模块,用于对图像数据进行空域到频域的变换、存储、频域到空域的变换;频域数据选择模块,用于在频域上选择需要的数据;频域数据叠加模块,用于将选出的频域数据进行叠加操作;
64.所述空域叠加模块用于将高分辨率结果图像做空域叠加处理,然后将图像数据分成两路:一路数据做平均处理,然后经千兆网发送模块回传到工作站;另一路传给阈值二值化模块;
65.所述阈值二值化模块,用于将感兴趣的目标区域突显出来,然后送入hdmi控制模块,控制hdmi显示模块驱动fpga片外接口电路,最后将高分辨率图像在hdmi显示器上显示;
66.所述千兆网发送模块,用于将空域叠加模块做平均处理后的图像回传到工作站;
67.所述hdmi控制及显示模块用于控制和显示经阈值二值化后的图像在hdmi显示器上显示。
68.所述二维傅里叶变换模块,它有两部分组成,第一部分是二维傅里叶正变换部分,即用于将图像数据由空域变换至频域,另一部分是二维傅里叶反变换部分,即用于将图像数据由频域变换至空域。
69.所述频域数据选择模块,采用频域数据实部的平方与虚部的平方之和代替幅值进行数据选择,用于降低算法在fpga上实现的复杂度,采用以100帧图像为一组的分组处理方法,用于对数据的选择进行加速,从而实现实时化。
70.如图2所示,所述二维傅里叶变换模块的工作流程如下:
71.步骤1:将预处理模块处理后的数据先进行fft行变换。
72.步骤2:将行变换的结果存入ram中进行列转置,每当ram存完1帧图像数据时,ram开始进行读操作。
73.步骤3:读出的数据做fft列变换,同时将列变换后的频域数据存入ddr3中,每存满100帧,开始做频域数据选择和叠加操作。
74.步骤4:将经选择和叠加后的数据进行ifft行变换。;
75.步骤5:将行反变换的结果存入ram中进行行列转置,每当ram存完一帧图像时,ram开始进行读操作。
76.步骤6:读出的数据做ifft列变换,同时将列变换后的频域数据送入空域叠加模
块。
77.如图3所示,所述频域数据选择模块的工作流程如下:
78.步骤1:从ddr3中读出图像的频域数据,读完第1帧图像的第1(n)行数据(即128个)经fifo存入到ram中后,下一次读出的就是第2帧图像相对应的行数据(即第n行数据),且以同样的方式存入ram中,一直到第10帧相对应的行数据存入ram。
79.步骤2:从第11帧开始,读出相对应的行数据先存入fifo中,并在该行的任意一个数据存入ram之前,要先将ram中前10行相对应点的数据的实部平方与虚部平方之和进行比较,找出最小的那个数值及地址。
80.步骤3:将这个要存入ram中的任意数据的实部平方与虚部平方之和跟前面找出的最小的数值进行比较,若大于前面找出的最小值,则将该数据存入前面找出最小值的地址,若小于前面找出的最小值,则该数据直接舍去。
81.步骤4:从第12帧到第100帧,一直重复步骤2、步骤3的这个过程,当第100帧相对应行的数据存完后,ram将该10行数据送到频域数据叠加模块进行叠加。
82.步骤5:将这100帧图像的第2行至第128行完全重复步骤1至步骤4的操作,即完成了100图像的频域数据选择。
83.步骤6:本系统以100帧图像为一组,完全重复步骤1至步骤5的操作,直至完成所有图像的频域数据选择。
84.如图4所示,所述频域叠加模块用于将经数据选择后的频域数据做叠加处理,此频域数据既有正数又有负数,而fpga在进行运算时无法识别符号位,因此,本数据叠加模块将分如下3种情况进行讨论:若两个叠加数据都是正数,此时的叠加操作就是直接将两个数据进行相加;若两个叠加数据一个是正数一个是负数,此时的叠加操作就是将这个正数减去这个负数所有二进制位取反再加1之和的差;若两个叠加数据都是负数,此时的叠加操作就是将这两个数据的所有二进制位进行取反加1,然后相加,再取反,最后再加1。
85.上面结合附图对本发明的具体实施例作了详细说明,但是本发明并不限于上述实施例,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1