发明内容
本发明要解决现有技术中的技术问题,提供一种夜景影像正射纠正处理方法。
为了解决上述技术问题,本发明的技术方案具体如下:
一种夜景影像正射纠正处理方法,包括以下步骤:
1)计算影像四角点物方坐标
根据影像四角点物方坐标,分别利用反算RPC模型算到地面坐标;反算过程是:通过读取影像附带的RPC文件,得到RPC的系数和正则化参数,通过影像四角点影像坐标与RPC文件中的正则化参数得到的初始四角点物方坐标为初值,建立仿射变换模型,通过仿射变换模型得到物方坐标;再通过RPC模型将物方坐标算到影像坐标,检查计算得到的影像坐标和仿射变换的初值之间的差值,然后迭代上述过程,最终得到影像四角点物方坐标;
2)构建输出影像
由四角点物方平面坐标中经纬度最小、最大值得到影像覆盖范围(lat0~lat1,lon0~lon1),假定正射影像分辨率gsd,即可计算影像的宽度W和高度H:
W=(lon1-lon0)/gsd
H=(lat1-lat0)/gsd
3)计算仿射变换6参数
所述仿射变换6参数为:第一个参数为lon0;第二个参数为gsd;第三个参数为0;第四个参数为lat0;第五个参数为0;第六个参数为-gsd;
4)逐像素遍历映射到原始影像
首先,检测原始影像的黑色区域,生成一个掩模mask,掩模是单通道,大小与原始影像大小相同的临时图像,掩模的每个像素表示原始影像对应位置的像素是否为黑色区域,如果是黑色区域,则将掩模的值赋值为0,如果不是黑色区域,则将掩模的值赋值为1;
然后,对于正射影像每个像素(s,l)通过投影公式计算到物方坐标(lat,lon),公式如下:
lat=l*gsd+lat0
lon=s*gsd+lon0
其次,将lon,lat和hitOff带入RPC模型,即可求出原始影像坐标(x,y),然后通过mask判断,如果mask的值不为0,则直接将正射影像的灰度值赋值为0,否则进入下一步;
若提供了DEM,可内插出(lat,lon)位置的高程height,代入RPC正算模型即可得到原始影像坐标(x,y);
5)内插灰度值并赋值
由步骤4)中反算得到的原始影像坐标(x,y),在原始影像上内插灰度;计算出灰度p后,赋值给输出影像(s,l)位置。
在上述技术方案中,步骤1)的具体流程包括:
a)读取RPC文件,得到RPC系数和正则化参数,建立RPC正算模型;
b)通过RPC参数的正则化参数和影像的宽和高建立初始的仿射变换模型;
c)通过仿射变换模型将输入的原始影像坐标(x,y)得到物方坐标(lon,lat);
d)通过RPC正算模型将物方坐标(lon,lat)算到影像坐标(x1,y1)
e)计算影像坐标(x,y)和(x1,y1)的差值off;
f)如果off小于实现给定的阈值e,则计算结束,否则以(lon,lat)和off为基准,计算新的四角点物方坐标,然后利用RPC模型得到这四角点的影像坐标,以这次计算得到的四角点物方坐标和影像坐标建立新的仿射变换模型;重新执行步骤c)-e),直到off小于给定的阈值e结束。
在上述技术方案中,步骤4)中,内插采用双线性内插法,公式如下:
p=p(i,j)*(1-dx)*(1-dy)+
p(i+1,j)*dx*(1-dy)+
p(i+1,j+1)*dx*dy+
p(i,j+1)*(1-dx)*dy
式中,
i=int(x)
j=int(y)
dx=x-i
dy=y-j
其中int(x)表示对x进行取整。
本发明具有以下的有益效果:
本发明的夜景影像正射纠正处理方法,针对具有大面积黑色区域的夜景影像,基于现有的遥感影像正射纠正算法,采用基于有理多项式系数(Rational PolynomialCoefficients,简称RPC)正射纠正模型进行正射校正,通过输出影像上逐像素映射到原始影像,仅对原始影像进行正射纠正计算,不用逐点计算,减少了很多计算量,从而大大提高夜景影像正射纠正的效率。
本发明的夜景影像正射纠正处理方法,针对夜景影像的特点,可以有效地对夜景影像进行正射纠正,可以灵活快速地进行正射纠正。
具体实施方式
下面结合附图对本发明做以详细说明。
本发明提供的夜景影像正射纠正处理方法,基于现有的遥感影像正射纠正算法,和吉林一号视频3星的产品结构,采用基于有理多项式系数(Rational PolynomialCoefficients,简称RPC)正射纠正模型进行正射校正。
RPC模型将物方坐标D(L,P,H),(其中L代表经度Longitude,简称lon),P代表纬度Latitude,简称lat,H代表地面高程Height)与其对应的影像坐标d(X,Y),(其中X代表影像横向的像素个数,Y代表影像纵向的像素个数),用比值多项式关联起来。为了增强参数求解的稳定性,将地面坐标和影像坐标正则化到[-1,+1]之间。对于一个影像,定义如下比值多项式:
其中:
其中,ai,bi,ci,di为RPC系数,b1和d1通常为1.0。(L,P,H)为正则化地面坐标,(X,Y)为正则化影像坐标,计算方法如下,
这里,lonOff,lonScale,latOff,latScale,hitOff,hitScale为物方点坐标的正则化参数;xOff,xScale,yOff,yScale为影像坐标的正则化参数。RPC系数和正则化参数由RPC文件提供。
在RPC模型中,可以用一阶多项式来表示由光学投影引起的畸变误差,由二阶多项式趋近地球曲率、投影折射、镜头倾斜等因素引起的畸变,可用3阶多项式来模拟高阶部分的其它未知数。
RPC模型可以利用地面控制点进行优化,这里采用仿射模型进行优化,仿射变换的公式如下:
其中,x,y代表经过仿射变换后的影像坐标,X,Y代表变换前的影像坐标,x0,x1,x2和y0,y1,y2代表仿射变换系数。
本发明的夜景影像正射纠正处理方法主要有三个步骤:
1)创建正射输出影像;
2)输出影像上逐像素映射到原始影像;
3)在原始影像上内插出灰度值,赋给输出影像相应位置。
下面结合技术方案和附图详细说明本发明的具体实施,这里以长光卫星技术有限公司发射的卫星——视频03星为例,详细说明夜景影像的正射纠正处理方法。
示例中所采用的夜景影像为吉林一号视频3星北京时间2017年2月18日22点21分27秒开始拍摄的石家庄的夜景影像,影像宽12000像素,影像高5000像素,侧摆角13°。
结合图1说明本发明的夜景影像正射纠正处理方法,具体包括以下步骤:
1)计算影像四角点物方坐标
影像四角点(0,0),(11999,0),(11999,4999)和(0,4999)的物方坐标分别利用反算RPC模型算到地面坐标,反算过程是:通过读取影像附带的RPC文件,得到RPC的系数和正则化参数,通过影像四角点影像坐标(0,0),(11999,0),(11999,4999)和(0,4999)与RPC文件中的正则化参数得到的初始四角点物方坐标(lonOff-lonScale,latOff+latScale),(lonOff+lonScale,latOff+latScale),(lonOff+lonScale,latOff-latScale)和(lonOff-lonScale,latOff-latScale)为初值,建立仿射变换模型,通过仿射变换模型得到物方坐标。再通过RPC模型将物方坐标算到影像坐标,检查计算得到的影像坐标和仿射变换的初值之间的差值off,然后迭代上述过程,最终得到物方坐标。
具体流程如下:
a)读取RPC文件,得到RPC系数和正则化参数,建立RPC正算模型;
b)通过RPC参数的正则化参数和影像的宽和高建立初始的仿射变换模型;
c)通过仿射变换模型将输入的原始影像坐标(x,y)得到物方坐标(lon,lat);
d)通过RPC正算模型将物方坐标(lon,lat)算到影像坐标(x1,y1)
e)计算影像坐标(x,y)和(x1,y1)的差值off;
f)如果off小于实现给定的阈值e,则计算结束,否则以(lon,lat)和off为基准,计算新的四角点物方坐标,然后利用RPC模型得到这四角点的影像坐标,以这次计算得到的四角点物方坐标和影像坐标建立新的仿射变换模型;重新执行步骤c)-e),直到off小于给定的阈值e结束。
一般取正算物方点高程恒定设定为HEIGHT_OFF,若有地区DEM,要得到更为精确的物方坐标,可在仿射变换收敛到(Latitude,Longitude)后,通过DEM内插出高程Height,作为高程常数代入到RPC正算模型中计算出新的(Latitude,Longitude),循环迭代该过程,直到两次计算出来的物方高程差值小于给定的高程限差。
2)构建输出影像
由四个角点物方坐标中经纬度最小最大值得到影像覆盖范围(lat0~lat1,lon0~lon1),假定正射影像分辨率gsd,即可计算影像的宽度(W)和高度(H):
3)
4)计算仿射变换6参数
第一个参数为lon0;
第二个参数为gsd;
第三个参数为0;
第四个参数为lat0;
第五个参数为0;
第六个参数为-gsd。
5)逐像素遍历映射到原始影像(去除全黑区域)
首先,检测原始影像的黑色区域,生成一个掩模(mask),掩模是单通道,大小与原始影像大小相同的临时图像,掩模的每个像素表示原始影像对应位置的像素是否为黑色区域,如果是黑色区域,则将掩模的值赋值为0,如果不是黑色区域,则将掩模的值赋值为1。
然后,对于正射影像每个像素(s,l)可以通过投影公式计算到物方坐标(lat,lon),公式如下:
lat=l*gsd+lat0
lon=s*gsd+lon0
其次,将lon,lat和hitOff带入RPC模型,即可求出原始影像坐标(x,y),然后通过mask判断,如果mask的值为0,则直接将正射影像的灰度值赋值为0,否则进入下一步。
若提供了DEM,可内插出(lat,lon)位置的高程height,代入RPC正算模型即可得到原始影像坐标(x,y)。
6)内插灰度值并赋值
由5)中反算得到的原始影像坐标(x,y),在原始影像上内插灰度。内插分为最临近内插法,双线性内插法和双三次内插法三种方法,为了兼顾效率和精度,这里采用双线性内插法,计算出灰度p后,赋值给输出影像(s,l)位置。
内插采用双线性内插法,公式如下:
p=p(i,j)*(1-dx)*(1-dy)+
p(i+1,j)*dx*(1-dy)+
p(i+1,j+1)*dx*dy+
p(i,j+1)*(1-dx)*dy
式中,
i=int(x)
j=int(y)
dx=x-i
dy=y-j
其中int(x)表示对x进行取整,例如x=1.265,则int(x)=1。
对于正射纠正,原始影像没有灰度的区域,以往的一般做法是用黑色填补,但是夜景影像的特殊性,含有大片的黑色区域,这会使得黑色区域无法分辨是图像原有的黑色还是人为补充的黑色,所以利用白色进行填补,可以有效地区分开图像的有效区域和填补区域。
图2为本发明夜景影像正射纠正前效果图。该图表明夜景影像在正射纠正前,由于卫星在绕地球运动的过程中,并不是平行于经线的方向,而是有一定的轨道倾角,所以拍摄出来的图像并不是人们常规以为的上北下南,左西右东的布局,与常见的地图有一定的不同,存在一定地旋转角度。
图3为本发明夜景影像正射纠正后效果图。该图表明夜景影像在做正射纠正后,会根据正射纠正所输入的坐标***来重新调整影像的表示方法,使之和输入的坐标***的坐标一致,在本文中采用了地理坐标***,影像的横向方向表示经度,影像的纵向方向表示纬度。图中的白色部分是由于坐标变化引入的不输入原图像的额外区域,为了和夜景影像的黑色部分进行区分,所以采用白色。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。