一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种光谱畸变的校正方法

2022-08-03 01:43:55 来源:中国专利 TAG:

1.本发明涉及高光谱数据处理领域,特别是涉及一种高光谱仪器中光谱畸变的校正方法。


背景技术:

2.目前,高光谱仪器被广泛应用,由原来应用于航空航天方面,逐渐扩大到农业、森林、天文探测、军事、资源勘探以及环境监测等方面。高光谱技术不断进步,逐渐成熟。光谱成像技术是把图像和光谱结合在一起的一种技术,获取目标的相关信息,包括空间信息以及光谱信息。光谱成像技术获取的数据称为光谱数据立方体,分析数据立方体可以提取光谱曲线。
3.高光谱仪器中按照分光原理可以分成滤光片型、干涉型、计算层析型和色散型。最早出现的是滤光片型光谱仪,光学布局简单,但光谱分辨率较低;干涉型光谱仪是利用傅里叶变换的方法处理图像,具有强集光性,并且能够进行多通道探测,但对仪器的精度要求较高;计算层析型探测速度较快,但成本高;色散型光谱仪有两种类型,可分为光栅成像型和棱镜成像型,具有高分辨率和色散线性的优点,应用广泛。
4.高光谱仪器中狭缝像会发生畸变,畸变有两种类型,一是谱线弯曲,狭缝像边缘视场和中心视场在光谱维度方向上像点位置的差异;二是色畸变,不同波长狭缝像的长度相对于参考波长狭缝像长度的差值,属于狭缝像放大率的差异。光栅成像型和棱镜成像型仪器在成像时会发生畸变,主要是发生谱线弯曲,当存在谱线弯曲时,会造成光谱仪获取的光谱线和图像信息发生变化,同一行之间探测器像元会产生一定的光谱偏离,原有的图谱混叠形式会发生改变,使得对后续的光谱标定、像元匹配变得更加复杂,后期进行图像处理的难度加大,影响高光谱仪器的精度,使复原图谱的准确度造成一定的误差。
5.高光谱仪器中狭缝图像畸变又难以完全消除,因此,对高光谱仪器中光谱畸变的校正方法的研究十分重要。使用matlab搭建一个校正系统,进行光谱线的校正,可以减小畸变,从而提高高光谱仪器对目标检测的精度等。对高光谱仪器中光谱畸变的校正方法的研究,是对高光谱仪器获取光谱线后进行应用的基础。
6.在此背景下,通过分析光谱线的特点,我们提出了一种光谱畸变的校正方法,实现对发生畸变的光谱图进行校正,对后续的光谱特征提取有着重要意义。


技术实现要素:

7.本发明目的在于对高光谱仪器中的狭缝图像畸变进行校正,提出了一种光谱畸变的校正方法。
8.本发明提出的一种光谱畸变的校正方法,包括光谱的边缘检测、光谱区域的划分、光谱长度的计算、光谱宽度的计算、获取光谱的位置信息,然后修复光谱数据,最后显示校正后的光谱图像。技术细节如下:步骤s1:光谱的边缘检测
步骤s1.1:读取光谱数据,将光谱图像转换为灰度图像。
9.令three_d∈r
m*n*3
表示读取图像得到的三维彩色图像,one_d∈r
m*n
表示转换后得到的二维灰度图像,其中m和n分别是图像的高度和宽度。
10.步骤s1.2:分别采用阈值是0.8和0.2的canny边缘检测算子对one_d进行处理。
11.步骤s1.3:对使用阈值为0.8的边缘检测算子处理的边缘数据进行一次函数拟合得到直线,用spectral_position保存直线的斜率和截距数据,以该直线为基准,确定光谱带的上边界和下边界位置,用spectral_position_above保存光谱带的上边界直线的斜率和截距数据,用spectral_position_below保存光谱带的下边界直线的斜率和截距数据。
12.步骤s1.4:对使用阈值为0.2的边缘检测算子处理后的光谱数据,依据光谱边界数据spectral_position_above和spectral_position_below消除光谱数据中的噪声,得到去噪后的光谱数据get_edge∈r
m*n
,其中m和n分别是图像的高度和宽度。
13.步骤s2:光谱区域的划分步骤s2.1:依据光谱的首尾横坐标得到在水平方向的最小值mincol和最大值maxcol,得到整个区域的宽度col_wide。
14.步骤s2.2:按照目标划分的区域个数number_of_split_blocks得到每个光谱区域块的宽度block_wide,公式如下:block_wide = col_wide / number_of_split_blocksnumber_of_split_blocks可以根据光谱畸变的程度调整,默认分成3段光谱区域,不能设置划分成1段区域。
15.步骤s2.3:依据光谱的首端横坐标mincol和光谱区域段的宽度block_wide得到每个区域的开始位置start_plot_x和结束位置end_plot_x,公式如下:start_plot_x = mincol (i-1)
ꢀ×
block_wideend_plot_x = mincol i
×
block_wide其中i=1,2,

,number_of_split_blocks。
16.步骤s3:光谱长度的计算步骤s3.1:依据每个区域的开始位置start_plot_x和结束位置end_plot_x,截取每个区域的光谱数据。
17.步骤s3.2:将每个区域的数据拟合出一条一次函数的直线,用fitting_line保存直线的斜率和截距数据。
18.步骤s3.3:依据每个区域的开始位置start_plot_x和结束位置end_plot_x,得到直线上两端的坐标start_plot(start_plot_x,start_plot_y)和end_plot(end_plot_x,end_plot_y),公式如下:start_plot_y=fitting_line (1,1)
ꢀ×
start_plot_x fitting_line (1,2);end_plot_y=fitting_line (1,1)
ꢀ×
end_plot_x fitting_line (1,2);其中fitting_line (1,1)是直线的斜率,fitting_line (1,2)是直线的截距。
19.步骤s3.4:依据光谱的首尾点start_plot和end_plot的坐标得到这一段的光谱长度leng_part。
20.步骤s4:光谱宽度的计算步骤s4.1:在分段光谱的开始点start_plot处,做直线的法线,用normal_line保
存法线的斜率和截距数据。
21.步骤s4.2:求得法线与光谱相交的点的集合collection_of_ points,遍历分段光谱内所有的点p0,求p0到法线的距离distance是否小于阈值,一般阈值设为1即可,点p0到法线的距离公式如下:distance= abs(det([p2-p1,p0-p1]))/norm(p2-p1)其中p1、p2是法线上的两个点,两个点就可以确定这条法线。
[0022]
步骤s4.3:计算collection_of_ points中符合条件的坐标数据两两之间的距离,取其中的最大值,即作为法线与直线交点处的宽度数据,将其存入total_block_wide∈r
l*1
,l是光谱的总长度。
[0023]
步骤s4.4:如果collection_of_ points中没有符合条件的数据,则这一点的宽度数据和前一个点的宽度数据保持一致。
[0024]
步骤s4.5:将法线normal_line沿着拟合直线fitting_line方向移动1个单位得到下一个点的法线normal_line,法线的斜率不变,截距会发生变化,截距变化的数值公式如下d=sqrt(k
2 1)/ k其中d是截距变化的数值,有正负,k是拟合直线的斜率。
[0025]
步骤s4.6:回到4.3迭代计算宽度数据,直到数据点宽度个数满足长度数据。
[0026]
步骤s5:获取光谱的位置信息步骤s5.1:对整个区域所有边缘数据点进行拟合,拟合结果为一条水平直线,得到一个常数fitting_spectral_position,即为光谱线位置。
[0027]
步骤s6:修复光谱数据步骤s6.1:根据光谱宽度数据total_block_wide和位置数据fitting_spectral_position修复光谱数据,得到repaired_spectrum。
[0028]
步骤s7:显示校正后的光谱图像步骤s7.1:显示修复后的光谱图像repaired_spectrum。
附图说明
[0029]
图1光谱数据的原始图像。
[0030]
图2光谱数据的灰度图像。
[0031]
图3使用阈值为0.8的canny算子得到的边缘数据。
[0032]
图4使用阈值为0.2的canny算子得到的边缘数据。
[0033]
图5去噪后的光谱边缘检测图像。
[0034]
图6修复后的光谱图像。
具体实施方式
[0035]
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应当属于本发明保护的范
围。
[0036]
本发明提出方法包括光谱的边缘检测、光谱区域的划分、光谱长度的计算、光谱宽度的计算、获取光谱的位置信息,然后修复光谱数据,最后显示校正后的光谱图像。具体步骤如下:步骤s1:光谱的边缘检测步骤s1.1:读取如图1所示光谱数据,将图1转换为灰度图像,如图2所示;令three_d∈r
m*n*3
表示读取图1得到的三维彩色图像,one_d∈r
m*n
表示转换后得到的二维灰度图像,其中m和n分别是图像的高度和宽度。
[0037]
步骤s1.2:采用两个不同阈值的canny边缘检测算子对one_d进行处理,结果如图3和图4所示。
[0038]
步骤s1.3:对图3的边缘数据进行一次函数拟合得到直线,用spectral_position保存直线的斜率和截距数据,以该直线为基准,确定光谱带的上边界和下边界位置,用spectral_position_above保存光谱带的上边界直线的斜率和截距数据,用spectral_position_below保存光谱带的下边界直线的斜率和截距数据。
[0039]
步骤s1.4:依据光谱边界数据spectral_position_above和spectral_position_below消除图4中光谱以外的噪声,得到去噪后的光谱数据get_edge∈r
m*n
,其中m和n分别是图像的高度和宽度,去噪结果如图5所示。
[0040]
步骤s2:光谱区域的划分步骤s2.1:依据光谱的首尾横坐标得到在水平方向的最小值mincol和最大值maxcol,得到整个区域的宽度col_wide。
[0041]
步骤s2.2:按照目标划分的区域个数number_of_split_blocks得到每个光谱区域块的宽度block_wide,公式如下:block_wide = col_wide / number_of_split_blocksnumber_of_split_blocks可以根据光谱畸变的程度调整,默认分成3段光谱区域,不能设置划分成1段区域。
[0042]
步骤s2.3:依据光谱的首端横坐标mincol和光谱区域段的宽度block_wide得到每个区域的开始位置start_plot_x和结束位置end_plot_x,公式如下:start_plot_x = mincol (i-1)
ꢀ×
block_wideend_plot_x = mincol i
×
block_wide其中i=1,2,

,number_of_split_blocks。
[0043]
步骤s3:光谱长度的计算步骤s3.1:依据每个区域的开始位置start_plot_x和结束位置end_plot_x,截取每个区域的光谱数据。
[0044]
步骤s3.2:将每个区域的数据拟合出一条一次函数的直线,用fitting_line保存直线的斜率和截距数据。
[0045]
步骤s3.3:依据每个区域的开始位置start_plot_x和结束位置end_plot_x,得到直线上两端的坐标start_plot(start_plot_x,start_plot_y)和end_plot(end_plot_x,end_plot_y),公式如下:start_plot_y=fitting_line (1,1)
ꢀ×
start_plot_x fitting_line (1,2);
end_plot_y=fitting_line (1,1)
ꢀ×
end_plot_x fitting_line (1,2);其中fitting_line (1,1)是直线的斜率,fitting_line (1,2)是直线的截距。
[0046]
步骤s3.4:依据光谱的首尾点start_plot和end_plot的坐标得到这一段的光谱长度leng_part。
[0047]
步骤s4:光谱宽度的计算步骤s4.1:在分段光谱的开始点start_plot处,做直线的法线,用normal_line保存法线的斜率和截距数据。
[0048]
步骤s4.2:求得法线与光谱相交的点的集合collection_of_ points,遍历分段光谱内所有的点p0,求p0到法线的距离distance是否小于阈值,一般阈值设为1即可,点p0到法线的距离公式如下:distance= abs(det([p2-p1,p0-p1]))/norm(p2-p1)其中p1、p2是法线上的两个点,两个点就可以确定这条法线。
[0049]
步骤s4.3:计算collection_of_ points中符合条件的坐标数据两两之间的距离,取其中的最大值,即作为法线与直线交点处的宽度数据,将其存入total_block_wide∈r
l*1
,l是光谱的总长度。
[0050]
步骤s4.4:如果collection_of_ points中没有符合条件的数据,则这一点的宽度数据和前一个点的宽度数据保持一致。
[0051]
步骤s4.5:将法线normal_line沿着拟合直线fitting_line方向移动1个单位得到下一个点的法线normal_line,法线的斜率不变,截距会发生变化,截距变化的数值公式如下:d=sqrt(k
2 1)/ k其中d是截距变化的数值,有正负,k是拟合直线的斜率。
[0052]
步骤s4.6:回到4.3迭代计算宽度数据,直到数据点宽度个数满足长度数据。
[0053]
步骤s5:获取光谱的位置信息步骤s5.1:对整个区域所有边缘数据点进行拟合,拟合结果为一条水平直线,得到一个常数fitting_spectral_position,即为光谱线位置。
[0054]
步骤s6:修复光谱数据步骤s6.1:根据光谱宽度数据total_block_wide和位置数据fitting_spectral_position修复光谱数据,得到repaired_spectrum。
[0055]
步骤s7:显示校正后的光谱图像步骤s7.1:显示修复后的光谱图像repaired_spectrum,结果如图6所示。
[0056]
以上仅是本技术的具体实施方式而已,并非对本技术做任何形式上的限定,凡是依据本技术的技术实质对以上实施方式所做的任意简单修改、等同变化或修饰,均仍属于本技术技术方案的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献