A Method of Scanned Image Denoising Based on Morphological Pyramid
-
摘要: 为了消除或衰减扫描图像的噪声,同时尽可能保留图像细节,提出了一种数学形态学金字塔扫描图像降噪方法.使用形态金字塔算法将扫描图像逐级分解,在不同分辨率空间中对细节信息集进行滤波处理,用处理后的细节信息重图像.仿真结果表明该算法是有效的,同传统的中值滤波相比,能够更好地消除扫描噪声、保留边缘.
-
0. 引言
自适应光学的基本思想是在光学系统中引入一个表面形状可变的光学元件(波前校正器)和一个波前误差传感器,用波前传感器测量出不断变化的波前误差,根据测量结果由控制系统控制波前校正器对波前误差进行校正。如果这一过程足够快,就可以用不断变化的波前校正量来校正不断变化的动态波前误差。
夏克-哈特曼波前传感器是目前自适应光学系统中应用最为广泛的实时波前探测器。自适应光学系统将夏克-哈特曼波前传感器所测到的波前畸变信息转化成校正器的控制信号,以实现自适应光学系统的闭环控制。用于补偿大气湍流引入像差的天文自适应光学系统的空间分辨力和时间分辨力应分别与大气相干长度和时间常数相匹配。优秀观测站址的大气相干长度r0和时间常数分别约十几厘米和几毫秒,随着望远镜口径的增大,要求自适应光学系统有更多的子孔径数。以直径8m的望远镜为例,若r0取15cm,则要求夏克-哈特曼传感器在直径方向上至少有53个子孔径。由此给波前处理系统带来的问题是计算量大、实时性要求高。为提高自适应光学系统的控制带宽,必须提高自适应光学系统的波前采样频率和波前校正速度。在系统采样频率一定的情况下,波前处理系统的计算延时会直接影响系统的控制带宽。在当前图像帧结束的情况下,越早给出波前校正量越能更好地补偿波前像差,实现准实时的波前校正。
2002年中科院光电所研制的2900Hz、61单元的波前处理机[1]共用17片DSP,计算延时为340μs;2011年中科院电子技术研究所研制的基于FPGA的22×22子孔径波前斜率处理器[2]完成一帧所有子孔径斜率计算的延迟时间为0.33μs;2015年中科院电子技术研究所研制的基于PC机的949个子孔径的系统[3]进行2000 Hz的处理,处理延迟低于240μs;2016年中科院长春光机所研制的基于GPU的液晶自适应光学系统的波前处理[4]斜率延时为18μs,其相机像素为240×240,帧率2000帧/s,40×40个子孔径。以上夏克-哈特曼传感器所产生的图像数据大致在每秒100M像素数左右,现代的FPGA都可以在单周期内完成波前斜率计算,因此只要FPGA运行在100MHz的时钟频率下都可以进行实时处理。面对自适应光学对传感器分辨率、帧率要求的不断提高,夏克-哈特曼传感器所产生的图像数据大致在500M/s以上的像素数,传感器为达到传输带宽的要求,都采用多通道(8~10通道)同时传输的方式,FPGA难以运行在如此高的时钟频率。
本文针对具有高分辨率(1020×1020),高帧速(560帧/s),大规模子孔径数(56×56单元)的夏克-哈特曼传感器,提出一种基于现场可编程门阵列(field-programmable gate array,FPGA)的实时波前处理机,在有效降低硬件资源的前提下,可在当前子孔径数据进入FPGA后延迟10行完成当前子孔径波前处理运算,提高了系统的波前处理速度。
1. 夏克-哈特曼波前传感器原理
夏克-哈特曼波前传感器由微透镜阵列和探测器组成,每个微透镜对应探测器上的一个子探测区。当以参考波前(近似平面波)入射到微透镜阵列时,在探测区域形成近似等间距排列的光斑阵列,此时记下光斑质心位置作为参考。当以畸变波前入射时,每个子透镜对应的光斑质心位置相对参考光斑可能产生X和Y两个方向的移动,移动量即对应于畸变波前在子孔径内的平均斜率。获得畸变波前在子孔径内的平均斜率后,通过波前重构算法(模式法或区域法)即可获得波前相位。
图 1为夏克-哈特曼波前传感器的工作原理。光波场被阵列透镜分解成许多小孔径光斑,这些小孔径光斑汇聚到夏克-哈特曼探测器焦平面上。假定不同的子孔径的光成像在探测器靶面的不同位置上,任意两个子孔径所产生的邻近像点没有重叠,这样每个子孔径在像平面上都对应的一块专用的成像面积。进入阵列透镜的光束在探测器上形成一阵列衍射光斑。
根据光斑质心的定义可写出离散采样情况下光斑质心的计算公式为:
$$\begin{array}{*{20}{c}} {{x_c} = \sum\limits_{i,j}^{L,M} {{x_i}{I_{i,j}}} /\sum\limits_{i,j}^{L,M} {{I_{i,j}}} }\\ {{y_c} = \sum\limits_{i,j}^{L,M} {{y_i}{I_{i,j}}} /\sum\limits_{i,j}^{L,M} {{I_{i,j}}} } \end{array}$$ (1) 式中:xi和yi分别为探测器各子孔径位置坐标;Ii, j为第(i, j)个探测器像元灰度值。
在每一个子孔径内进行光斑质心计算,可以得到参考波前质心(Xc0,Yc0)和畸变波前质心(Xc, Yc)。波前斜率gx和gy定义为信标光波在x和y方向的偏导数在该子孔径上的平均,波前斜率和光斑质心变化量满足如下关系:
$$ {g_x} = \frac{{({x_c} - {x_0}) \times p}}{f}, {g_y} = \frac{{({y_c} - {y_0}) \times p}}{f} $$ (2) 式中:p为探测器像元尺寸;f为子透镜焦距。
综上所述,夏克-哈特曼波前传感器波前处理的核心为子孔径内光斑质心的计算。
2. 基于FPGA的实时波前处理机结构
基于Kintex7-XC7K325T的FPGA实时波前处理机组成如图 2所示,夏克-哈特曼传感器将实时采集的图像数据发送给以FPGA为核心的自适应光学波前处理机,FPGA处理完后将数据发送给上位机,同时上位机可以发送控制指令对处理机的参数进行控制。
夏克-哈特曼传感器的FPGA处理硬件结构如图 3所示。采用具有高帧速、大面阵CMOS探测器的EoSens CL型相机,在Camera Link Extended-Full传输模式下以1020×1020分辨率可实现560帧/s的帧率。为了传输高达4.4 Gbit/s的数据,需要3对Camera Link数据链,因此处理机数据接收端采用3片DS90CR288MTD芯片将Camera Link数据转成LVCMOS信号传输给FPGA。
本夏克-哈特曼传感器微透镜整列数为56×56,每个子孔径在x和y方向上用8bit表示整数坐标位置,16bit表示小数坐标位置,则每秒至少需要传输560×56×56×2×24=84295680bit数据,大大超过了通信常用的异步串行通信(RS232/422)的传输极限。因此在传输波前质心数据时,本文采用Cypress公司CYUSB2014-BZXI与上位机间进行USB3.0数据传输(USB3.0的最大速率5Gbit),为了降低USB数据传输开发复杂性,本文将USB3.0传输设置为单向传输,上位机与波前处理质心计算系统的控制由RS422完成。
3. 基于FPGA的子孔径光斑质心计算
夏克-哈特曼传感器采用的EoSens CL相机工作在1020×1020分辨率,帧频为560帧/s,采用Camera Link Extended-Full模式传输,像素时钟为75MHz。每时钟同时输出10个像素,每个像素为8bit,共80bit,行有效周期为102个像素时钟。其行时序如图 4所示(图中每一个方块代表一个像素,方块中的数字表示像素的行方向坐标,Tx代表第x个时钟周期)。
如果实时将并行输入的10个像素转成串行的单个像素进行处理FPGA需要750MHz的处理时钟,大大超过了FPGA能够达到的最高时钟,因此本文设计了一个行缓冲将高速多像素并行输入的图像数据变成低速像素为单位的串行的数据(如图 5所示),FPGA程序设计中将每一行数据按10个像素(80bit)75MHz时钟频率写入两个FIFO(64bit位宽和16bit位宽两个FIFO组成一个80bit位宽的FIFO)中,再以1个像素(8bit)频率FFPGA(75MHz~200MHz,FPGA一般时钟频率)从FIFO中读出,FIFO深度为128。每行数据的处理时间为1020个FFPGA时钟。
每一个质心计算核心模块如图 6所示,由一个如图 6的行缓冲FIFO和两个乘法累加器分别进行子孔径内x和y方向的乘法运算及累加运算组成,质心计算核心模块将FIFO读出点在对应子孔径参数进行运算。该运算为两周期流水运算。质心计算核心模块将计算后该行对应在子孔径的3个乘积累计结果进行输出。图中YPos为当前质心计算核心模块处理行在整个图像中的行位置,XPos为当前处理像素在整个图像中的列位置,Sum输出为质心计算核心模块处理完当前行后输出的行像素值总和,IntgX为每一个子块在行方向的乘法累加值,IntgY为每一个子块在列方向的乘法累加值。
质心计算核心模块工作在相机的像素时钟频率下(75MHz),相机行有效时间为Tlv时,质心计算核心模块需要10Tlv的时间来处理一行的数据,因此一个质心计算核心模块是显然不够的,但是如果每一行都有一个质心计算核心模块会浪费大量的FPGA资源,甚至导致FPGA由于资源不够而无法完成布局布线。为了满足功能的需要又不造成FPGA资源的浪费,如图 7所示,本文采用核心模块复用的质心计算方法,设计了共10个质心计算核心模块,通过核心模块选择器分时复用使用这10个质心计算核心模块,实现质心计算核心模块的复用,减少FPGA资源的使用。
最终FPGA资源使用情况如图 8所示,FPGA资源使用中最重要的几个指标LUT,FF,BRAM的使用量都在30%以下。
使用QuestaSim对图 9实际采集的夏克-哈特曼传感器成像图进行了仿真,仿真时序如图 10所示,每一行子孔径质心位置结果可以在当前子孔径所有行均输入后延时10行时间输出,采用的EoSens CL型相机工作在1020×1020分辨率560帧时,行周期小于1/(560×1020)=1.75μs,因此本系统的计算输出延迟小于17.5μs。同时将QuestaSim仿真结果与Matlab计算的结果进行了对比,结果一致。
表 1将本文所采用的系统和方法与所查到文献中其他处理系统与方法进行了比较,比较主要包括子孔径的数量、传感器的数据量和处理延时,本文所采用的系统和方法在子孔径数量最多,数据量最大的情况下,也能够将延时控制得最小。
表 1 处理能力比较Table 1. Comparison of processing powerProcessor Number of sub-apertures The data volume of the sensor Processing delay 2002 Institute of Optics and Electronics, Chinese Academy of Sciences[1] 17DSP 61 7.8MB/s 340μs 2011 Institute of Optics and Electronics, Chinese Academy of Sciences[5] FPGA 177 No data 338μs 2014 Technische Universität Ilmenau[6] FPGA 120 43.3MB/s 1050μs 2015 Institute of Optics and Electronics, Chinese Academy of Sciences[2] Computer 949 88.2MB/s 163μs 2016 Changchun Institute of Optics and Mechanics[4] GK104 GPU+CPU 1600 115.2MB/s 18μs 2018 Changchun Institute of Optics and Mechanics[7] FPGA 349 113.5MB/s 198μs 2018 Indian Institute of Astrophysics[8] FPGA 2500 No data 24-26μs System and method of this paper FPGA 3136 580MB/s μs 4. 实验系统
实验系统光路如图 11所示。光纤耦合输出激光光源(635nm)经准直后通过分束镜1垂直入射到变形镜上。变形镜用于产生畸变波前。畸变波前在分束镜2处分为两路,一路用于夏克-哈特曼传感器进行波前探测,一路用于检测远场光斑的变化。由于变形镜的通光口径一般大于哈特曼传感器的探测区域尺寸,实验系统采用透镜组L3和L4将变形镜出射的光进行缩束,焦距之比等于变形镜口径与哈特曼探测区域直径之比。夏克-哈特曼传感器获得的光斑阵列图像经Cameralink接口发送给FPGA波前处理机进行实时质心计算,质心计算结果由上位机进行波前重构后得到畸变波前分布。
5. 结论
目前夏克-哈特曼传感器所用的高分辨率、高帧率探测器大多采用多通道并行传输的方式才能满足自适应光学所要求的高分辨率、高帧频的需求,本文提出的一种基于FPGA的夏克-哈特曼波前处理机,采用核心模块复用的质心计算方法,兼顾了处理效率和FPGA资源的平衡,可以实时处理1020×1020分辨率、560帧/s图像的成像器件和56×56子孔径数微透镜整列组成的夏克-哈特曼传感器,数据输出延迟小于17.5μs(10个行周期),而且FPGA资源占用率不到30%,由此推算用该FPGA至少可以处理图像分辨率或图像帧率增加1倍的哈特曼传感器。
-
期刊类型引用(1)
1. 朱强,周维虎,陈晓梅,石俊凯,李冠楠. 高速实时近红外弱信号检测系统. 光学精密工程. 2022(24): 3116-3127 . 百度学术
其他类型引用(2)
计量
- 文章访问数: 68
- HTML全文浏览量: 18
- PDF下载量: 6
- 被引次数: 3