基于刃边法的MTF实时测试技术实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于刃边法的MTF实时测试技术实现
董建婷;陈伟;史漫丽
【摘要】MTF是评价光学遥感器成像质量的重要指标.为了使MTF测试更加直观高效,亟需开发MTF实时测试技术.文章介绍了基于刃边法实现MTF实时测试的方法和步骤,其中Fermi函数拟合边缘扩展曲线和快速傅里叶算法是技术实现的难点和重点,文章对此进行了详细描述,并给出了利用VC++编程时的算法流程.最后利用MTF实时测试技术对某航天光学遥感器进行了系统MTF测试.对相同的图像利用VC++和MATLAB分别进行计算,计算结果差值在士o.002范围内;与矩形靶标法进行对比,测试结果相差在士0.01范围内.测试结果验证了测试方法的正确性和可行性.VC++的模块化设计,使该技术的通用性和移植性较好,具有广泛的应用前景.【期刊名称】《计算机测量与控制》
【年(卷),期】2013(021)002
【总页数】3页(P349-351)
【关键词】MTF;刃边法;实时测试;VC++
【作者】董建婷;陈伟;史漫丽
【作者单位】北京空间机电研究所,北京 100076;北京空间机电研究所,北京100076;北京空间机电研究所,北京 100076
【正文语种】中文
【中图分类】TP753
0 引言
调制传递函数(MTF)是评价光学遥感器成像质量的客观有效方法,目前利用MTF进行光学检测和成像像质评估的技术已日趋成熟,各种MTF测试仪器和计算软件的性能也不断完善。
现阶段对航天光学遥感器系统MTF的测试大多是先采存储集遥感器成像图像,然后在MTF计算软件中载入图像进行计算。
此方法虽然通用性较好,但需要在图像采集软件和MTF计算软件中来回切换,测试效率较低,对于像光学调焦这样时效性要求较高的场合,此方法就不太适用,需要开发MTF 实时测试软件系统。
将MTF计算嵌入到VC++开发的图像采集处理软件中,实时测试MTF,将会极大提高测试效率,使测试更加直观便捷。
1 测试方法选择
航天光学遥感器MTF测试的常用方法有矩形靶标法、狭缝法、刃边法等。
矩形靶标法属于直接测量法,若要利用矩形靶标法获取不同空间频率下的MTF值,需要制作一系列不同频率的靶标,测试过程需要不断替换靶标,而且测试结果易受靶标相位影响,不适用于MTF全自动实时测试。
狭缝法和刃边法属于间接测量法,利用狭缝法测量MTF时,对狭缝的宽度和采样图像的质量要求较高,采样图像的选取困难。
刃边法与狭缝法相比有两个优点[1]:一是刃边靶标比狭缝靶标容易制作;二是狭缝法的计算结果要根据狭缝宽度进行修正,而刃边法的测试结果不需要进行修正。
综合以上因素,本方案采用刃边法实现MTF的实时测试。
为了实现MTF实时测试,需要将MTF计算融合到光学遥感器的图像采集处理系统中。
图像采集处理系统多采用具有界面设计优势的VC++实现,如何利用VC ++实现MTF计算的各项步骤是实时测试技术的关键。
2 MTF计算的VC++实现
2.1 刃边提取
进行MTF连续实时测试前,应从成像图像中选取合适的刃边图像作为测试计算样本。
刃边图像选取时应注意图像的线性度、非均匀性、信噪比、刃边倾角、对比度等,具体选取原则见参考文献[2,3],选定刃边图像后要对亮暗区域的直线刃
边进行提取,首先应从图像中提取刃边轮廓点。
参考文献[4]的方法,逐行对图像数据灰度值进行平均,从每行中选取灰度值与平均值相差最小的像素点作为刃边轮廓点。
然后针对提取的轮廓点坐标,利用最小二乘法进行线性拟合,得到刃边直线方程。
选取轮廓点的过程中可能会出现一行中有多个不同点被加入的情况,但不影响最终计算结果。
提取刃边轮廓点后利用最小二乘法拟合刃边直线。
为了用VC++实现最小二乘法拟合,需要从数学原理上进行剖析,将最小二乘法拟合转换为VC++能实现的算术运算。
对于数据样本,x=[x1,x2,…xm],y=[y1,y2,…ym],利用最小二乘法拟合直线y=kx+c,经过原理分析和公式推导,有以下结论[5]:
根据公式(1),可以利用VC++实现k和c的计算,进而实现了刃边提取。
2.2 边缘扩散函数拟合和线扩展函数计算
得到刃边直线方程后,应对图像中的每一个像素,计算其到刃边直线的垂直距离作为x值,该像素点的灰度值归一化后的数值作为y值。
根据x和y值的数据集合,采用Fermi函数拟合边缘扩展函数,对边缘扩展函数进行求导运算,即可得到线
扩展函数。
为了提高MTF实时测试的时效性,减少计算量,提高计算速度,假设ESF曲线是近似对称的,采用公式(2)进行Fermi函数拟合[4]。
公式(2)中,a,b,c和D是待定系数,对其求解的方法采用二次模拟退火方法[4,6],利用VC++实现模拟退火算法的流程如图1所示。
图1 利用模拟退火算法计算Fermi函数参数的流程图
模拟退火算法中的温度T的初始值、退火速度、迭代次数等参数需要根据计算时间、计算精度、计算复杂度等实际问题进行合理设置。
得到边缘扩展函数ESF,直接对其求导就能得到线扩展函数LSF,如公式(3)所示。
2.3 快速傅里叶算法
对线扩展函数LSF取包含峰值及足够宽度的区间进行LSF离散化,再进行离散傅
里叶变换(DFT),取各频率点的模,并以0频率处的MTF值为基准进行归一化处理,即可得到各频率的MTF曲线。
长度为N的函数x(n),其离散傅里叶变换为:
由于离散傅里叶变换需要的计算量较大,运算时间长,在某种程度上限制了它的使用。
为了减少运算量同时保持结果的精确度,一般采用快速傅里叶算法(FFT),当N是2的正整数次方时,可以节省相当大的计算量。
如果令
根据旋转因子的以下特性:是以N为周期的,并且,则,即错误!未找到引用源。
又具有对称性,这些特性使DFT中某些运算项合并,也可以将长序列的DFT分解成短序列的DFT,这就是快速傅里叶变换(FFT)的基本思路[8]。
在实际计算
过程中存在多种基2FFT算法,本方案采用的是应用最为广泛的基2时分FFT算法。
基2时分FFT算法的核心是蝶式运算,根据蝶式运算定理,为了计算偶数N点的DFT,可先计算两个N/2点子序列的DFT,如果序列的长度N/2仍然是偶数,则可重复利用那个上述方法,将每一个子序列分成两个N/4点的更短的子序列来进
行计算,按此一直分解下去,直至达到一点序列时为止。
利用VC++编写FFT的蝶式运算的程序流程图如图2所示。
利用基2时分FFT方法计算DFT时还存在一个问题,即输入序列x(k)不是按自然顺序排列,需要对输入数据序列进行二进制倒序排列。
此步骤实现比较简单,在此不再详细描述,具体程序可见参考文献[9]。
3 测试结果
通过以上研究分析,基于刃边法利用VC++实现MTF实时运算是切实可行的,将VC++实现的MTF实时运算模块加入到相机的图像采集软件中,即可实现采集图像的同时进行MTF实时测试。
该系统也可以打开静态图像,对静态图像计算其MTF值。
对于MTF实时测试技术的正确性,可从下面三方面进行验证:
(1)首先应验证VC++实现MTF测试时各步骤算法的正确性。
为此用MATLAB也开发了一套MTF测试软件,对相同图像利用VC++和MATLAB分别进行计算,通过对多幅图像进行计算,计算结果差值在±0.002范围内。
(2)刃边法测试MTF的正确性,用刃边法对相机MTF值进行测试,然后将刃边法与矩形靶标法的测试结果进行比较,以某相机的测试结果为例,利用刃边法计算结果为0.172,利用矩形靶标法的测试结果为0.181,测试结果差值在0.01范围内。
(3)验证算法的稳定性和一致性。
对某航天光学遥感器进行实时成像,成像过程中成像条件不变,所选取的抠图固定,连续采集计算100帧数据,对100帧数据的结果进行分析绘制,如图3所示。
由图3可知,算法的稳定性和一致性较好,100帧测试的MTF平均值为0.1718,最大值为0.1732,最小值为0.1699,最大值和最小值相差0.0033。
图2 基2时分FFT蝶式运算流程图
通过对某航天光学遥感器系统进行MTF实测,验证了算法的正确性、稳定性和一致性。
4 结束语
本方案的MTF测试算法采用VC++模块化设计,可以方便的移植到VC++开发的图像采集处理系统中,与图像采集处理系统的图像子区选取、直方图显示、对比度调节、非均匀校正、噪声滤波等功能相结合,使得测试操作更加直观便捷。
在以后的应用中,如果能将MTF测试软件与系统调焦控制软件整合到图像采集软件中,通过该软件发送调焦控制命令,并同时测试MTF,记录调焦状态与对应的图像MTF值。
这样就可以为调焦过程提供一个定量的评估,大大提高调焦的精确度。
图3 MTF多帧实时测试测试结果
【相关文献】
[1]马文坡.航天光学遥感技术[M].北京:中国科学技术出版社,2011年.
[2]戴奇燕,夏德深,何红艳等.刀刃法在轨 MTF测量性能分析[J].航天返回与遥感,2006,
27(3):22-27.
[3]赵占平,付兴科,黄巧林等.基于刃边法的航天光学遥感器在轨MTF测试研究[J].航天返回与遥感,2009,30(2):37-43.
[4]朱近,潘瑜,徐涛等.基于弯曲刃边的中低分辨率遥感影像 MTF计算方法[J].遥感信息,2009(3):3-6.
[5]黄黎.中低分辨率卫星成像系统的MTF在轨检测方法研究[D]南京理工大学硕士学位论文,2009.
[6]何尔利,翟正军.基于退火BP神经网络的模拟电路故障诊断方法[J]计算机测量与控制,2010,18(1):67-79.
[7]朱立忠.基于FPGA的1024点快速傅里叶处理器设计[J].沈阳理工大学学报,2010,29(2):61-64.
[8]冷建华.傅里叶变换[M].北京:清华大学出版社,2004年.
[9]肖柏军,曹宏宇.FFT变换及其C++实现[J].山西建筑,2004,30(8):135-136.。