Image distortion correction algorithm based on FPGA
-
摘要: 在机器视觉中需要对采集到的带有畸变的图像进行矫正。为了提高对畸变图像校正的实时性,针对使用FPGA实现图像畸变矫正算法时,存在的在线计算逆向映射坐标复杂和片上ROM容量不够问题,压缩了逆向映射表,并在FPGA上利用插值方法在线重建了逆向映射表。通过查找重建的逆向映射表来获取逆向映射坐标,从而降低了FPGA的在线计算量和片上ROM的容量需求。MATLAB仿真结果显示,当压缩参数n分别取4、8、16时都能够对畸变图像进行较好的矫正,并且图像信息不会丢失。仿真结果验证了算法的有效性,该算法可用于基于FPGA的图像畸变矫正。Abstract: In machine vision, the collected images with distortion need to be corrected. In order to improve the real-time performance of distorted images correction, aiming at the problem of complex on-line calculation of reverse mapping coordinates and insufficient ROM capacity on chip when using FPGA(Field-Programmable Gate Array) to realize the algorithm of image distortion correction, the compressed reverse mapping table was reconstructed online by interpolation method on FPGA. The reverse mapping coordinates were obtained by seeking the reconstructed reverse mapping table, which reduced the online computation of FPGA and the capacity requirement of ROM on chip. The simulation results of MATLAB show that when the compressed parameters are 4, 8 and 16, respectively,the distortion images can be corrected better and the image information cannot be lost. The simulation results verify the effectiveness of algorithm, which can be used for image distortion correction based on FPGA.
-
Keywords:
- machine vision /
- FPGA /
- image distortion correction /
- MATLAB
-
引言
单色仪在传感器的光谱辐射定标中具有重要应用,在其使用之前,需要对其波长准确性、输出光谱带宽进行精确校准。单色仪的实验室定标中常用特征谱线灯(如低压汞灯)或激光器[1-2]作为光源,利用光电倍增管作为接收仪器,利用汞灯的特征谱线作为参考波长进行波长定标。通过实际测量、分析低压汞灯多条谱线与单色仪指示波长的差异,评估并校准单色仪的输出波长,在其他未校准波长处,通常采用算法推导或通过插值得到[3-6]。在单色仪的定期校准过程中,通常是在某一典型状态下进行波长定标,但单色仪在传感器的实际定标应用过程中,根据待定标设备的光谱通道特性不同,通常需要调节单色仪的入射、出射狭缝,改变单色仪的输出带宽,在此过程中可能对单色仪的输出波长准确性产生影响。此外,设置单色仪出入射狭缝宽度时不可避免会有前后狭缝不一致的情况(例如采用螺旋微分头式的可调狭缝),单色仪入射、出射狭缝宽度不一致,会引起单色仪仪器函数的变化,进而也可能会对单色仪的波长、带宽产生影响;考虑到目前新式光源越来越广泛地用作单色仪的照明光源(如超连续谱激光光源、激光驱动等离子体光源等),在这些新式光源应用过程中,聚焦到单色仪入射狭缝上的光斑通常未充满单色仪的入射狭缝,这种情况通常也与单色仪的校准状态不同,也可能影响到单色仪的输出波长及带宽。上述因素均可能影响单色仪的输出波长准确性和带宽,但目前鲜有系统性的研究报道。本文根据单色仪在传感器定标中的常见设置方式,通过实验实测的方法,系统研究了单色仪不同狭缝设置状态对单色仪输出波长和带宽的影响,具体见下文所述。
1 单色仪波长定标方案
光栅单色仪的波长定标方案如图 1所示,入射光经过单色仪的入射狭缝后,经过准直反射镜成平行光束,然后照射到闪耀光栅后,反射成多级衍射单色光,经过汇聚反射镜后聚焦到出射狭缝处,然后由出射狭缝射出[7-8]。
单色仪的步进电机可以改变光栅入射角的变化,以此来利用光栅进行分光输出单色光。
单色仪波长定标的实验装置主要由低压汞灯,某型号单光栅单色仪,Trap探测器,静电计及计算机组成。实验过程中所采用的低压汞灯谱线如表 1所示。
表 1 低压汞灯特征谱线Table 1. Characteristic line of low-pressure mercury lamp used in experimentNO. λ/nm 1 365.02 2 404.66 3 435.84 4 546.07 5 576.96 6 579.07 实验中所采用的TRAP探测器为三片式陷阱结构硅探测器,已有研究表明这种陷阱结构具有优良的面均匀性、偏振敏感性等特性。探测器1 h内非稳定性误差低于0.354%[9]。静电计工作在电流测量模式,其中电流测量范围1 fA~20 mA。实验中将陷阱探测器与静电计相连,直接测出探测器的电流值,作为实测数据。
2 实验测量分析
首先将汞灯直接对准单色仪狭缝,预热10 min后,在单色仪归零状态下,调整探测器位置至最佳状态。探测器的输出电流值由静电计采集。现以435.84 nm波长为例,固定出射和入射狭缝的宽度为0.5 mm,通过减小扫描范围和增加扫描精度来研究光谱曲线变化[10]。当扫描范围430 nm~440 nm,步长1 nm时,发现信号极值在436 nm处;然后扫描范围433 nm~438 nm,步长0.1 nm时,信号极值在435.6 nm处;最后扫描范围433.75 nm~437 nm,扫描步长0.05 nm时,得出最佳的光谱分辨率曲线。不同步长扫描图像如图 2所示,水平坐标轴代表单色仪上所读出的波长值,竖直坐标轴代表从探测器得出的归一化电流信号的大小,从左到右测量的谱线变得越来越光滑。为了保证测量的准确性,接下来的测量过程会依此进行上述测量步骤,从而得出最佳的测量结果。
在出入射狭缝缝宽为0.5 mm处测得波长为435.84 nm的曲线形状后,将缝宽分别设置为0.1 mm和1.0 mm,分别利用相同的方法进行测量,测量结果如下图 3所示。水平坐标轴代表单色仪上所读出的波长值,竖直坐标轴代表从探测器得出的归一化响应值。
通过扫描得出具体谱线数据后,分析数据可以进一步得出详细结论。首先,计算出最大波长一半处的2个波长值,求得这2个波长的差值,得出所测光谱谱线带宽,因此单色仪输出波长的光谱带宽可以由(1)式求得,而对于单色仪所测得的波长值的计算可由(2)式求得[11]:
$$ b = {\lambda _{{\rm{FWHM}}2}} - {\lambda _{{\rm{FWHM}}1}} $$ (1) $$ {\lambda _s} = \frac{{{\lambda _{{\rm{FWHM}}2}} + {\lambda _{{\rm{FWHM}}}}_1}}{2} $$ (2) 式中:b代表光谱谱线的带宽值; λs代表单色仪所测波长值; λFWHM2、λFWHM1表示在光谱谱线波长最大值的一半的2个值,而且假设有λFWHM2>λFWHM1。
当利用(2)式计算得到单色仪所测谱线中心值λs后,单色仪的波长误差就等于实际的标准谱线波长值和单色仪实测结果的差异,可由(3)式求得:
$$ \Delta \lambda = \lambda - {\lambda _s} $$ (3) 式中:Δλ代表波长误差; λ代表汞灯谱线的实际值; λs是通过单色仪测得的谱线计算出的波长值。
图 3中扫描单色仪输入输出狭缝的缝宽分别为0.1 mm、0.5 mm和1.0 mm情况下的光谱谱线,计算出3个缝宽对应的带宽b和波长λs的结果如表 2所示。
表 2 计算波长435.84 nm处改变出射入射狭缝缝宽的波长精度与带宽Table 2. Calculation of wavelength accuracy and bandwidth for changing width of exiting and incident slit at wavelength of 435.84 nm缝宽/mm 波长带宽
b/nm所测波长
λs/nm波长误差
Δλ/nm0.1 0.28 435.33 0.51 0.5 1.23 435.50 0.34 1.0 2.47 435.49 0.35 从表 2可以看出随着单色仪的入射出射狭缝(同步)增加,波长带宽也在增加,但波长误差呈现降低趋势。推测原因可能在于,当波长分辨率较高时,光源较弱,对各种不确定度更加敏感,包括输出波长对光源在光栅上的照明角度敏感性及电机转动精度等。在缝宽达到一定程度时,波长误差达到了一种稳定状态,因此在使用单色仪的过程中,当波长分辨率较高时,应尤其注意单色仪状态的校准。当波长带宽较大时,波长误差基本处于一种稳定状态,因此可以选择适当的带宽作为其校准状态。在接下来的实验中暂以出射入射狭缝缝宽0.5 mm进行实验。通过实验发现随着缝宽的增加波长的带宽是增加的,并且缝宽的改变也会影响测量波长的精度。
由于单色仪在加工安装以及使用过程中,机械运行中存在不可避免的误差,从而导致波长指示值与实际值有一定差别。而低压汞灯的特征谱线具有固定的波长值,因而可以作为波长校准的标准值,与单色仪给出的指示波长作比较。我们分别测量了365.02 nm、404.66 nm、435.84 nm、546.07 nm、576.96 nm、579.07 nm几个不同的波长,在出射入射缝宽为0.5 mm,步长为0.05 nm的情况下对几个波长依次进行扫描,得出最佳的光谱分辨率曲线,测量结果如图 4所示。横轴表示单色仪指示波长,纵轴表示归一化电流信号的大小。由于每条谱线在各自的波长附近,探测器的光谱响应度差异近似可忽略,因此每条谱线各自的形状不用考虑探测器光谱响应的影响。
通过对不同波长的求解,对单色仪的波长误差进行分析,结果如表 3所示。
表 3 选取谱线的修正量的计算单位:nmTable 3. Calculation of correction amount of selected line实际波长λ 所测波长λs 波长误差Δλ 365.02 364.89 0.13 404.66 404.32 0.44 435.84 435.50 0.34 546.07 545.79 0.26 576.96 576.63 0.33 579.07 578.74 0.27 可以发现在单色仪带宽不改变的情况下,单色仪在不同波长下的波长误差是不同的。根据这些已知的谱线波长修正量,通过多项式插值,可以得到单色仪宽波段范围内的任意波长的修正量。
单色仪在使用过程中,通过改变出射入射狭缝来控制单色仪输出带宽,但在调节狭缝宽度的过程中无法避免的会导致入射狭缝和出射狭缝前后不一致的情况发生。因此在实验中也对出入射狭缝不一致对波长测量的影响进行了探究,并以435.84 nm波长为例,保持入射狭缝缝宽为0.5 mm,分别改变出射狭缝宽度为0.1 mm、0.3 mm、0.5 mm、0.7 mm、0.9 mm等,测量扫描的步长均为0.05 nm,测得的光谱曲线如图 5所示。图 5中横轴表示单色仪指示波长,纵轴表示归一化电流信号的大小。出射狭缝缝宽的变化对应的光谱谱线在图 5中依次排列。
对图 5不同的出射狭缝带宽下的波长带宽和误差计算结果如表 4所示。
表 4 波长435.84 nm下改变出射狭缝宽度的光谱精度和带宽的计算Table 4. Calculation of spectral accuracy and bandwidth for changing width of exit slit at wavelength of 435.84 nm缝宽/mm 波长带宽
b/nm所测波长
λs/nm波长误差
Δλ/nm0.1 1.20 435.38 0.46 0.3 1.21 435.43 0.41 0.5 1.23 435.50 0.34 0.7 1.55 435.47 0.37 0.9 2.00 435.38 0.46 1.1 2.44 435.32 0.52 1.3 2.90 435.40 0.44 当单色仪入射狭缝宽度保持不变的情况下,出射狭缝缝宽从0.1 mm增加到0.5 mm,带宽变化趋势较缓慢。当单色仪出射狭缝缝宽超过0.5 mm时,单色仪输出波长带宽变化比较显著,并呈线性增加趋势,这与输入输出狭缝的卷积相关。而波长的误差值呈先减小后增加的趋势,波长误差值在0.5 mm处最小,这也说明单色仪使用过程中,要尽量使出射入射狭缝的宽度相等,以保持适当的波长带宽和最小的波长误差。
传统的单色仪定标过程中采用低压汞灯、谱线灯等作为定标光源,在测量过程中光源可以充满整个单色仪的入射狭缝,不用考虑入射狭缝充满与否会对测量造成影响。但随着新式光源在单色仪上的应用越来越多,如超连续谱激光器、EQ-99激光驱动白光光源等通常都是聚焦进入单色仪中,光源并未充满整个单色仪的入射狭缝,光源有可能在竖直方向产生像差等对输出波长的测量产生影响,因此在试验中也对其进行了探究。测量时,通过使用聚焦透镜对入射的汞灯光源进行聚焦,使其在不充满整个单色仪入射狭缝的情况下照射进单色仪,控制单色仪出入射狭缝宽度为0.5 mm的情况下分别对404.66 nm、435.84 nm、546.07 nm进行测量,测量结果如图 7所示。图 7中横坐标代表单色仪的指示波长,纵坐标是测得的归一化电流信号值。图 7中分别给出了在404.66 nm、435.84 nm和546.07 nm 3条谱线时,单色仪入射狭缝充满和未充满时的光谱谱线图像。
图 7中的测量结果计算分析如表 5所示。通过选取的3个波长来分析单色仪的入射狭缝充满与否对波长精度的影响。在波长为404.66 nm时,入射光是否充满单色仪入射狭缝时,所测得的波长与波长误差是一致的;而在波长为435.84 nm的情况下,对比测得的波长和波长误差相差0.01 nm;波长546.07 nm测量时,对比所测的波长和波长误差相差0.02 nm。在选取的3个波长对比测量过程中,入射光是否充满单色仪入射狭缝对所测波长与波长误差的影响不大。在上述测量过程中,引起测量误差的主要来源有:低压汞灯光源稳定性、单色仪波长的重复性、单色仪波长准确度、探测器稳定性。测量误差各分量如表 6所示。在实验中的365.02 nm、404.66 nm、435.84 nm、546.07 nm、576.96 nm、579.07 nm几个波长点处达到了此合成测量误差。
表 5 选取的3个波长充满单色仪入射狭缝与否的对比计算Table 5. Comparison of selected three wavelengths filled or not with monochromator entrance slit波长
/nm入射光是否充满
入射狭缝波长带宽
b/nm所测波长
λs/nm波长误差
Δλ/nm404.66 是 1.22 404.32 0.34 否 1.21 404.32 0.34 435.84 是 1.23 435.50 0.34 否 1.22 435.49 0.35 546.07 是 1.26 545.79 0.28 否 1.24 545.77 0.30 表 6 测量误差分析Table 6. Error analysis of measurement测量误差来源 测量误差/nm 光源稳定性 0.002 波长重复性 0.008 单色仪波长分辨率 0.005 探测器稳定性 0.001 合成测量误差 0.01 3 结论
通过分析单色仪使用过程中输入输出狭缝的变化,研究了缝宽的变化对单色仪波长准确度及输出波长带宽的影响。单色仪在使用过程中,在改变单色仪带宽(入射狭缝出射狭缝相同)的情况下,当分辨率较高时,波长误差较大,随着带宽的增加,该误差呈现一种逐渐稳定的趋势。因此在使用单色仪的过程中要注意设置适合的输入输出狭缝宽度,并做好对其波长精度的分析工作。当设置入射狭缝不变,出射狭缝的宽度小于入射狭缝时,改变出射狭缝调节仪器带宽,带宽变化较缓慢;当出射狭缝宽度大于入射狭缝时,随着出射狭缝宽度的增加波长的带宽增加。而波长的误差在整个过程中呈先减小后增加的趋势,因此在单色仪使用过程中要尽量保持出射入射狭缝宽度一致。事实上,随着新型光源的出现,例如EQ-99光源等聚焦进单色仪,与典型状态相比光斑不会充满单色仪狭缝。本文通过利用聚焦透镜将光源聚焦进入单色仪入射狭缝的中间位置,这与光源充满入射狭缝时相比,输出谱线没有明显变化,入射狭缝未充满时对单色仪的输出波长精度影响不大。
-
表 1 3种畸变矫正算法的比较
Table 1 Comparison of three distortion correction algorithms
插值方法 基于最邻近元法 基于双线性
内插法基于3次
内插法图像质量 有锯齿失真清晰度不高 清晰度较高 清晰度最好 算法开销 最低 较低 最高 逻辑资源需求 低 较低 高 表 2 利用经压缩的逆向映射表矫正畸变图像的PSNR和SSIM
Table 2 Correction of PSNR and SSIM of distorted image using compressed reverse mapping table
n 4 8 16 32 PSNR/dB 61.866 5 58.241 2 54.230 5 11.539 3 SSIM 0.999 8 0.999 5 0.999 0 0.599 9 -
[1] 管伟, 王章利, 王中强, 等. 光学镜头轴线精确定心校准技术[J]. 应用光学,2019,40(2):223-228. GUAN Wei, WANG Zhangli, WANG Zhongqiang. et al Precise axis centering calibration technology for optical lens[J]. Journal of Applied Optics,2019,40(2):223-228.
[2] PAN Bing, YU Liping, WU Dafang, et al. Systematic errors in two-dimensional digital image correlation due to lens distortion[J]. Optics and Lasers in Engineering,2013,51:140-147. doi: 10.1016/j.optlaseng.2012.08.012
[3] 段马丽. 广角图像畸变校正算法的研究与实现[D]. 邯郸: 河北工程大学, 2013. DUAN Mali. Research and implementation of distortion correction algorithms for wide angle images[D]. Handan: Hebei University of Engineering, 2013.
[4] 吴松, 张利华. 基于FPGA的图像处理系统设计与实现[J]. 无线电通信技术,2018,44(4):407-410. WU Song, ZHANG Lihua. Design and implementation of image processing system based on FPGA[J]. Radio Communication Technology,2018,44(4):407-410.
[5] 林明汉, 胡贤龙, 黄星, 等. 大视场CMOS相机图像的畸变校正[J]. 科学技术与工程,2009,9(18):5508-5510. LIN Minghan, HU Xianlong, HUANG Xing, et al. Image distortion correction of CMOS with large field[J]. Science Technology and Engineering,2009,9(18):5508-5510.
[6] 卢宇峰, 罗小华, 俞淼, 等. 基于LUT实时图像矫正的行缓存优化[J]. 复旦学报: 自然科学版,2016,55(4):418-424. LU Yufeng, LUO Xiaohua, YU Miao, et al. Line buffer reduction for LUT-based real time image rectification[J]. Journal of Fudan University : Natural Science,2016,55(4):418-424.
[7] 郝仁杰, 王中宇, 李亚茹. 一种单目视觉位姿测量系统的误差分析方法[J]. 应用光学,2019,40(1):79-85. HAO Renjie, WANG Zhongyu, LI Yaru. Error analysis method for monocular vision pose measurement system[J]. Journal of Applied Optics,2019,40(1):79-85.
[8] 陈高琳. 图像缩放算法中常见插值方法比较[J]. 福建电脑,2017,33(9):98-99. CHEN Gaolin. Comparison of common interpolation methods in image scaling algorithms[J]. Journal of Fujian Computer,2017,33(9):98-99.
[9] 徐鹏飞. 双线性插值和三次卷积在图像缩放中的应用及实现[J]. 网络安全技术与应用,2017(12):51-67. XU Pengfei. Application and realization of bilinear interpolation and cubic convolution image scaling[J]. Network Security Technology & Application,2017(12):51-67.
[10] 许芳, 席毅, 陈虹, 等. 基于FPGA/Nios-Ⅱ的矩阵运算硬件加速器设计[J]. 电子测量与仪器学报,2011,25(4):377-383. XU Fang, XI Yi, CHEN Hong, et al. Design and implementation of matrix hardware acceleration based on FPGA/ Nios-Ⅱ[J]. Journal of Electronic Measurement and Instrumentation,2011,25(4):377-383.
[11] 赫美琳, 高明慧, 李爽, 等. 一种单目相机标定算法研究[J]. 数字通信世界,2018(5):11-14. HAO Meilin, GAO Minghui, LI Shuang, et al. Research on a monocular camera calibration algorithm[J]. Digital Communication World,2018(5):11-14.
[12] 邵正芬. 最佳精度定点运算的FPGA实现[J]. 通信技术,2009,42(7):279-281. SHAO Zhengfen. FPGA implementation of best-precision fixed-point algoritm[J]. Communication Technology,2009,42(7):279-281.
[13] 郑永瑞, 李洁, 刘晓宏, 等. 基于FPGA的视频图像实时几何畸变校正[J]. 电光与控制,2013,20(6):75-78. ZHENG Yongrui, LI Jie, LIU Xiaohong, et al. FPGA based real-time geometric distortion correction for video images[J]. Electronics Optics & Control,2013,20(6):75-78.
[14] 张洋. 基于双线性插值法的图像缩放算法的设计与实现[J]. 电子设计工程,2016,24(3):169-170. ZHANG Yang. Design and implementation of image scaling algorithm based on bilinear interpolation[J]. Electronic Design Engineering,2016,24(3):169-170.
[15] 宋寿鹏, 邵勇华, 堵莹. 采样方法研究综述[J]. 数据采集与处理,2016,31(3):452-463. SONG Shoupeng, SHAO Yonghua, DU Ying. Survey of sampling method[J]. Journal of Data Acquisition and Processing,2016,31(3):452-463.
[16] DIANA EARSHIA V, SUMATHI M. A comprehensive study of 1D and 2D image interpolation techniques[M]. Singapore: Springer Singapore, 2018: 383-391
-
期刊类型引用(1)
1. 苗慧,李明. 基于数字画像的人体运动信息特征采集方法. 吉林大学学报(工学版). 2024(12): 3637-3645 . 百度学术
其他类型引用(1)