CN103440660B - 一种基于gpu的集成成像微图像阵列快速生成方法 - Google Patents

一种基于gpu的集成成像微图像阵列快速生成方法 Download PDF

Info

Publication number
CN103440660B
CN103440660B CN201310394195.8A CN201310394195A CN103440660B CN 103440660 B CN103440660 B CN 103440660B CN 201310394195 A CN201310394195 A CN 201310394195A CN 103440660 B CN103440660 B CN 103440660B
Authority
CN
China
Prior art keywords
micro
array
program
cuda
direct3d
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.)
Active
Application number
CN201310394195.8A
Other languages
English (en)
Other versions
CN103440660A (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.)
Sichuan University
Original Assignee
Sichuan University
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 Sichuan University filed Critical Sichuan University
Priority to CN201310394195.8A priority Critical patent/CN103440660B/zh
Publication of CN103440660A publication Critical patent/CN103440660A/zh
Application granted granted Critical
Publication of CN103440660B publication Critical patent/CN103440660B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

本发明提出一种基于GPU的集成成像微图像阵列快速生成方法,该方法包括Direct3D程序中建立虚拟相机阵列获取视差图像阵列和CUDA程序实现视差图像阵列快速转换为微图像阵列两个过程。基于计算机图形库Direct3D建立简化的虚拟相机阵列结构对虚拟场景进行渲染,提高生成微图像阵列所有信息的效率;基于CUDA并行计算架构的特性完成微图像阵列的快速生成,且几乎无需通过计算机系统总线在CPU与GPU中进行数据的传输,因此进一步提高了生成微图像阵列的效率。通过本发明的方法,其生成集成成像微图像阵列的速度比基于CPU的实现提升了数十倍,乃至数百倍,达到了实时动态集成成像3D显示的要求。

Description

一种基于GPU的集成成像微图像阵列快速生成方法
技术领域
本发明涉及集成成像3D(三维)显示技术,更具体地说,本发明涉及一种基于GPU(图形处理器)的集成成像微图像阵列快速生成方法。
背景技术
集成成像是一种重要的3D显示技术,观看者可在不佩戴助视眼镜时观看到立体图像。随着计算机技术的迅速发展,人们广泛地使用计算机模拟和处理各种光学过程,并衍生出计算机集成成像技术。该技术首先采用3D建模软件建立3D场景模型,然后用计算机程序建立相机阵列来模拟微透镜阵列的成像过程,从而获取集成成像的片源即微图像阵列。
多视点渲染计算机集成成像是一种用一个相机模拟一个透镜元来获取图像元的技术,如附图1所示。该技术通过OpenGL或Direct3D计算机图形库的3D渲染流水线来实现对3D场景的渲染以获取图像元,最终通过拼接所有的图像元得到微图像阵列。由于集成成像中透镜元的数量巨大,且对3D虚拟场景的渲染次数等于透镜元的数量,所以计算机渲染过程将耗费大量的时间,难以满足实时动态计算机集成成像的要求。
CUDA(统一计算设备架构)是NVIDIA公司的并行计算架构。该架构通过充分利用GPU的高性能并行运算能力,可大幅提升特定算法的计算效率。CUDA提供了与Direct3D和OpenGL这两种计算机图形库进行互操作的API(应用程序接口),充分利用显卡自身的高性能并行运算能力对Direct3D或OpenGL中的顶点资源、纹理资源、表面资源等进行后期处理,提高了程序的运行效率。
发明内容
本发明提出一种基于GPU的集成成像微图像阵列快速生成方法,该方法包括Direct3D程序中建立虚拟相机阵列而获取视差图像阵列和CUDA程序实现视差图像阵列转换为微图像阵列两个过程。
所述Direct3D程序中建立虚拟相机阵列而获取视差图像阵列过程,由Direct3D程序的渲染流水线建立虚拟相机阵列对3D虚拟场景进行渲染,获取的视差图像阵列的图像个数远远小于微图像阵列所需图像元的个数,且无需对获取的视差图像进行二次图像处理,即可获取具有正、负视差的视差图像。
所述虚拟相机阵列,如附图2所示,采用会聚式立体相机结构,包含M×N个相机,各相机在水平和垂直方向上等间距排列,相邻相机的间距为D,各相机中心位于同一平面上,且各相机有共同目标点O,各相机均采用正交投影几何模型对3D虚拟场景进行渲染,渲染的视差图像分辨率均为X×Y,确定各相机目标点O所在的参考平面与相机阵列所在平面的距离为L。确定所需微透镜阵列的参数,包含M′×N′个透镜元,透镜元焦距为f,透镜元节距为p;所需微图像阵列也包含M′×N′个图像元,图像元分辨率为r×r
优选地,为了满足虚拟相机阵列渲染的视差图像阵列在转换为微图像阵列时不丢失信息,相机阵列包含的相机个数M×N、视差图像的分辨率X×Y以及相邻相机的间距D需满足下式:
(1)
(2)
(3)
(4)
(5)
所述CUDA程序实现视差图像阵列转换为微图像阵列的过程如附图3所示,该过程称为像素映射过程,它是基于CUDA并行计算架构来实现的。I(m,n) m′,n′ 表示第m行第n列视差图像上第m′行第n′列的像素,该像素映射到微图像阵列的第i行第j列的像素位置上,由I′(i,j)表示。像素映射过程的数学关系为:
(6)
其中,
(7)
(8)
式中mnm′n′是循环变量,m在0-(M-1)范围内,n在0-(N-1)范围内,m′在0-(M′-1)范围内,n′在0-(N′-1)范围内循环取值。
所述基于CUDA并行计算架构实现像素映射过程分为如下三个步骤:
第一,在CUDA程序中注册Direct3D程序中生成的含有视差图像信息的纹理资源和用于存储微图像阵列信息的目标纹理资源,并基于Direct3D与CUDA互操作API将Direct3D程序中的资源映射至CUDA内存地址空间。
第二,在CUDA程序中实现并行运算的核函数,核函数的线程结构如附图4所示,其划分为a×b个线程块,每个线程块又由c×d个线程组成,其中c=ceil(M′/a),d=ceil(N′/b),ceil为向上取整函数符号。依次将各视差图像的所有像素读入纹理存储器并进行线程分配,所有线程均并行地执行视差图像中一个像素至目标纹理资源中对应像素的映射过程,即所述式(6)中m′n′的循环取值过程被并行计算所替代,最终就能将视差图像阵列的所有像素映射至目标纹理资源上。
第三,取消Direct3D程序中的资源至CUDA内存地址空间的映射,为下一次像素映射过程做准备。
本发明中基于计算机图形库Direct3D建立简化的虚拟相机阵列结构对虚拟场景进行渲染,提高了生成微图像阵列所有信息的效率;基于CUDA并行计算架构的特性完成微图像阵列的快速生成,且几乎无需通过计算机系统总线在CPU与GPU中进行数据的传输,因此进一步提高了生成微图像阵列的效率。通过本发明的方法,其生成集成成像微图像阵列的速度比基于CPU的速度提升了数十倍,乃至数百倍,达到了实时动态集成成像3D显示的要求。
附图说明
附图1为采用多视点渲染技术的虚拟相机阵列获取微图像阵列的示意图。
附图2为会聚式虚拟相机阵列获取视差图像阵列的示意图。
附图3为本发明提出的视差图像阵列转换为微图像阵列的示意图。
附图4为CUDA核函数的线程结构的示意图。
上述附图中的图示标号为:
1.平行式虚拟相机阵列,2.3D虚拟场景,3.M×N幅视差图像,4.会聚式虚拟相机阵列,5.第m行第n列的视差图像,6.微图像阵列,7.第mn列的视差图像上的第m’列第n’行的像素I(m,n) m′,n′ ,8.微图像阵列上第i行第j列的像素I′(i,j),9.某一个像素的映射过程,10.CUDA核函数的线程结构,11.a×b个线程块,12.c×d个线程。
应该理解上述附图只是示意性的,并没有按比例绘制。
具体实施方式
下面详细说明利用本发明一种基于GPU的集成成像微图像阵列快速生成方法的一个典型实施例,对本发明进行进一步的具体描述。有必要在此指出的是,以下实施例只用于本发明做进一步的说明,不能理解为对本发明保护范围的限制,该领域技术熟练人员根据上述本发明内容对本发明做出一些非本质的改进和调整,仍属于本发明的保护范围。
在本实施实例中采用NVIDIA公司生产的型号为GeForceGTX560的GPU,计算机图形库Direct3D的版本为9.0,CUDA工具包版本为5.0。确定所需微图像阵列包含196×110个图像元,图像元的分辨率为13×13;微透镜阵列也包含196×110个透镜元,透镜元的焦距为f=3mm,图像元和透镜元的节距相等,都为p=1.27mm。所采用虚拟3D场景中包含5462个顶点和10868个边,在3D虚拟场景中选择一个参考平面,该参考平面与相机阵列的距离为L。根据所需的凹凸显示效果来确定参考平面与相机阵列的距离L=1000mm,拍摄时,3D虚拟场景中与相机阵列的距离小于1000mm的物体,在显示时将浮出显示设备外;3D虚拟场景中与相机阵列的距离大于1000mm的物体,在显示时将凹进显示设备里。根据式(1)、(2)、(3)、(4)和(5)计算结果,通过Direct3D程序在显存中建立13×13幅分辨率为196×110的纹理资源,且均设置为渲染目标,并依次建立13×13个相机,各相机光轴会聚于参考平面的一点,各相机等间距排列,相邻相机的间距为D=32.56mm。另外,在显存中建立一幅分辨率为2548×1430的纹理资源,作为像素映射处理过程中的映射目标纹理。相机阵列中的每个相机都采用正交投影几何模型,依次渲染至目标纹理资源后共得到13×13幅包含视差信息的纹理资源,每幅纹理的分辨率等于所需微图像阵列的图像元个数196×110。
基于Direct3D与CUDA互操作API在CUDA程序中依次注册Direct3D程序中含有视差图像信息的纹理资源和建立的像素映射目标纹理资源,并映射至CUDA内存地址空间中。完成上述过程后,在CUDA程序中建立核函数,可以通过调用核函数读取和写入映射到其地址空间的内存。核函数的线程结构划分为6×4个线程块,其中每个线程块由32×32个线程组成。I(m,n) m′,n′ 表示对应于第m行第n列相机渲染后的纹理资源上第m′行第n′列的像素值,将mnm′n′作为核函数的入口参数。I′(i,j)表示像素映射目标纹理资源中第i行第j列的像素值。核函数中并行完成每个纹理资源的像素映射过程,其数学关系为,其中,,式中mnm′n′是循环变量,r为常量,分别将m在1-13范围内,n在1-13范围内,m′在1-196范围内,n′在1-110范围内取值,r取值为13。至此完成一幅微图像阵列的生成,取消Direct3D程序中的资源至CUDA内存地址空间的映射,为下一次像素映射过程做准备。
至此,本发明一种基于GPU的集成成像微图像阵列快速生成方法,生成一幅集成成像微图像阵列所消耗的时间为16.04毫秒,帧率为62.35赫兹,与基于CPU的实现相比,该方法的加速比达到了86倍,并达到实时动态集成成像3D显示的要求。

Claims (1)

1.一种基于GPU的集成成像微图像阵列的快速生成方法,其特征在于,该方法包括Direct3D程序中建立虚拟相机阵列获取视差图像阵列和CUDA程序实现视差图像阵列转换为微图像阵列两个过程;
所述Direct3D程序中建立虚拟相机阵列而获取视差图像阵列过程,其特征在于,由Direct3D程序的渲染流水线建立虚拟相机阵列对3D虚拟场景进行渲染,获取的视差图像阵列的图像个数远远小于微图像阵列所需图像元的个数,且无需对获取的视差图像进行二次图像处理,即可获取具有正、负视差的视差图像;所述虚拟相机阵列,采用会聚式立体相机结构,包含M×N个相机,各相机在水平和垂直方向上等间距排列,相邻相机的间距为D,各相机中心位于同一平面上,且各相机有共同目标点O,各相机均采用正交投影几何模型对3D虚拟场景进行渲染,渲染的视差图像分辨率均为X×Y,确定各相机目标点O所在的参考平面与相机阵列所在平面的距离为L;确定所需微透镜阵列的参数,包含M′×N′个透镜元,透镜元焦距为f,透镜元节距为p;所需微图像阵列也包含M′×N′个图像元,图像元分辨率为r×r;相机阵列包含的相机个数M×N、视差图像的分辨率X×Y以及相邻相机的间距D需满足,M=rN=rX=M'Y=N'D=pL/rf
所述CUDA程序实现视差图像阵列转换为微图像阵列过程,其特征在于,它是基于CUDA的并行计算架构来实现的;I(m,n) m′,n′ 表示第m行第n列视差图像上第m′行第n′列的像素,该像素映射到微图像阵列的第i行第j列的像素位置上,由I′(i,j)表示;像素映射过程的数学关系为I′(i,j)=I(m,n) m′,n′ ,其中i=(m'+1)×r-m-1,j=(n'+1)×r-n-1,式中mnm′n′是循环变量,m在0-(M-1)范围内,n在0-(N-1)范围内,m′在0-(M′-1)范围内,n′在0-(N′-1)范围内循环取值;
所述CUDA程序实现视差图像阵列转换为微图像阵列过程为三个步骤:第一,在CUDA程序中注册Direct3D程序中生成的含有视差图像信息的纹理资源和用于存储微图像阵列信息的目标纹理资源,并基于Direct3D与CUDA互操作API将Direct3D程序中的资源映射至CUDA内存地址空间;第二,在CUDA程序中实现并行运算的核函数,核函数的线程结构划分为a×b个线程块,每个线程块又由c×d个线程组成,其中c=ceil(M′/a),d=ceil(N′/b),ceil为向上取整函数;依次将各视差图像的所有像素读入纹理存储器并进行线程分配,所有线程均并行地执行视差图像中一个像素至目标纹理资源中对应像素的映射过程,最终就能将视差图像阵列的所有像素映射至目标纹理资源上;第三,取消Direct3D程序中的资源至CUDA内存地址空间的映射,为下一次像素映射过程做准备。
CN201310394195.8A 2013-09-03 2013-09-03 一种基于gpu的集成成像微图像阵列快速生成方法 Active CN103440660B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310394195.8A CN103440660B (zh) 2013-09-03 2013-09-03 一种基于gpu的集成成像微图像阵列快速生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310394195.8A CN103440660B (zh) 2013-09-03 2013-09-03 一种基于gpu的集成成像微图像阵列快速生成方法

Publications (2)

Publication Number Publication Date
CN103440660A CN103440660A (zh) 2013-12-11
CN103440660B true CN103440660B (zh) 2016-03-30

Family

ID=49694353

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310394195.8A Active CN103440660B (zh) 2013-09-03 2013-09-03 一种基于gpu的集成成像微图像阵列快速生成方法

Country Status (1)

Country Link
CN (1) CN103440660B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9979952B2 (en) 2013-12-13 2018-05-22 Htc Corporation Method of creating a parallax video from a still image
CN103796002B (zh) * 2014-01-21 2016-01-13 四川大学 基于正交投影的一维集成成像3d拍摄方法
CN104376588B (zh) * 2014-11-25 2017-08-29 四川大学 一种集成成像高分辨率正交图的生成方法
CN104360319A (zh) * 2014-12-03 2015-02-18 中国电子科技集团公司第二十八研究所 一种基于cuda平台的雷达b显处理方法
CN104519341B (zh) * 2015-01-08 2016-08-31 四川大学 一种任意倾斜角度的集成成像微图像阵列的生成方法
CN104702971B (zh) * 2015-03-24 2018-02-06 西安邮电大学 相机阵列高动态范围成像方法
CN104819774A (zh) * 2015-04-22 2015-08-05 哈尔滨工业大学 一种基于微透镜阵列的火焰光场探测泛尺度分析方法
KR102444240B1 (ko) * 2015-07-29 2022-09-16 삼성전자주식회사 텍스쳐 처리 방법 및 장치
CN105117368A (zh) * 2015-09-18 2015-12-02 浪潮(北京)电子信息产业有限公司 基于gpu的三维纵横波分离的弹性波方程的模拟方法及系统
CN105578170B (zh) * 2016-01-04 2017-07-25 四川大学 一种基于深度数据的集成成像微图像阵列方向性映射方法
CN106657966B (zh) * 2016-12-29 2018-10-30 四川大学 一种基于cpu多线程的集成成像3d片源快速生成方法
CN110191331B (zh) * 2018-02-22 2022-01-04 深圳市华胜软件技术有限公司 一种真三维裸眼3d图像合成方法、存储介质及合成装置
CN108648257B (zh) * 2018-04-09 2020-12-29 腾讯科技(深圳)有限公司 全景画面的获取方法、装置、存储介质及电子装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7782334B1 (en) * 2005-09-13 2010-08-24 Nvidia Corporation Pixel shader-based data array resizing
CN102254342A (zh) * 2011-05-30 2011-11-23 四川大学 一种快速计算机集成成像方法
CN102300113A (zh) * 2011-09-03 2011-12-28 四川大学 基于稀疏摄像机阵列的集成成像微图像阵列生成方法
CN102708009A (zh) * 2012-04-19 2012-10-03 华为技术有限公司 一种基于cuda实现多任务共享gpu的方法
CN102821295A (zh) * 2012-09-03 2012-12-12 四川大学 一种会聚式集成成像拍摄方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7782334B1 (en) * 2005-09-13 2010-08-24 Nvidia Corporation Pixel shader-based data array resizing
CN102254342A (zh) * 2011-05-30 2011-11-23 四川大学 一种快速计算机集成成像方法
CN102300113A (zh) * 2011-09-03 2011-12-28 四川大学 基于稀疏摄像机阵列的集成成像微图像阵列生成方法
CN102708009A (zh) * 2012-04-19 2012-10-03 华为技术有限公司 一种基于cuda实现多任务共享gpu的方法
CN102821295A (zh) * 2012-09-03 2012-12-12 四川大学 一种会聚式集成成像拍摄方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种快速计算机集成成像;邓欢等;《四川大学学报(工程科学版)》;20121130;第133-136页 *

Also Published As

Publication number Publication date
CN103440660A (zh) 2013-12-11

Similar Documents

Publication Publication Date Title
CN103440660B (zh) 一种基于gpu的集成成像微图像阵列快速生成方法
EP3057066B1 (en) Generation of three-dimensional imagery from a two-dimensional image using a depth map
CN108174184A (zh) 快速集成图像生成方法及与用户交互的裸眼三维显示系统
Jones et al. Interpolating vertical parallax for an autostereoscopic three-dimensional projector array
CN113643414B (zh) 一种三维图像生成方法、装置、电子设备及存储介质
Matsubara et al. Light field display simulation for light field quality assessment
CN108573521B (zh) 基于cuda并行计算框架的实时交互式裸眼3d显示方法
US20130027389A1 (en) Making a two-dimensional image into three dimensions
WO2012094076A1 (en) Morphological anti-aliasing (mlaa) of a re-projection of a two-dimensional image
CN103632390A (zh) 一种利用d3d技术实现裸眼3d动画实时制作的方法
CN103634588A (zh) 一种影像构成方法及电子设备
Chen et al. Real-time lens based rendering algorithm for super-multiview integral photography without image resampling
JP2012084105A (ja) 立体像生成装置およびそのプログラム
US20120176367A1 (en) Morphological anti-aliasing (mlaa) of a re-projection of a two-dimensional image
Park et al. Viewpoint vector rendering for efficient elemental image generation
Li et al. Immersive neural graphics primitives
US10230933B2 (en) Processing three-dimensional (3D) image through selectively processing stereoscopic images
Gotsch et al. Holoflex: A flexible light-field smartphone with a microlens array and a p-oled touchscreen
CN109816765B (zh) 面向动态场景的纹理实时确定方法、装置、设备和介质
CN114879377B (zh) 水平视差三维光场显示系统的参数确定方法、装置及设备
CN115841539A (zh) 一种基于可视外壳的三维光场生成方法和装置
JP2013041500A (ja) Html52d描画仕様のみで動作する3dエンジン
KR101425321B1 (ko) 적응형 렌즈 어레이를 구비하는 3차원 집적 영상 디스플레이 시스템 및 적응형 렌즈 어레이에 대한 요소 영상 생성 방법
CN106657966B (zh) 一种基于cpu多线程的集成成像3d片源快速生成方法
KR101567002B1 (ko) 컴퓨터 그래픽스 기반의 스테레오 플로팅 집적 영상생성시스템

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant