一种自适应线程参数的遥感正射影像并行生成方法

文档序号:32415806发布日期:2022-12-02 22:11阅读:40来源:国知局
一种自适应线程参数的遥感正射影像并行生成方法

1.本发明涉及摄影测量技术领域,特别涉及一种自适应线程参数的遥感正射影像并行生成方法。


背景技术:

2.随着遥感技术的发展,卫星遥感影像获取技术正趋向于三多(多平台、多传感器和多角度)和三高(高空间分辨率、高光谱分辨率和高时相分辨率),逐渐成为地面信息采集最为有效的手段。摄影测量的研究对象也不再局限于航空影像,其理论与算法也被广泛应用于高分辨卫星,高分辨率卫星遥感影像进入国际市场以后,为航天摄影测量开辟了新的应用研究领域,成像几何模型作为遥感影像几何处理和地球空间信息提取的理论基础,已成为亟待研究解决的关键技术。
3.正射纠正是遥感影像数据处理的关键环节,可以消除成像过程中的各种因素导致的影像畸变,也是整个遥感数据处理过程中计算量最大、耗时最长的步骤之一。正射纠正的主要方法有共线性模型、基于放射变换的严格几何模型、改进多项式模型、有理函数模型和神经网络纠正等。上述方法可分为通用经验模型和严格物理模型,通用经验模型以控制点进行正射纠正,受地形和控制点的限制;严格物理模型需要已知传感器的轨道参数和姿态参数等等,可获得较高的精度,但是多数卫星影像不再提供传感器各项参数,而是提供rpc参数文件。
4.图形处理器gpu专门为计算密集型、高度并行化的处理任务设计,有效地解决海量计算的速度问题,使用gpu对正射纠正过程进行加速,能够极大地缩短对立体影像正射纠正的时间。使用基于cuda的gpu并行计算时,需要在调用核函数时设置核函数的线程参数即线程块和线程网格的参数。对影像等数据使用二维线程参数时,常规的选择是线程块使用16*16大小,然而这种常规设置并不一定是最优的选择,以往的研究大多是测试不同线程块大小的运行时间来选择较好的一个,较为繁琐。


技术实现要素:

5.本发明为了解决上述问题,提出了一种能自适应不同gpu的方法确定线程参数,基于数字高程模型和遥感影像几何纠正rpc模型对立体影像进行间接正射纠正,并使用gpu并行计算加速正射纠正过程,使用不同线程数、寄存器数和共享内存大小计算内核占用率,通过最大占用率的线程确定线程块和线程网格参数调用正射校正核函数cuda进行gpu并行计算,对高分辨率卫星遥感立体影像高效地进行正射纠正,生成dom影像产品,能够满足摄影测量、地理测绘等实际生产需要。
6.为了达到上述目的,提出了一种自适应线程参数的遥感正射影像并行生成方法,包括以下步骤:
7.(1)获取原始立体影像,根据其角点的像方坐标、影像的rpc文件的参数和dem通过rfm模型进行迭代计算获得四至地理坐标,建立模拟纠正影像;
8.(2)根据gpu的性能参数和cuda核函数使用的寄存器及共享内存确定线程块、线程网格参数;
9.(3)使用所述gpu并行计算,对所述模拟纠正影像每个像元进行坐标变换获得其地理坐标(b,l),通过坐标变换计算对应所述dem中的行列,插值计算获得地面高程值h;
10.(4)根据所述模拟纠正影像像元的地理坐标(b,l)和所述地面高程值h,通过所述rfm模型计算在所述原始立体影像中的行列,并以该行列进行插值计算的灰度值作为所述纠正影像的灰度值,获得正射纠正影像。
11.进一步的,所述步骤1建立模拟纠正影像包括:
12.(1.1)根据所述原始立体影像的左上、右上、左下和右下四个角角点像方坐标(r0,c0)以及所述rpc文件的参数建立rfm模型;
13.(1.2)以所述dem的平均高程h0作为初值,通过所述rfm模型计算获得初始经纬度(b1,l1),坐标变换得到(b1,l1)在所述dem中的行列(x1,y1),插值求得高程h1;
14.(1.3)将所述像方坐标(r0,c0)和高程h1输入所述rfm模型,获取新的经纬度(b2,l2)及高程h2,重复迭代计算,直到计算的经纬度满足误差要求,将此经纬度作为角点的地理坐标,并将四个角点的地理坐标进行对比,获得影像的最大、最小维度和最大、最小经度作为四至,计算所述模拟纠正影像的行列数,建立所述模拟纠正影像。
15.进一步的,所述rfm模型公式为:
[0016][0017]
其中:
[0018]
num
l
(p,l,h)=a1+a2l+a3p+a4h+a5lp+a6lh+a7ph+a8l2+a9p2+a
10
h2+a
11
plh+a
12
l3+a
13
lp2+a
14
lh2+a
15
l2p+a
16
p3+a
17
ph2+a
18
l2h+a
19
p2h+a
20
h3[0019]
den
l
(p,l,h)=b1+b2l+b3p+b4h+b5lp+b6lh+b7ph+b8l2+b9p2+b
10
h2+b
11
plh+b
12
l3+b
13
lp2+b
14
lh2+b
15
l2p+b
16
p3+b
17
ph2+b
18
l2h+b
19
p2h+a
20
h3[0020]
nums(p,l,h)=c1+c2l+c3p+c4h+c5lp+c6lh+c7ph+c8l2+c9p2+c
10
h2+c
11
plh+c
12
l3+c
13
lp2+c
14
lh2+c
15
l2p+c
16
p3+c
17
ph2+c
18
l2h+c
19
p2h+c
20
h3[0021]
dens(p,l,h)=d1+d2l+d3p+d4h+d5lp+d6lh+d7ph+d8l2+d9p2+d
10
h2+d
11
plh+d
12
l3+d
13
lp2+d
14
lh2+d
15
l2p+d
16
p3+d
17
ph2+d
18
l2h+d
19
p2h+d
20
h3[0022]
(p,l,h)为标准化的地面坐标;(x,y)为标准化的影像坐标,其标准化原理如下:
[0023][0024][0025]
其中:lat_off、lat_scale、long_off、long_scale、height_off和height_scale为地面坐标的标准化参数;samp_off、samp_scale、line_off、line_scale为影像坐标的标准化参数,上述参数均在所述rpc文件中获得。
[0026]
进一步的,所述步骤2中确定线程块和线程网格参数包括如下步骤:
[0027]
(2.1)根据所述gpu的性能参数和cuda核函数使用的寄存器计算每个线程的寄存器数限制流处理器使用的线程束数值warps
limitpersm
为:
[0028][0029]
其中:threads
warp
为线程束包含的线程数量,warp
alloc
为线程束的分配粒度,regs
allocsize
为寄存器分配单元大小,regs
persm
每个流处理器包含的寄存器数;regs
perb
为cuda核函数中一个线程使用的寄存器数量;
[0030]
(2.2)根据所述核函数使用的共享内存计算每个线程块使用的实际线程束threads
perb
为:
[0031][0032]
threads
perb
=64*n
[0033]
其中:threads
perb
为线程块数量,最少为64,最大为1024,n=1,2,

,16;
[0034]
(2.3)所述核函数使用的寄存器及共享内存计算对此线程数的gpu线程束占用率:
[0035][0036]
其中:
[0037]
blocks
warps
为线程束限制流处理器可分配的线程块数:
[0038][0039]
blocks
regs
为寄存器限制流处理器可分配的线程块数:
[0040][0041]
blocks
smemory
为共享内存限制流处理器可分配的线程块数:
[0042][0043]
其中:smemory
perb
为所述核函数中每个线程使用的共享内存,smemory
allocsize
为共享内存的分配单元大小,smemory
limitpersm
为流处理器的共享内存;
[0044]
(2.4)遍历计算设定的线程数对应的线程束占用率,max(occupancyn),n=1,2,

,16,当占用率最大时获取最小的n值,确定所述线程块的大小threads
perb
,选择二维线程索引的block_x、block_y由以下公式计算:
[0045][0046][0047]
对应的二维线程网格为:
[0048]
[0049][0050]
其中img_rows,img_cols为所述原始立体影像的行列数。
[0051]
进一步的,所述步骤3中获得地理坐标(b,l)及地面高程值h包括:
[0052]
将所述原始立体影像及所述四至地理坐标输入所述gpu,利用步骤2中获得的所述线程块和线程网格参数调用所述cuda核函数对每个所述模拟纠正影像像元通过左上角地理坐标和像元像方坐标进行坐标变换获得像元的地理坐标(b,l),并根据所述dem的左上角坐标坐标变换在dem中的行列(dem_r,dem_c),使用双线性插值进行重采样计算,获得所述地面高程h。
[0053]
进一步的,所述步骤4中获得正射纠正影像包括:
[0054]
根据模拟纠正影像像元的地理坐标(b,l)和地面高程h通过所述rfm模型计算得到所述模拟纠正影像像元对应在所述原始立体影像像方中的行列(r,c),使用插值进行重采样计算,获得灰度值h作为纠正影像的灰度值,每个像元的地理坐标为(b,l,h),纠正影像的行列坐标为(r,c),使用纠正后数据生成所述正射纠正影像。
[0055]
本发明的有益效果:
[0056]
1、基于dem和rpc模型进行间接纠正,对大范围、高分辨卫星遥感影像不受地形和控制点的限制进行正射纠正。
[0057]
2、能自适应不同的gpu确定使用cuda核函数时的线程块、线程网格参数,性能更好且自动化。
[0058]
3、使用gpu并行计算对正射纠正过程进行加速,极大地缩短了对立体影像正射纠正的时间,同时满足对影像批量快速、实时进行处理的需要。
附图说明
[0059]
图1为本发明实施例自适应线程参数的遥感正射影像并行生成方法流程示意图。
[0060]
图2位本发明实施例自适应gpu确定线程块、线程网格参数的示意图。
[0061]
图3为本发明实施例对高分辨率卫星影像正射纠正前后对比图。
具体实施方式
[0062]
下面结合附图及较佳实施例详细说明本发明的具体实施方式。
[0063]
如图1所示,本发明提供了一种自适应线程参数的遥感正射影像并行生成方法,具体包括如下步骤:
[0064]
s101、获取原始立体影像,根据其角点的像方坐标、影像的rpc文件的参数和dem通过rfm模型进行迭代计算获得四至地理坐标,建立模拟纠正影像;
[0065]
根据原始影像的左上、右上、左下和右下四个角角点像方坐标(r0,c0)和rpc文件的参数建立rfm模型,以dem的平均高程h0作为初值,通过rfm模型计算获得初始经纬度(b1,l1),坐标变换得到(b1,l1)在dem中的行列(x1,y1),插值求得高程h1,将像方坐标(r0,c0)和高程h1输入rfm模型,计算得到经纬度(b2,l2)及高程h2,重复迭代计算,直到计算的经纬度满足误差要求,将此经纬度作为角点的地理坐标,并将四个角点的地理坐标进行对比,获得影像的最大、最小维度和最大、最小经度作为四至,计算模拟影像的行列数,建立模拟纠正影
像。
[0066]
rfm模型公式如下:
[0067][0068]
num
l
(p,l,h)=a1+a2l+a3p+a4h+a5lp+a6lh+a7ph+a8l2+a9p2+a
10
h2+a
11
plh+a
12
l3+a
13
lp2+a
14
lh2+a
15
l2p+a
16
p3+a
17
ph2+a
18
l2h+a
19
p2h+a
20
h3[0069]
den
l
(p,l,h)=b1+b2l+b3p+b4h+b5lp+b6lh+b7ph+b8l2+b9p2+b
10
h2+b
11
plh+b
12
l3+b
13
lp2+b
14
lh2+b
15
l2p+b
16
p3+b
17
ph2+b
18
l2h+b
19
p2h+a
20
h3[0070]
nums(p,l,h)=c1+c2l+c3p+c4h+c5lp+c6lh+c7ph+c8l2+c9p2+c
10
h2+c
11
plh+c
12
l3+c
13
lp2+c
14
lh2+c
15
l2p+c
16
p3+c
17
ph2+c
18
l2h+c
19
p2h+c
20
h3[0071]
dens(p,l,h)=d1+d2l+d3p+d4h+d5lp+d6lh+d7ph+d8l2+d9p2+d
10
h2+d
11
plh+d
12
l3+d
13
lp2+d
14
lh2+d
15
l2p+d
16
p3+d
17
ph2+d
18
l2h+d
19
p2h+d
20
h3[0072]
(p,l,h)为标准化的地面坐标;(x,y)为标准化的影像坐标,其标准化原理如下:
[0073][0074][0075]
式中,lat_off、lat_scale、long_off、long_scale、height_off和height_scale为地面坐标的标准化参数;samp_off、samp_scale、line_off、line_scale为影像坐标的标准化参数,上述参数在影像的rpc文件中获得。
[0076]
s102、根据gpu的性能参数和cuda核函数使用的寄存器及共享内存确定线程块、线程网格参数;
[0077]
如图2所示,从gpu的参数中可知每个流处理器使用的线程束数量为warps
limitpersm
,一个线程束包threads
warp
个线程,线程束分配粒度为warp
alloc
,寄存器分配单元大小regs
allocsize
,每个流处理器大小的寄存器数regs
persm
,正射纠正核函数中一个线程使用的寄存器数regs
perb
,可计算每个线程的寄存器数限制流处理器使用的线程束数值为:
[0078][0079]
核函数中每个线程使用的共享内存为smemory
perb
,共享内存的分配单元大小smemory
allocsize
,流处理器的共享内存为smemory
limitpersm
。已有经验可知线程块的线程数最少为64,最大为1024,可设线程块大小为threads
perb
,每个线程块使用的实际线程束为:
[0080]
warps
perb
=threads
perb
/32
[0081]
threads
perb
=64*n
[0082]
其中,n=1,2,

,16。
[0083]
由线程束限制流处理器可分配的线程块数:
[0084][0085]
由寄存器限制流处理器可分配的线程块数:
[0086][0087]
由共享内存限制流处理器可分配的线程块数:
[0088][0089]
可计算对此线程数的gpu线程束占用率:
[0090][0091]
通过对设定的线程数遍历计算对应的线程束占用率,max(occupancyn),n=1,2,

,16,当占用率最大时获取最小的n值,即可确定线程块的大小threads
perb
。启动纠正的核函数时cuda通过设定线程块和网格,通过上述计算的线程块中的线程数,选择二维线程索引的block_x、block_y应尽可能平均,可由以下公式计算:
[0092][0093][0094]
对应的二维线程网格为:
[0095][0096][0097]
其中img_rows,img_cols为原始影像的行列数。即可确定cuda核函数的线程块、线程网格参数。
[0098]
s103、使用所述gpu并行计算,对所述模拟纠正影像每个像元进行坐标变换获得其地理坐标,通过坐标变换计算对应所述dem中的行列,插值计算获得地面高程值;
[0099]
向gpu中传输影像数据及参数,使用步骤s102中确定的线程块、线程网格参数调用cuda核函数对每个模拟纠正影像像元通过左上角地理坐标和像元像方坐标进行坐标变换获得像元的地理坐标(b,l),并根据dem的左上角坐标坐标变换在dem中的行列(dem_r,dem_c),使用双线性插值进行重采样计算,获得地面高程h。
[0100]
s104、根据所述模拟纠正影像像元的地理坐标和所述地面高程值通过所述rfm模型计算在所述原始立体影像中的行列,并以该行列进行插值计算的灰度值作为所述纠正影像的灰度值,获得正射纠正影像。
[0101]
根据模拟纠正影像像元的地理坐标(b,l)和地面高程h,通过rfm模型计算得到模拟纠正影像像元对应在原始立体影像像方中的行列(r,c),使用插值进行重采样计算,获得灰度值h作为纠正影像的灰度值,每个像元的地理坐标为(b,l,h),纠正影像的行列坐标为
(r,c),将纠正后数据传输回cpu中并生成正射纠正影像,
[0102]
表1为本发明与erdas lps商用软件对影像进行正射纠正的水平精度结果,对两个纠正影像提取一定数量的同名点,以erdas lps纠正影像的经纬度为真值进行均方根误差计算,获得误差结果为平面精度在经度偏差1.3m、纬度偏差1.19m、综合为1.77m,效果较好,可用于对高分辨率遥感卫星影像的正射纠正使用。
[0103]
表1
[0104]
[0105][0106]
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,因此,本发明的保护范围由所附权利要求书限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1