CN107509067A - 一种高速高质量的自由视点图像合成方法 - Google Patents

一种高速高质量的自由视点图像合成方法 Download PDF

Info

Publication number
CN107509067A
CN107509067A CN201611231811.8A CN201611231811A CN107509067A CN 107509067 A CN107509067 A CN 107509067A CN 201611231811 A CN201611231811 A CN 201611231811A CN 107509067 A CN107509067 A CN 107509067A
Authority
CN
China
Prior art keywords
mrow
mtd
msub
mtr
image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201611231811.8A
Other languages
English (en)
Other versions
CN107509067B (zh
Inventor
冯远静
李佳镜
黄良鹏
陈丰
徐泽楠
叶家盛
陈稳舟
李定邦
汪泽南
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University of Technology ZJUT
Original Assignee
Zhejiang University of Technology ZJUT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University of Technology ZJUT filed Critical Zhejiang University of Technology ZJUT
Priority to CN201611231811.8A priority Critical patent/CN107509067B/zh
Publication of CN107509067A publication Critical patent/CN107509067A/zh
Application granted granted Critical
Publication of CN107509067B publication Critical patent/CN107509067B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/128Adjusting depth or disparity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/20Image signal generators
    • H04N13/282Image signal generators for generating image signals corresponding to three or more geometrical viewpoints, e.g. multi-view systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

一种高速高质量的自由视点图像合成方法,读取相邻相机参考视点的图像和深度图,对参考视点图像进行三维变换,搜索左右参考视点深度图中对象的边缘,将边缘像素3维变形到新视点处,然后将新视点处对应深度像素点抹去;将得到的深度图进行中值滤波,并将经过滤波之后的图像与经3维变形得到的深度图进行对比,标记出变化的像素点;对标记的像素点进行反向投影,投影到原先的参考视点处;再将初始参考纹理图中的像素值,赋给新视点图像中,与被标记像素点坐标相同的像素;对遮挡区域进行插值;根据新视点所处的位置,对公共区域进行按比例融合;用OpenCV函数库中的inpaint函数,对残留的空洞进行修复。本发明实时性较好。

Description

一种高速高质量的自由视点图像合成方法
技术领域
本发明涉及图像处理、流媒体、数值分析、三维重建、计算机科学,并行计算等领域,尤其是一种利用并行运算的基于深度图渲染技术的自由视点图像合成方法。
背景技术
自由视点图像合成是由有限多个分布于不同视点位置的相机获取同一场景的两幅或者多幅图像,对拍摄的真实图像进行数字化处理,从而合成一幅具有新视点的虚拟图像的过程。一方面,传统的人与计算机的被动关系已经不能满足人们的心理需求;另一方面,人们希望充分地参与到应用中,获得更真实的场景体验和感受。利用多个实际拍摄的图像合成虚拟视点图像的虚拟视点图像合成正是针对这些需求的交互式多媒体应用提出的,经过合成后的虚拟视点图像可以从多个角度更精确、更全面的描述研究的对象,为人们提供更丰富的信息内容和更多数据量的数字化媒体,从而得到三维场景体验效果。通过自由视点图像合成技术,用户不仅能观看到摄像机采集视点的视频,还能观看相邻摄像机之间视点的视频信息。
在自由视点合成过程中,通过基于深度图绘制(depth image based rendering,DIBR)技术,利用相邻两相机的参考视点图及深度图信息能较好地合成相机之间视点的图像。
DIBR是利用参考视点及其对应的每个像素的深度信息来合成虚拟视点,该过程分为两步:(1)利用深度信息将参考视点的图像重投影到3维空间中的位置;(2)将3维空间点再被投影到目标图像平面。其计算代价较大,无法实现视点的实时合成。
随着GPU技术的快速发展,GPU的计算能力已经远远超过CPU的计算能力。由此异构并行计算模式随着GPU技术的发展逐渐成为一种成熟,高效技术,在处理大数据时能节省大量时间。
发明内容
为了克服现有的基于深度图绘制技术无法实现实时性的问题,本发明提出一种实时性良好的高速高质量自由视点图像合成的方法,采用利用GPU进行并行计算的DIBR技术。
本发明所采用的技术方案如下:
一种高速高质量的自由视点图像合成方法,所述方法包括以下步骤:
1)搭建环境;
利用通用并行运算架构CUDA提供的应用程序编程接口API进行平台查询,获取该平台上可用的设备对象;
2)读取待处理图像和处理矩阵;
将中央处理器CPU作为主机端读取相邻摄像机的参考视点图像及深度信息图像,将读取的待处理图像保持到中央处理器CPU的内存;
读取各个摄像机的正交旋转矩阵R,平移矩阵T,内参矩阵Q,将读取的处理矩阵保持到中央处理器CPU的内存;
3)拷贝处理矩阵R,T和Q和待处理图像;
4)执行第一个核函数,核函数构建方法如下:
其中Px,Py表示点在参考视点图像中的坐标,[X,Y,Z,1]T表示世界坐标系中点的坐标,Xcam是以摄像机坐标系表示的点的点的坐标,R表示摄像机的正交旋转矩阵,C表示摄像机中心在世界坐标系中的坐标,Xcam表示经过DIBR技术变换后点的位置;
将原参考视点图像中的坐标Px,Py所在的点的像素信息复制到新图像Xcam位置点,将深度信息图中坐标Px,Py所在点的深度信息复制到新深度图Xcam位置点,生成新的参考视点的纹理图和深度信息图;
5)执行第二个核函数,核函数构建方法如下:
其中,P表示图像序列,D表示参考视点的深度图,Td为自定义阈值,经实验验证,一般取最大深度值的1/4,若像素点D(x,y)满足上式,则表示像素点为重影,需要进行处理,处理过程如下:如果是重影点,对这像素点进行DIBR处理,得到Xcam,在经DIBR处理后的深度图中Xcam所在点的深度值置为0;
6)执行第三个核函数,核函数构建如下:
yk=med{xk-N-1,xk-N,xk-N+1,...,xk,...,xk+N+1};
其中y可表示处理后该点的深度值,med表示取中值的操作,xk-N-1,xk-N,xk-N+1,...,xk,...,xk+N+1表示模板内的点的深度值,将中间暂时保存的深度信息图相应位置的值用yk可的值代替;
7)执行第四个核函数,核函数构建如下:
其中,Depold(u,v)表示原深度图在(u,v)点的深度值,Deptmp(u,v)表示中间暂时保存的深度图在(u,v)的深度值,(ucam,vcam)表示点(u,v)经DIBR变化后的坐标位置,Texold(ucam,vcam)表示原视点图在(ucam,vcam)位置的色彩值,Depold(ucam,vcam)表示原深度图在(ucam,vcam)位置的深度值;
8)对经第四个核函数处理后的视图图像和深度图进行中值滤波处理;
9)执行第5个核函数,核函数构建方法如下:
设定一个阈值t,用于以下步骤;
其中
其中,Il(u1,v1)表示由左边视点作为参考视点得到的新视点(u,v)处的像素值,Ir(u2,v2)表示由右边是视点作为参考视点得到。I(u,v)表示新视点图像中的像素值。O表示图像在(u,v)处有无空洞,若存在空洞则O为1。Z为新视点(u,v)在处的深度值,α由参考是视点与新视点之间的距离有关,A由下式决定:
其中T,Tl,Tr分别为新视点,左参考视点以及右参考视点在摄像机的平移量;
10)将生成的新视点的图像和深度图由图形处理器GPU的显存上复制到中央处理器CPU的内存上;
11)用OPENCV的库函数中调用inpaint函数,对图像中的空洞进行修补;
12)保存结果图像。
进一步,所述步骤3)中,拷贝处理矩阵R,T和Q和待处理图像的过程如下:
3.1)在图形计算器GPU中申请用于保持处理矩阵,待处理图像的显存,处理后的图像和处理过程中暂时保存图像的显存;
3.2)将处理矩阵拷贝到显存的的常储存器中,将待处理图像拷贝到显存的全局储存器;
再进一步,所述步骤4)中,利用核函数、相邻相机的参考视点与深度图进行三维变换处理,处理方法如下;
4.1)给待处理图像的每一个像素点分配一个线程;
4.2)给执行第一个核函数的每一个线程块分配256个线程;
4.3)给第一个核函数设置9个参数,分别用于:相邻相机的参考视点图,相邻相机的深度信息图,处理后相邻相机的深度信息图,处理后相邻相机的纹理信息图,和处理矩阵;
4.4)将图形计算单元GPU全局储存器中的待处理图像缓存到局部储存器中;
4.5)从缓存到局部存储器中的待处理图像读取像素按照核函数所提供的函数公式进行处理。
更进一步,所述步骤5)中,对三维变化后的图像进行去重叠,消除边缘处理,其过程如下;
5.1)给待处理图像的每一个像素点分配一个线程;
5.2)给执行第二个核函数的每一个线程块分配256个线程;
5.3)给第二个核函数设置5个参数,分别用于相邻相机的原深度图,相邻相机经DIBR处理过后的深度图,处理矩阵;
5.4)从缓存到储存器中相邻相机的深度图将像素与其邻近的8个像素点进行比较,利用核函数进行处理。
所述步骤6)中,对图像进行中值滤波处理,处理过程如下;
6.1)给待处理图像的每一个像素点分配一个线程;
6.2)给执行第三个核函数的每一个线程块分配256个线程;
6.3)给第三个核函数设置2个参数,分别用于经DIBR处理后的深度信息图,中间暂时保持的深度信息图;
6.4)从缓存到储存器中的经DIBR处理后的深度信息图依次读取3×3个像素点作为模板,按核函数所提供的公式处理。
所述步骤7)中,对变化的像素点进行反向投影,投影到原先的参考视点处,再将初始参考纹理图中的像素值,赋给新视点图像中与被标记像素点坐标相同的像素;
7.1)给待处理图像的每一个像素点分配一个线程;
7.2)给执行第四个核函数的每一个线程块分配256个线程;
7.3)给第四个核函数设置6个参数,分别用于原参考视点图,原深度图,中间暂时保存的图像,经DIBR变换后的深度图像和视点图像,处理矩阵;
7.4)按核函数提供的方法对深度图和视点图进行处理;
所述步骤9)中,根据新视点所处的位置,对公共区域进行按比例融合;
9.1)给待处理图像的每一个像素分配一个线程;
9.2)给第五个核函数的每一个线程块分配256个线程;
9.3)给第五个核函数设置6个参数,分别用于中值滤波处理后相邻相机的参考视点图像,深度图,合成视点的视点图像,合成视点的深度图像;
9.4)利用相邻相机的参考视点图像对遮挡部分利用核函数提供的公式进行进行相互补充。
本发明的有益效果为:采用利用GPU进行并行计算的DIBR技术,实时性较好。
附图说明
图1是一种高速高质量的自由视点图像合成方法的流程图。
具体实施方式
下面结合附图对本发明做进一步说明。
参照图1,一种高速高质量的自由视点图像合成方法,包括以下步骤:
1)搭建环境;
利用英伟达公司推出的通用并行运算架构CUDA提供的应用程序编程接口API进行平台查询,获取该平台上可用的设备对象;
2)读取待处理图像和处理矩阵;
将中央处理器CPU作为主机端读取相邻摄像机的参考视点图像及深度信息图像,将读取的待处理图像保持到中央处理器CPU的内存;
读取各个摄像机的正交旋转矩阵R,大小为3×3;平移矩阵T,大小为3×1;内参矩阵Q,大小为3×4,将读取的处理矩阵保持到中央处理器CPU的内存;
3)拷贝处理矩阵R,T和Q和待处理图像;
3.1)在图形计算器GPU中申请用于保持处理矩阵,待处理图像的显存,处理后的图像和处理过程中暂时保存图像的显存;
3.2)将处理矩阵拷贝到显存的的常储存器中,将待处理图像拷贝到显存的全局储存器;
4)执行第一个核函数,核函数构建方法如下:
其中Px,Py表示点在参考视点图像中的坐标,[X,Y,Z,1]T表示世界坐标系中点的坐标,Xcam是以摄像机坐标系表示的点的点的坐标,R表示摄像机的正交旋转矩阵,C表示摄像机中心在世界坐标系中的坐标。Xcam表示经过DIBR技术变换后点的位置。
将原参考视点图像中的坐标Px,Py所在的点的像素信息复制到新图像Xcam位置点,将深度信息图中坐标Px,Py所在点的深度信息复制到新深度图Xcam位置点,生成新的参考视点的纹理图和深度信息图。
利用核函数、相邻相机的参考视点与深度图进行三维变换处理,处理方法如下;
4.1)给待处理图像的每一个像素点分配一个线程;
4.2)给执行第一个核函数的每一个线程块分配256个线程;
4.3)给第一个核函数设置9个参数,分别用于:相邻相机的参考视点图,相邻相机的深度信息图,处理后相邻相机的深度信息图,处理后相邻相机的纹理信息图,和处理矩阵;
4.4)将图形计算单元GPU全局储存器中的待处理图像缓存到局部储存器中;
4.5)从缓存到局部存储器中的待处理图像读取像素按照核函数所提供的函数公式进行处理。
5)执行第二个核函数,核函数构建方法如下:
其中,P表示图像序列,D表示参考视点的深度图,Td为自定义阈值,经实验验证,一般取最大深度值的1/4。若像素点D(x,y)满足上式,则表示像素点为重影。需要进行处理,处理过程如下:如果是重影点,对这像素点进行DIBR处理,得到Xcam,在经DIBR处理后的深度图中Xcam所在点的深度值置为0;
对三维变化后的图像进行去重叠,消除边缘处理,其过程如下;
5.1)给待处理图像的每一个像素点分配一个线程;
5.2)给执行第二个核函数的每一个线程块分配256个线程;
5.3)给第二个核函数设置5个参数,分别用于相邻相机的原深度图,相邻相机经DIBR处理过后的深度图,处理矩阵;
5.4)从缓存到储存器中相邻相机的深度图将像素与其邻近的8个像素点进行比较,利用核函数进行处理。
6)执行第三个核函数,核函数构建如下:
yk=med{xk-N-1,xk-N,xk-N+1,...,xk,...,xk+N+1};
其中y可表示处理后该点的深度值,med表示取中值的操作,xk-N-1,xk-N,xk-N+1,...,xk,...,xk+N+1表示模板内的点的深度值,将中间暂时保存的深度信息图相应位置的值用yk可的值代替;
对图像进行中值滤波处理,处理过程如下;
6.1)给待处理图像的每一个像素点分配一个线程;
6.2)给执行第三个核函数的每一个线程块分配256个线程;
6.3)给第三个核函数设置2个参数,分别用于经DIBR处理后的深度信息图,中间暂时保持的深度信息图;
6.4)从缓存到储存器中的经DIBR处理后的深度信息图依次读取3×3个像素点作为模板,按核函数所提供的公式处理。
7)执行第四个核函数,核函数构建如下:
其中Depold(u,v)表示原深度图在(u,v)点的深度值,Deptmp(u,v)表示中间暂时保存的深度图在(u,v)的深度值,(ucam,vcam)表是点(u,v)经DIBR变化后的坐标位置,Texold(ucam,vcam)表示原视点图在(ucam,vcam)位置的色彩值,Depold(ucam,vcam)表示原深度图在(ucam,vcam)位置的深度值;
对变化的像素点进行反向投影,投影到原先的参考视点处,再将初始参考纹理图中的像素值,赋给新视点图像中与被标记像素点坐标相同的像素;
7.1)给待处理图像的每一个像素点分配一个线程;
7.2)给执行第四个核函数的每一个线程块分配256个线程;
7.3)给第四个核函数设置6个参数,分别用于原参考视点图,原深度图,中间暂时保存的图像,经DIBR变换后的深度图像和视点图像,处理矩阵;
7.4)按核函数提供的方法对深度图和视点图进行处理;
8)对经第四个核函数处理后的视图图像和深度图进行中值滤波处理;
9)执行第5个核函数,核函数构建方法如下:
设定一个阈值t,用于以下步骤;
其中
其中,Il(u1,v1)表示由左边视点作为参考视点得到的新视点(u,v)处的像素值,Ir(u2,v2)表示由右边是视点作为参考视点得到。I(u,v)表示新视点图像中的像素值。O表示图像在(u,v)处有无空洞,若存在空洞则O为1。Z为新视点(u,v)在处的深度值,α由参考是视点与新视点之间的距离有关。A由下式决定:
其中T,Tl,Tr分别为新视点,左参考视点以及右参考视点在摄像机的平移量
根据新视点所处的位置,对公共区域进行按比例融合;
9.1)给待处理图像的每一个像素分配一个线程;
9.2)给第五个核函数的每一个线程块分配256个线程;
9.3)给第五个核函数设置6个参数,分别用于中值滤波处理后相邻相机的参考视点图像,深度图,合成视点的视点图像,合成视点的深度图像;
9.4)利用相邻相机的参考视点图像对遮挡部分利用核函数提供的公式进行进行相互补充;
10)将生成的新视点的图像和深度图由图形处理器GPU的显存上复制到中央处理器CPU的内存上。
11)用OPENCV的库函数中调用inpaint函数,对图像中的空洞进行修补
12)保存结果图像。

Claims (7)

1.一种高速高质量的自由视点图像合成方法,其特征在于:所述方法包括以下步骤:
1)搭建环境;
利用通用并行运算架构CUDA提供的应用程序编程接口API进行平台查询,获取该平台上可用的设备对象;
2)读取待处理图像和处理矩阵;
将中央处理器CPU作为主机端读取相邻摄像机的参考视点图像及深度信息图像,将读取的待处理图像保持到中央处理器CPU的内存;
读取各个摄像机的正交旋转矩阵R,平移矩阵T,内参矩阵Q,将读取的处理矩阵保持到中央处理器CPU的内存;
3)拷贝处理矩阵R,T和Q和待处理图像;
4)执行第一个核函数,核函数构建方法如下:
<mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>X</mi> </mtd> </mtr> <mtr> <mtd> <mi>Y</mi> </mtd> </mtr> <mtr> <mtd> <mi>Z</mi> </mtd> </mtr> </mtable> </mfenced> <mo>&amp;RightArrow;</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mi>f</mi> <mi>X</mi> <mo>+</mo> <msub> <mi>ZP</mi> <mi>x</mi> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>f</mi> <mi>Y</mi> <mo>+</mo> <msub> <mi>ZP</mi> <mi>y</mi> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mi>Z</mi> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>f</mi> </mtd> <mtd> <mrow></mrow> </mtd> <mtd> <msub> <mi>p</mi> <mi>x</mi> </msub> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mrow></mrow> </mtd> <mtd> <mi>f</mi> </mtd> <mtd> <msub> <mi>p</mi> <mi>y</mi> </msub> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mrow></mrow> </mtd> <mtd> <mrow></mrow> </mtd> <mtd> <mrow></mrow> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>X</mi> </mtd> </mtr> <mtr> <mtd> <mi>Y</mi> </mtd> </mtr> <mtr> <mtd> <mi>Z</mi> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>;</mo> </mrow>
<mrow> <msub> <mi>X</mi> <mrow> <mi>c</mi> <mi>a</mi> <mi>m</mi> </mrow> </msub> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>R</mi> </mtd> <mtd> <mrow> <mo>-</mo> <mi>R</mi> <mi>C</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <msup> <mn>0</mn> <mi>T</mi> </msup> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>X</mi> </mtd> </mtr> <mtr> <mtd> <mi>Y</mi> </mtd> </mtr> <mtr> <mtd> <mi>Z</mi> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>;</mo> </mrow>
其中Px,Py表示点在参考视点图像中的坐标,[X,Y,Z,1]T表示世界坐标系中点的坐标,Xcam是以摄像机坐标系表示的点的点的坐标,R表示摄像机的正交旋转矩阵,C表示摄像机中心在世界坐标系中的坐标,Xcam表示经过DIBR技术变换后点的位置;
将原参考视点图像中的坐标Px,Py所在的点的像素信息复制到新图像Xcam位置点,将深度信息图中坐标Px,Py所在点的深度信息复制到新深度图Xcam位置点,生成新的参考视点的纹理图和深度信息图;
5)执行第二个核函数,核函数构建方法如下:
<mrow> <mo>&amp;ForAll;</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>&amp;Element;</mo> <mi>p</mi> <mo>,</mo> <munderover> <mo>&amp;Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mo>-</mo> <mn>1</mn> </mrow> <mn>1</mn> </munderover> <munderover> <mo>&amp;Sigma;</mo> <mrow> <mi>j</mi> <mo>=</mo> <mo>-</mo> <mn>1</mn> </mrow> <mn>1</mn> </munderover> <mi>D</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>+</mo> <mi>i</mi> <mo>,</mo> <mi>y</mi> <mo>+</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>-</mo> <mn>9</mn> <mo>&amp;times;</mo> <mi>D</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>&gt;</mo> <msub> <mi>T</mi> <mi>d</mi> </msub> </mrow>
其中,P表示图像序列,D表示参考视点的深度图,Td为自定义阈值,经实验验证,一般取最大深度值的1/4,若像素点D(x,y)满足上式,则表示像素点为重影,需要进行处理,处理过程如下:如果是重影点,对这像素点进行DIBR处理,得到Xcam,在经DIBR处理后的深度图中Xcam所在点的深度值置为0;
6)执行第三个核函数,核函数构建如下:
yk=med{xk-N-1,xk-N,xk-N+1,...,xk,...,xk+N+1};
其中y可表示处理后该点的深度值,med表示取中值的操作,xk-N-1,xk-N,xk-N+1,...,xk,...,xk+N+1表示模板内的点的深度值,将中间暂时保存的深度信息图相应位置的值用yk可的值代替;
(7)执行第四个核函数,核函数构建如下:
<mrow> <msub> <mi>Tex</mi> <mrow> <mi>o</mi> <mi>l</mi> <mi>d</mi> </mrow> </msub> <mrow> <mo>(</mo> <msub> <mi>u</mi> <mrow> <mi>c</mi> <mi>a</mi> <mi>m</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>v</mi> <mrow> <mi>c</mi> <mi>a</mi> <mi>m</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>Tex</mi> <mrow> <mi>o</mi> <mi>l</mi> <mi>d</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>u</mi> <mo>,</mo> <mi>v</mi> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mo>(</mo> <msub> <mi>Dep</mi> <mrow> <mi>t</mi> <mi>m</mi> <mi>p</mi> </mrow> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>&amp;NotEqual;</mo> <msub> <mi>Dep</mi> <mrow> <mi>o</mi> <mi>l</mi> <mi>d</mi> </mrow> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>)</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>Tex</mi> <mrow> <mi>t</mi> <mi>m</mi> <mi>p</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>u</mi> <mo>,</mo> <mi>v</mi> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mo>(</mo> <msub> <mi>Dep</mi> <mrow> <mi>t</mi> <mi>m</mi> <mi>p</mi> </mrow> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>=</mo> <msub> <mi>Dep</mi> <mrow> <mi>o</mi> <mi>l</mi> <mi>d</mi> </mrow> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>)</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>;</mo> </mrow>
<mrow> <msub> <mi>Dep</mi> <mrow> <mi>o</mi> <mi>l</mi> <mi>d</mi> </mrow> </msub> <mrow> <mo>(</mo> <msub> <mi>u</mi> <mrow> <mi>c</mi> <mi>a</mi> <mi>m</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>v</mi> <mrow> <mi>c</mi> <mi>a</mi> <mi>m</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>D</mi> <mo>&amp;Element;</mo> <msub> <mi>p</mi> <mrow> <mi>o</mi> <mi>l</mi> <mi>d</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>u</mi> <mo>,</mo> <mi>v</mi> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mo>(</mo> <msub> <mi>Dep</mi> <mrow> <mi>t</mi> <mi>m</mi> <mi>p</mi> </mrow> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>&amp;NotEqual;</mo> <msub> <mi>Dep</mi> <mrow> <mi>o</mi> <mi>l</mi> <mi>d</mi> </mrow> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>)</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>D</mi> <mo>&amp;Element;</mo> <msub> <mi>p</mi> <mrow> <mi>t</mi> <mi>m</mi> <mi>p</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>u</mi> <mo>,</mo> <mi>v</mi> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mo>(</mo> <msub> <mi>Dep</mi> <mrow> <mi>t</mi> <mi>m</mi> <mi>p</mi> </mrow> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>=</mo> <msub> <mi>Dep</mi> <mrow> <mi>o</mi> <mi>l</mi> <mi>d</mi> </mrow> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>)</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>;</mo> </mrow>
其中,Depold(u,v)表示原深度图在(u,v)点的深度值,Deptmp(u,v)表示中间暂时保存的深度图在(u,v)的深度值,(ucam,vcam)表是点(u,v)经DIBR变化后的坐标位置,Texold(ucam,vcam)表示原视点图在(ucam,vcam)位置的色彩值,Depold(ucam,vcam)表示原深度图在(ucam,vcam)位置的深度值;
8)对经第四个核函数处理后的视图图像和深度图进行中值滤波处理;
9)执行第5个核函数,核函数构建方法如下:
设定一个阈值t,用于以下步骤;
<mrow> <mi>I</mi> <mrow> <mo>(</mo> <mi>u</mi> <mo>,</mo> <mi>v</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>&amp;alpha;</mi> <mo>)</mo> <msub> <mi>I</mi> <mi>l</mi> </msub> <mo>(</mo> <msub> <mi>u</mi> <mn>1</mn> </msub> <mo>,</mo> <msub> <mi>v</mi> <mn>1</mn> </msub> <mo>)</mo> <mo>+</mo> <msub> <mi>&amp;alpha;I</mi> <mi>r</mi> </msub> <mo>(</mo> <msub> <mi>u</mi> <mn>2</mn> </msub> <mo>,</mo> <msub> <mi>v</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> </mtd> <mtd> <mrow> <mo>(</mo> <msub> <mi>O</mi> <mi>l</mi> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>=</mo> <mn>0</mn> <mo>,</mo> <msub> <mi>O</mi> <mi>r</mi> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>=</mo> <mn>0</mn> <mo>)</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>I</mi> <mi>l</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>u</mi> <mn>1</mn> </msub> <mo>,</mo> <msub> <mi>v</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mo>(</mo> <msub> <mi>O</mi> <mi>l</mi> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>=</mo> <mn>0</mn> <mo>,</mo> <msub> <mi>O</mi> <mi>r</mi> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>=</mo> <mn>1</mn> <mo>)</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>I</mi> <mi>r</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>u</mi> <mn>2</mn> </msub> <mo>,</mo> <msub> <mi>v</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mo>(</mo> <msub> <mi>O</mi> <mi>l</mi> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>=</mo> <mn>1</mn> <mo>,</mo> <msub> <mi>O</mi> <mi>r</mi> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>=</mo> <mn>0</mn> <mo>)</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mo>(</mo> <msub> <mi>O</mi> <mi>l</mi> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>=</mo> <mn>1</mn> <mo>,</mo> <msub> <mi>O</mi> <mi>r</mi> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>=</mo> <mn>1</mn> <mo>)</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>
其中
<mrow> <msub> <mi>O</mi> <mi>r</mi> </msub> <mrow> <mo>(</mo> <mi>u</mi> <mo>,</mo> <mi>v</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mrow> <mo>(</mo> <msub> <mi>Z</mi> <mi>l</mi> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>&lt;</mo> <mi>t</mi> <mo>)</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mo>(</mo> <msub> <mi>Z</mi> <mi>l</mi> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>&gt;</mo> <mi>t</mi> <mo>)</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>
<mrow> <msub> <mi>O</mi> <mi>r</mi> </msub> <mrow> <mo>(</mo> <mi>u</mi> <mo>,</mo> <mi>v</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mrow> <mo>(</mo> <msub> <mi>Z</mi> <mi>r</mi> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>&lt;</mo> <mi>t</mi> <mo>)</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mo>(</mo> <msub> <mi>Z</mi> <mi>r</mi> </msub> <mo>(</mo> <mrow> <mi>u</mi> <mo>,</mo> <mi>v</mi> </mrow> <mo>)</mo> <mo>&gt;</mo> <mi>t</mi> <mo>)</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>
其中,Il(u1,v1)表示由左边视点作为参考视点得到的新视点(u,v)处的像素值,Ir(u2,v2)表示由右边是视点作为参考视点得到。I(u,v)表示新视点图像中的像素值。O表示图像在(u,v)处有无空洞,若存在空洞则O为1。Z为新视点(u,v)在处的深度值,α由参考是视点与新视点之间的距离有关,A由下式决定:
<mrow> <mi>&amp;alpha;</mi> <mo>=</mo> <mfrac> <mrow> <mo>|</mo> <mi>T</mi> <mo>-</mo> <msub> <mi>T</mi> <mi>l</mi> </msub> <mo>|</mo> </mrow> <mrow> <mo>|</mo> <mi>T</mi> <mo>-</mo> <msub> <mi>T</mi> <mi>l</mi> </msub> <mo>|</mo> <mo>+</mo> <mo>|</mo> <mi>T</mi> <mo>-</mo> <msub> <mi>T</mi> <mi>r</mi> </msub> <mo>|</mo> </mrow> </mfrac> </mrow>
其中T,Tl,Tr分别为新视点,左参考视点以及右参考视点在摄像机的平移量;
10)将生成的新视点的图像和深度图由图形处理器GPU的显存上复制到中央处理器CPU的内存上;
11)用OPENCV的库函数中调用inpaint函数,对图像中的空洞进行修补;
12)保存结果图像。
2.如权利要求1所述的一种高速高质量的自由视点图像合成方法,其特征在于:所述步骤3)中,拷贝处理矩阵R,T和Q和待处理图像的过程如下:
3.1)在图形计算器GPU中申请用于保持处理矩阵,待处理图像的显存,处理后的图像和处理过程中暂时保存图像的显存;
3.2)将处理矩阵拷贝到显存的的常储存器中,将待处理图像拷贝到显存的全局储存器。
3.如权利要求1或2所述的一种高速高质量的自由视点图像合成方法,其特征在于:所述步骤4)中,利用核函数、相邻相机的参考视点与深度图进行三维变换处理,处理方法如下;
4.1)给待处理图像的每一个像素点分配一个线程;
4.2)给执行第一个核函数的每一个线程块分配256个线程;
4.3)给第一个核函数设置9个参数,分别用于:相邻相机的参考视点图,相邻相机的深度信息图,处理后相邻相机的深度信息图,处理后相邻相机的纹理信息图,和处理矩阵;
4.4)将图形计算单元GPU全局储存器中的待处理图像缓存到局部储存器中;
4.5)从缓存到局部存储器中的待处理图像读取像素按照核函数所提供的函数公式进行处理。
4.如权利要求1或2所述的一种高速高质量的自由视点图像合成方法,其特征在于:所述步骤5)中,对三维变化后的图像进行去重叠,消除边缘处理,其过程如下;
5.1)给待处理图像的每一个像素点分配一个线程;
5.2)给执行第二个核函数的每一个线程块分配256个线程;
5.3)给第二个核函数设置5个参数,分别用于相邻相机的原深度图,相邻相机经DIBR处理过后的深度图,处理矩阵;
5.4)从缓存到储存器中相邻相机的深度图将像素与其邻近的8个像素点进行比较,利用核函数进行处理。
5.如权利要求1或2所述的一种高速高质量的自由视点图像合成方法,其特征在于:所述步骤6)中,对图像进行中值滤波处理,处理过程如下;
6.1)给待处理图像的每一个像素点分配一个线程;
6.2)给执行第三个核函数的每一个线程块分配256个线程;
6.3)给第三个核函数设置2个参数,分别用于经DIBR处理后的深度信息图,中间暂时保持的深度信息图;
6.4)从缓存到储存器中的经DIBR处理后的深度信息图依次读取3×3个像素点作为模板,按核函数所提供的公式处理。
6.如权利要求1或2所述的一种高速高质量的自由视点图像合成方法,其特征在于:所述步骤7)中,对变化的像素点进行反向投影,投影到原先的参考视点处,再将初始参考纹理图中的像素值,赋给新视点图像中与被标记像素点坐标相同的像素;
7.1)给待处理图像的每一个像素点分配一个线程;
7.2)给执行第四个核函数的每一个线程块分配256个线程;
7.3)给第四个核函数设置6个参数,分别用于原参考视点图,原深度图,中间暂时保存的图像,经DIBR变换后的深度图像和视点图像,处理矩阵;
7.4)按核函数提供的方法对深度图和视点图进行处理。
7.如权利要求1或2所述的一种高速高质量的自由视点图像合成方法,其特征在于:所述步骤9)中,根据新视点所处的位置,对公共区域进行按比例融合;
9.1)给待处理图像的每一个像素分配一个线程;
9.2)给第五个核函数的每一个线程块分配256个线程;
9.3)给第五个核函数设置6个参数,分别用于中值滤波处理后相邻相机的参考视点图像,深度图,合成视点的视点图像,合成视点的深度图像;
9.4)利用相邻相机的参考视点图像对遮挡部分利用核函数提供的公式进行进行相互补充。
CN201611231811.8A 2016-12-28 2016-12-28 一种高速高质量的自由视点图像合成方法 Active CN107509067B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611231811.8A CN107509067B (zh) 2016-12-28 2016-12-28 一种高速高质量的自由视点图像合成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611231811.8A CN107509067B (zh) 2016-12-28 2016-12-28 一种高速高质量的自由视点图像合成方法

Publications (2)

Publication Number Publication Date
CN107509067A true CN107509067A (zh) 2017-12-22
CN107509067B CN107509067B (zh) 2019-07-30

Family

ID=60679348

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611231811.8A Active CN107509067B (zh) 2016-12-28 2016-12-28 一种高速高质量的自由视点图像合成方法

Country Status (1)

Country Link
CN (1) CN107509067B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111385554A (zh) * 2020-03-28 2020-07-07 浙江工业大学 一种自由视点视频的高图像质量虚拟视点绘制方法
CN112738495A (zh) * 2019-10-28 2021-04-30 阿里巴巴集团控股有限公司 虚拟视点图像生成方法、系统、电子设备及存储介质
CN113545034A (zh) * 2019-03-08 2021-10-22 交互数字Vc控股公司 深度图处理
WO2022002181A1 (zh) * 2020-07-03 2022-01-06 阿里巴巴集团控股有限公司 自由视点视频重建方法及播放处理方法、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101312540A (zh) * 2008-07-03 2008-11-26 浙江大学 基于深度和遮挡信息的虚拟视点合成方法
CN102307312A (zh) * 2011-08-31 2012-01-04 四川虹微技术有限公司 一种对dibr技术生成的目标图像进行空洞填充的方法
US20140092086A1 (en) * 2012-09-28 2014-04-03 JVC Kenwood Corporation Multi-viewpoint image generation apparatus and method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101312540A (zh) * 2008-07-03 2008-11-26 浙江大学 基于深度和遮挡信息的虚拟视点合成方法
CN102307312A (zh) * 2011-08-31 2012-01-04 四川虹微技术有限公司 一种对dibr技术生成的目标图像进行空洞填充的方法
US20140092086A1 (en) * 2012-09-28 2014-04-03 JVC Kenwood Corporation Multi-viewpoint image generation apparatus and method

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113545034A (zh) * 2019-03-08 2021-10-22 交互数字Vc控股公司 深度图处理
US12008776B2 (en) 2019-03-08 2024-06-11 Interdigital Vc Holdings, Inc. Depth map processing
CN112738495A (zh) * 2019-10-28 2021-04-30 阿里巴巴集团控股有限公司 虚拟视点图像生成方法、系统、电子设备及存储介质
WO2021083174A1 (zh) * 2019-10-28 2021-05-06 阿里巴巴集团控股有限公司 虚拟视点图像生成方法、系统、电子设备及存储介质
CN111385554A (zh) * 2020-03-28 2020-07-07 浙江工业大学 一种自由视点视频的高图像质量虚拟视点绘制方法
WO2022002181A1 (zh) * 2020-07-03 2022-01-06 阿里巴巴集团控股有限公司 自由视点视频重建方法及播放处理方法、设备及存储介质

Also Published As

Publication number Publication date
CN107509067B (zh) 2019-07-30

Similar Documents

Publication Publication Date Title
CN113706714B (zh) 基于深度图像和神经辐射场的新视角合成方法
CN111243093B (zh) 三维人脸网格的生成方法、装置、设备及存储介质
KR101199475B1 (ko) 3차원 모델 생성 방법 및 장치
Zhang et al. Text-guided neural image inpainting
CN103810685B (zh) 一种深度图的超分辨率处理方法
CN103021017B (zh) 基于gpu加速的三维场景重建方法
Loop et al. Real-time high-resolution sparse voxelization with application to image-based modeling
CN104616345B (zh) 一种基于八叉树森林压缩的三维体素存取方法
CN111243071A (zh) 实时三维人体重建的纹理渲染方法、系统、芯片、设备和介质
CN106023303B (zh) 一种基于轮廓有效性提高三维重建点云稠密程度的方法
CN107509067A (zh) 一种高速高质量的自由视点图像合成方法
CN104966318B (zh) 具有图像叠加和图像特效功能的增强现实方法
CN105453139A (zh) 用于3d表面重建的稀疏gpu体素化
CN109410133B (zh) 一种基于3dmm的人脸纹理修复方法
CN109147025B (zh) 一种面向rgbd三维重建的纹理生成方法
CN111080776B (zh) 人体动作三维数据采集和复现的处理方法及系统
CN106875431A (zh) 具有移动预测的图像追踪方法及扩增实境实现方法
CN106997617A (zh) 混合现实虚拟呈现方法及装置
CN106023147B (zh) 一种基于gpu的快速提取线阵遥感影像中dsm的方法及装置
Wu et al. Neuralhdhair: Automatic high-fidelity hair modeling from a single image using implicit neural representations
CN109791704A (zh) 用于自由运行fvv应用的基于多层uv映射的纹理渲染
CN114445431B (zh) 一种医学三维影像任意切割的方法与装置
CN110580720A (zh) 一种基于全景图的相机位姿估计方法
CN107292956A (zh) 一种基于曼哈顿假设的场景重建方法
CN104463959A (zh) 一种生成立方体环境贴图的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Feng Yuanjing

Inventor after: Huang Chenchen

Inventor after: Li Jiajing

Inventor after: Huang Liangpeng

Inventor after: Chen Feng

Inventor after: Pan Shanwei

Inventor after: Yang Yong

Inventor after: Hu Jianqiao

Inventor after: Kong Deping

Inventor after: Chen Hong

Inventor before: Feng Yuanjing

Inventor before: Li Jiajing

Inventor before: Huang Liangpeng

Inventor before: Chen Feng

Inventor before: Xu Zenan

Inventor before: Ye Jiasheng

Inventor before: Chen Wenzhou

Inventor before: Li Dingbang

Inventor before: Wang Zenan

GR01 Patent grant
GR01 Patent grant