一种基于图像空间的图像景深模拟方法与流程

文档序号:11135373阅读:581来源:国知局
一种基于图像空间的图像景深模拟方法与制造工艺

本发明涉及一种图像处理方法,尤其是涉及一种基于图像空间的图像景深模拟方法。



背景技术:

景深是指在摄影机镜头或其他成像器前沿能够取得清晰图像的成像所测定的被摄物体前后距离范围。在聚焦完成后,在焦点前后的范围内都能形成清晰的像,这一前一后的距离范围,便叫做景深。在镜头前方(调焦点的前、后)有一段一定长度的空间,当被摄物体位于这段空间内时,其在底片上的成像恰位于焦点前后这两个弥散圆之间。被摄体所在的这段空间的长度,就叫景深。换言之,在这段空间内的被摄体,其呈现在底片面的影象模糊度,都在容许弥散圆的限定范围内,这段空间的长度就是景深。

而对于虚拟场景而言,由于场景是由一个个顶点进行构建的,最后在视点中展现出来。而对于一个已经创建了的虚拟场景而言,在一个视角中的场景都是清晰的,并不会因为由于聚焦在某一点而产生景深的效果,因此对于图像需要进行处理人工合成得到景深效果。

经过对现有技术的文献检索发现,2007年的文章Depth-of-Field Rendering by Pyramidal Image Processing(基于多层图像的景深效果渲染)中提出了一种基于图像的模糊,将图像分为多个层级,然后对每个层级分别进行渲染,然后不同之间的层级之间进行渲染并进行合理的过渡。但是由于是人工进行处理的图像,在一些边缘问题的处理上仍然存在一定的问题,并且容易产生人工处理的痕迹。而2010年的real time depth of field rendering via dynamic light field generation and filtering文章中指出,从场景的图像和深度图的信息构建出场景的光场,从光场的信息中得到如果聚焦在场景某一点上时,整个场景所有光线的合成然后得出景深的效果。该算法对于一个场景的计算除了需要场景图和深度图之外,还需要vof的视角来进行精确地计算。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种景深合成效果良好的基于图像空间的图像景深模拟方法。

本发明的目的可以通过以下技术方案来实现:

一种基于图像空间的图像景深模拟方法,其特征在于,包括以下步骤:

S1,获取参考视角的场景图像,使用matlab生成场景图像的纹理映射(mipmap);

S2,对纹理映射进行仿射变换(wraping),通过映射函数使参考视角的场景图像中的像素映射到目标视角的图像中;

S3,对步骤S2得到的结果中映射到相同点位的多个像素点,保留最小的深度,即保留视角的遮挡关系,并对图像中的空洞进行填充,存储图像的点位信息;改变视角,并返回S2,直到各设定视角的点位信息存储完毕;

S4,设立一点作为焦点,根据各设定视角生成的图像中提取对应的光线,根据纹理映射的层级函数确立各点位焦点和颜色信息,加权叠加后得到带有景深效果的图像。

所述的步骤S1中,使用5*5核的高斯滤波对图像进行预处理,将原有的图像矩阵缩减为初始大小的四分之一。

所述的步骤S3中,仅对空的点位像素点进行扩散染色,对于仿射变换的中心点位,与现有的点进行差异的比较,保证即填充了空洞同时也最大程度的保持了图像的信息。

所述的步骤S3中,存储的图像的点位信息为:各像素点在参考视角的场景图像中的坐标及坐标索引,以及对应点的disp信息。

所述的步骤S4中,将多个映射视角的图像中所参考的光线融合为一个积分函数,根据纹理映射的层级函数得到源图像的像素点位颜色信息,加权叠加后合成出带有景深效果的图像。

与现有技术相比,本发明避免了传统的对点进行模糊处理,通过参考视图建立光场从而得到最终的合成处理点需要的光线信息;对填空函数的优化,减少了由于大幅度扩大wraping对应关系导致的图像误差,虽然仍不能避免hole-filling造成的图像精度损失,但是在一定程度上有所改善。

附图说明

图1为本发明的流程图。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。

实施例

如图1所示,一种基于原场景图像与较为均匀的disparity图像来按照real time depth of field rendering via dynamic light field generation and filtering文章中所提出的算法进行一定的改良优化,尽量合成出最优的景深效果图像。

本实施例方法是通过以下技术方案实现的,包括以下步骤:

第一步、根据场景图像进行处理,利用opencv的函数生成mipmap,并在生成mipmap之前采用5x5kernel的高斯滤波进行预处理。

第二步、对当前图像进行wraping处理,通过映射函数Lin(u,v,s,t)使当前参考图像像素值的映射到各个Rst中。

第三步、通过分析比较相同点位的disp值进行保留最近点位,即保留视角的遮挡关系,并扩大映射关系,填满图像空洞。

第四步、设立一点f作为焦点,根据f的深度值信息计算出对应的fdisp,再利用推导关系反求出在最终图像中一点(x,y)的原翻转对应点(w-x+s*fdisp,h-y+t*fdisp)s,再乘以每个点对应的系数

本实施例方法的原理是,很多图像处理方法在具体对图像进行变换时,都是构造根据一个点深度值以及焦点深度值的差值来确定模糊半径,人工进行处理。这样的处理方式很容易造成人工的痕迹。并且这里依据深度值与disparity图之间的转化对应关系,将原文章中的公式转化为由disparity值相关的函数,计算出文章中所需要的系数disp,然后针对不同的视角、不同视角的wraping图像来进行模拟合成。本实施例方法就是通过研究这些映射画面所保留的的光线信息特点,再根据对这些视点构成的光场的光线进行积分处理,将多个映射视角的图像中所reference的光线融合为一个积分函数。通过景深与光圈大小,实现对mipmap level的确立,再根据mipmap的层级去query源图像的像素点位颜色信息,加权叠加后合成出最终的效果图。

下面是本实施例方法详细描述。

第一步、将原有的参考视角进行mipmap的生成处理,这是为之后的query做下了准备。

所述的mipmap生成是通过opencv原本的采样函数,在使用了5x5高斯kernel的滤波处理之后,将原有的图像矩阵缩减为初始大小的四分之一。对于新生成的图像,可以多次重复这个过程,从而得到更小的mipmap层级,这样处理的好处在于对于大幅度需要模糊的点,可以计算出它所对应的mipmap level层级,然后从中取出需要的像素颜色信息,避免了不必要的高精度图像处理,使模糊部分的图像更为清晰平滑。

第二步、对当前参考视角的图像进行wraping映射处理,通过映射函数Lin(u,v,s,t)使当前参考视角的图像中某一点像素(u0,v0)的映射到位于(s,t)位置的视图Rst中。

所述的映射函数Lin(u,v,s,t)是指:

(u,v)=(u0,v0)+disp*(s,t)

其中,u0和v0代表在参考视图中,某个像素点位的坐标为(u0,v0),对于disp的计算公式如下

其中,h表示整个图像的高度值,θ表示vof的视角角度,z表示(u0,v0)点位的深度值信息

对于本实例中,可以利用公式将disparity图中所得到的点位的disparity信息转化为深度信息,从而进行计算。

对于所述的(s,t),本实例按照文章所述的halton序列求得,按照halton序列在分别以2,3为基底生成的,位于(0,1)范围内的halton序列对。

对于所述的halton序列是采用蒙特卡洛算法生成的空间随机均匀分布采样点。为了使得(s,t)对在空间中分布更为均匀与图像的wraping偏向能够更加多样化,本实例中对(s,t)对采用了从(0,1)映射到(-0.5,0.5)区间范围内,避免大量无效null的存在,并且采用MUL(s,t)来扩大图像的wraping程度,实现更为明显的景深效果。

第三步、对于第二步处理得到的结果进行处理,如果单纯的按照wraping公式进行计算,会造成以下两个问题:

1.由于各个点位的depth不同,并且最终结果会化为正数。可能会存在多个点映射到同一个点位上,对于这一部分的处理,按照文章中提出的,如果多个方向点位发生了上述冲突,保留depth最小即disparity最大的点位来保证视角遮挡关系的正确。

2.由于存在1的问题以及对于遮挡边缘的处理可能会使得在最终wraping处理的图像结果中含有没有被映射到的点,此时需要对这些点进行着色处理,减小误差。文章中提出的方法是根据map即wrap的结果点位,将确定的点位周围也染上相同的颜色,然而在实践中,这个办法的效果是图像的质量大大降低,因此,本实例中采用了只对null的像素点进行扩散染色,而对于wrap的中心点位,必定与现有的点进行disp的比较,保证既填充了空洞同时也最大程度的保持了图像的信息。

对于wraping处理的结果,保存的形式为保存对于像素点(x,y)保留了像素点位在于参考视图中的(u0,v0)坐标,即对于像素点(x,y)而言,它的颜色信息并没有直接保存,而是保存了在原始图中的坐标索引,以便下一步中的处理进行。与此同时,该点还保存了对应disp信息,以便在前文提及的两个问题进行更加方便的处理进行。

第四步、对于最终结果进行处理合成,对于一副图像,可以根据已经确定的点位焦点信息,计算出fdisp。

由上述公式即可算出f焦点fdisp,所对应的depth为z0

所述的fdisp是指:最终的合成视图与第二三步所建立的光场的偏移对比量。

而对于最终结果的合成,采用了以下公式:

所述的是光线与len棱镜构成的角度

为了避免重复利用(u,v)=(u0,v0)+disp*(s,t)即wraping公式带来误差

(u0,v0)=(w-x,h-y)

所述的新的逆向wraping公式即简单的找出原图的中心对称点,采用这个公式会导致最终的输出结果与原图呈现出翻转180度的关系,只需要将最后的处理结果翻转180度即可。

其中,s,t为wraping视图的移动坐标,这个公式由高斯函数近似求得。

所述的系数在本实例中由一个专门的变量进行累计计算,在最终的结果产生时进行归一化处理,虽然在文章中没有提出,但从最终的结果看来必须要对各个光线进行一次归一化处理,否则会由于view视点数量的改变造成最终结果的明暗变化。

对于最终结果的大幅度模糊部分,本实例采用了mipmap层级来减少不必要的精确计算

所述的C近似表示光圈的大小,C值越大则整体景深的效果越明显,反之成立。

通过得到的mipmap level,在本步骤中query到wraping视图的点位时,并非全部光线都要从原图中query对应像素点位的颜色信息,根据不同的mipmap level而query到各个层级的mipmap纹理中,保证了在高度模糊处理的部分,颜色的统一与协调,减少了噪点的生成。

实验表明,较之于现有的景深处理方法,本实施例的景深效果更加明显自然。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1