技术领域
[0001] 本
发明涉及基于单张灰度图像的月表三维形状重构方法,属于计算机仿真技术领域。
背景技术
[0002] 通过对拍摄的月球
图像分析研究月表三维形状是月球探测的
基础研究之一。在包括我国“嫦娥一号”在内的各国探月工程和计划中,月表三维地形研究始终处于重要
位置。通过图像重构月表三维形状目前仍然是一种重要的月表三维地形分析方法。美国2008年
10月发射的LRO所载的六种测量装备中有两种用以测量月球地形,其中之一就是拍摄月球图像。早在1951年,人类登月之前就发现月表具有近似朗伯体(Lambertian)反射模型的特性。国内最近提出了基于双目
立体视觉的月球三维形状恢复方法,但双目立体视觉方法存在两幅
图像配准问题。20世纪70年代Horn提出的单幅灰度图像明暗恢复三维形状(Shape-from-Shading,SFS)方法得到许多学者的重视。SFS
算法的原理是根据图像上各点灰度值计算三维物体表面上相应点的反射光强度,由物理学和几何光学的分析可知,反射光的强度和物体表面性质与物体表面的几何形状有关系。为了消除问题的病态性,典型的SFS算法有最小化算法、有限元算法、神经网络算法和粘性解理论等,然而,目前算法普遍存在的问题有如下两个:一是选择的反射模型不符合物体表面的反射特性;二是引入的约束条件和求解过程过于复杂,求解速度慢,效率低。
发明内容
[0003] 本发明的目的是提供一种基于单张灰度图像的月表三维形状重构方法,以解决现有重构方法求解速度慢、效率低的问题。
[0004] 为实现上述目的,本发明的基于单张灰度图像的月表三维形状重构方法步骤如下:(1)提取单张月表灰度图像中各
像素点的灰度值信息,找出其中最大灰度值的像素点;
(2)将图像中各像素点的灰度值与最大灰度值相除,得到各像素点倾
角的余弦;根据月表反射特性,对月表做近似球形假设,求得各像素点偏角的余弦;
(3)根据各像素点的倾角余弦值、偏角余弦值求得各像素点的表面法线矢量;
(4)将求得的各像素点的表面法线矢量转换为各像素点的高度坐标值;
(5)利用中值滤波对计算得到的各高度坐标值进行滤波处理;
(6)根据得到的表面法线矢量及高度坐标值,利用OpenGL技术重构月表三维形状。
[0005] 进 一 步 的, 所 述 步 骤(1) 中 最 大 灰 度 值 为,该最大灰度值所对应的像素点记为 。
[0006] 进一步的,所述步骤(2)图像中像素点 的灰度值 与最大灰度值 相除,得到像素点 倾角 的余弦 ;根据月表反射特性,对月表做近似球形假设,求得像素点 偏角 的余弦 ,其中 、 为图像灰度值做x,y轴的差分运算得到的。
[0007] 进一步的,所述步骤(3)根据像素点 的倾角余弦值、偏角余弦值求得该像素点的表面法线矢量, ,其中 为矢量的模。
[0008] 进一步的,所述步骤(4)将得到的像素点 的表面法线矢量转换为高度坐标值,公式为 。
[0009] 进一步的,所述步骤(5)中的中值滤波是设高度集合序列 ,用长度为 的滑动窗口对其进行中值滤波,得到窗口对应的 个数 ,其中, 为窗口中心点的值, ;将这 个数按数值的大小排序,取其序号为正中间的数作为 的滤波输出,设 为滤波输出,则 。
[0010] 进一步的,所述步骤(6)中重构月表三维形状后还加入光照模型。
[0011] 进一步的,所述光照模型是Hapke光照模型,为,其
中 , , , ,
, 。
[0012] 进一步的,根据光照模型得到影响
辐射值 , 。
[0013] 进一步的,对重构的月表三维形状
叠加纹理显示。
[0014] 本发明为了仿真月表三维形状,基于传统SFS方法,采用了符合月表反射特性的朗伯体光照反射模型,对月表做球形假设,然后对图像做近似微分运算求出高度函数,再对结果做中值滤波,保证求解的正确性,从而实现了利用单幅灰度图像恢复月表三维形状。采用本发明的方法可以降低三维表面恢复实施的要求,提高恢复的速度和效率,简化恢复的步骤,经过该方法处理后,能够较准确的重构月表的三维形状。
[0015] 进一步的,加入Hapke光照模型,由于Hapke模型主要是针对由单个
光源引起的月球反射情况,根据光线在月表反射的几何特性,以月表对光线的反射系数,计算出由月表反射的光线到达观察位置的辐射强度,更佳贴近月表的实际情况。
附图说明
[0016] 图1是本发明的
流程图;图2是
实施例的月球表面仿真灰度图;
图3是实施例中对图1重构三维表面后的点
云数据显示效果;
图4是实施例对图1重构三维表面后的显示图;
图5是实施例对图1重构三维形状并加Hapke光照的效果图;
图6是实施例对图1重构三维形状后叠加Hapke光照和纹理的效果图;
图7是NASA拍摄的月表图像;
图8是实施例对图7重构形状后叠加纹理和光照的效果图。
具体实施方式
[0017] SFS算法是根据图像上各点灰度值计算三维物体表面上相应点的反射光强度,由物理学和几何光学的分析可知,反射光的强度和物体表面性质与物体表面的几何形状有关系。
[0018] 若要显示月表形状,需要将图像中的灰度信息转换成与月球几何信息相关的量。根据朗伯体反射定律,一个理想漫反射物体表面反射出来的漫反射光的强度同入射光与物体表面法向量之间的夹角的余弦成正比,即: ,
式中, 为物体表面的漫反射光强度, 是光源强度, 为物体表面反射系数,为入射光与表面法向量之间的夹角。
[0019] 若物体表面在被照射点处的单位法向量为 ,反射点到点光源的单位向量为 ,则可表示为如下的向量形式: ,当点光源离被照射表面很远时, 变化很小,因而可以将其看作为一常量。此时点光源发出的光为平行光,由向量 完全确定。在梯度空间下,假设 为
光源入射矢量, 为物体表面各点的法矢量。对于自然光,入射矢量是一个定值,而对于物体表面法线矢量,根据高等数学知识,给出函数形式 ,即:
。
[0020] 由此可知 为物体的表面梯度。在数学上,两个矢量的点积等于它们模与夹角余弦的乘积,即: 。
[0021] 两个矢量的点积还可以表示为: ,由此可得: ,
通过上式可以建立以灰度图像上任一点 处的漫反射光强度为:
,
物体表面的漫反射光强度 反映到图像上就是该点图像
亮度。通过上式可知,当值为1,即光源方向与表面法矢方向相同时, 为
最大值。求解SFS问题就是根据上式,利用已知图像的亮度和光源方向确定物体表面梯度,并由 与 的关系可进一步求出物体的表面高度 。根据上述公式,场景中每一个点有两个待求的表面梯度分量,而每点只有一个已知的灰度,因此它是一个病态的逆过程。
[0022] 本发明的基于单张灰度图像的月表三维形状重构方法的流程图如图1所示,具体实施例以图2月球表面仿真灰度图像为例,表1为图2的图像中部分像素点灰度值列表。
[0023] 1、设月球图像数据某点 的灰度值为 ,首先获得图像数据中灰度值最大的点,其灰度值 。
[0024] 2、将 点的灰度值 与 做除法,其结果作为该像素点的倾角余弦。如下表2所示为表1图像像素点灰度值计算的倾角余弦值数据列表。
[0025]根据月表反射特性,可以对月表做近似球形假设,则像素点的偏角 余弦可以通过下式计算得到, ,其中 、 代表图像灰度值做x,y轴的差分运算,即对x、y求微分。如下表3所示,为由表1图像像素点灰度值计算的倾角余弦值数据列表。
[0026]3、得到像素点的倾角和偏角之后,就可以计算该点处的表面法线矢量,
,为矢量的模,可以设定为1。
[0027] 4、根据表面法线矢量可以绘出月表的三维形貌,如图3所示是对图1重构三维表面后的点云数据显示效果图;图4是对图1重构三维表面后的显示图。表面法线矢量只能描绘月表的形状特点,不能得到表面点的相对高度值,所以,需要进行表面法线矢量到高度坐标值的转换, 。如下表4所示,为由表1图像像素点灰度值恢复的高度值数据列表。
[0028]5、得到高度数据后,由于存在图像噪声的影响,尤其是图像表面如果存在尖峰突变的情况下,计算得到的高度值有较大误差,所以还需利用中值滤波进行如下滤波过程的处理:
设集合序列 ,用长度为 的滑动窗口对其进行中值滤波,得到窗口对
应的 个数 ,其中, 为窗口中心点的值, 。将这
个数按数值的大小排序,取其序号为正中间的数作为 的滤波输出,设 为滤波输出,则。如下表5所示,为表1图像点恢复并滤波后的高度值数
据列表。
[0029] 表5 表1图像点恢复并滤波后的高度值6、通过上述方法,利用OpenGL技术可以将仿真的月表三维地形显示出来,但是为了效果贴近于月表的真实地形,还需要加入光照模型,如图5所示是对图1重构三维形状并加Hapke光照的效果图。方法采用了Hapke光照模型。Hapke模型主要是针对由单个光源引起的月球反射情况,根据光线在月表反射的几何特性,以月表对光线的反射系数,计算出由月表反射的光线到达观察位置的辐射强度,更佳贴近月表的实际情况。Hapke模型可表示为:
,
其中 表示天体表面地物对应的反照率, 表示视点方向与光源方向重合的条件,表示单位角散射方程, 表示散射光线在无穷大的介质中的双向反射系数。
和 分别可以由天体表面梯度向量的乘积来表示,即
,
,
其中 表示光源方向的单位矢量, 表示视点方向的单位
矢量。
[0030] 由于当光线的反射角与入射角接近的时候,光源的方向矢量与视点的方向矢量非常接近,此时Hapke模型会出现奇异性,计算的结果会出现较大的误差。因此,采用一种改进模型:,
其中 是光源方向的法向量, 是光源方向的矢量和
是视点 方向的 矢量, , , ,
, , , 表示天体表面地物对应的反
照率。
[0031] 6.1、改进模型简化了Hapke模型的表达式,使其不会出现奇异性,且保留了Hapke模型的基本性质。
[0032] 6.2、最后得到的影像辐射值 可表示为: 。
[0033] 7、在此光照模型下,对场景叠加纹理显示,效果更佳逼真。叠加纹理是利用OpenGL中纹理映射技术,纹理绘制的一般步骤为:定义纹理贴图、控制纹理、说明纹理贴图方式和定义纹理坐标,其实现函数为glTexImage2D(),如图6所示是对图1重构三维形状后叠加Hapke光照和纹理的效果图。
[0034] 图7所示是NASA拍摄的月表图像;图8是根据本发明的重构方法对图7重构形状后叠加纹理和光照的效果图。