CN106204418B - 一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法 - Google Patents

一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法 Download PDF

Info

Publication number
CN106204418B
CN106204418B CN201610475529.8A CN201610475529A CN106204418B CN 106204418 B CN106204418 B CN 106204418B CN 201610475529 A CN201610475529 A CN 201610475529A CN 106204418 B CN106204418 B CN 106204418B
Authority
CN
China
Prior art keywords
coordinate
camera
coordinate system
original
world
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
CN201610475529.8A
Other languages
English (en)
Other versions
CN106204418A (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.)
NANJING RUIYUE INFORMATION TECHNOLOGY Co Ltd
Original Assignee
NANJING RUIYUE INFORMATION TECHNOLOGY Co Ltd
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 NANJING RUIYUE INFORMATION TECHNOLOGY Co Ltd filed Critical NANJING RUIYUE INFORMATION TECHNOLOGY Co Ltd
Priority to CN201610475529.8A priority Critical patent/CN106204418B/zh
Publication of CN106204418A publication Critical patent/CN106204418A/zh
Application granted granted Critical
Publication of CN106204418B publication Critical patent/CN106204418B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/60Rotation of whole images or parts thereof
    • G06T3/604Rotation of whole images or parts thereof using coordinate rotation digital computer [CORDIC] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明公开了一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法,包括:1)读取当前帧及设备状态;2)把当前帧时刻屏幕坐标系下坐标转换为当前帧时刻标准化设备坐标系下坐标;3)根据当前帧时刻标准化设备坐标系下坐标得到其位于世界坐标系中坐标;4)根据世界坐标系中坐标得到对应下一帧时刻标准化设备坐标系下坐标;5)对下一帧时刻标准化设备坐标系下坐标进行线性变换,最终转换成屏幕坐标系下坐标;6)把每个当前帧时刻屏幕坐标系下坐标中的像素RGB值赋给对应的下一帧时刻屏幕坐标系下坐标中,从而得到最后的扭曲图像。本发明为虚拟现实中一种生成中间帧方法,能够有效减少VR游戏中的抖动,从而增加用户体验。

Description

一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法
技术领域
本发明属于虚拟现实,计算机图形学,数字图像处理等领域,涉及一种虚拟现实移动端中图像扭曲的方法,更具体的是,涉及一种根据场景渲染中的矩阵变换对当前帧进行扭曲得到下一帧的方法。
背景技术
虚拟现实技术综合利用计算机图形学、光电成像技术、传感技术、计算机仿真、人工智能等多种技术,并借助各种交互设备,旨在为用户提供一个逼真的、具有多重感知的虚拟世界。
近年来,虚拟现实技术迅速发展,凭借其强悍的硬件,电脑端虚拟现实技术已经能够给用户带来很好的沉浸式体验,但因其成本高,配套设备繁琐,未能有很好的普及。相比之下,移动端虚拟现实技术门槛低,因现在高端智能手机的普及率高,加之移动端(如VR头盔,VR:Virtual Reality,即虚拟现实,一种可以创建和体验虚拟世界的计算机仿真系统,它利用计算机生成一种模拟环境,是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中)的成本和制造难度与电脑端相比微乎其微,给用户带来的体验也是极为方便,用户甚至只需拥有一部智能手机,再简单制作一个VR盒子便能进行VR体验,所以现在移动端的虚拟现实技术普及率远远超于电脑端,并逐年上升。
移动端虚拟现实技术普及率虽然高,但是用户体验却远远不如电脑端。其最主要的原因在于移动端的硬件性能远远弱于电脑端,即使是移动端的骁龙820或者三星Exynos8890也完全无法和电脑端的I5 4590与GTX 970的性能相比拟。因此移动端带来的用户体验往往不尽人意,会出现跳帧、抖动的现象。
对于VR游戏而言,要有较好的用户体验,其游戏运行帧率必须保持在60HZ以上。由于受到移动端硬件性能的限制,有时无法在规定时间内渲染完一帧,这时就会出现跳帧或者抖动的现象。另外,当用户头部转动过快时,设备无法渲染出与头部动作相应的画面,此时也会出现抖动现象。为解决此问题,许多厂商提出了一些技术方案,例如Oculus提出的异步时间扭曲技术(Asynchronous Timewarp,简称ATW),其实就是一项生成中间帧技术,当游戏下一帧无法在规定时间内渲染完成时,该技术根据当前已经渲染好的帧及当前VR头盔的状态生成下一帧进行填充,虽然该方法一定层度解决了画面的抖动现象,但是该技术依然具有局限性,例如当移动物体或动画覆盖屏幕很大一部分时,就会产生伪影现象。如何根据当前帧预测出较为准确的下一帧仍是虚拟现实领域中一个值得研究的问题。
发明内容
发明目的:本发明所要解决的技术问题是当虚拟现实游戏中不能在规定时间内渲染完一帧时生成中间帧进行插入,以此减少游戏中的画面抖动。
技术方案:本方法通过当前帧,当前头盔状态及下一帧时刻头盔状态,根据场景渲染时的矩阵变换及其逆变换预测生成下一帧,并直接输出至显示设备,包括以下步骤:
步骤1,读取当前帧信息,并且得到当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T,读取设备当前帧及下一帧时刻状态;
步骤2,对步骤1的读入数据进行必要预处理,把当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T转换为当前帧时刻标准化设备坐标系下坐标(x,y,z,w)T,根据设备状态生成第一旋转矩阵R、第二旋转矩阵R′;
步骤3,根据投影矩阵P、第一旋转矩阵R、视点平移矩阵T,对每个当前帧时刻标准化设备坐标系下坐标(x,y,z,w)T进行矩阵逆变换,得到其位于世界坐标系中坐标(xworld,yworld,zworld,wworld)T
步骤4,根据视点平移矩阵T、第二旋转矩阵R′、投影矩阵P,对世界坐标系中坐标(xworld,yworld,zworld,wworld)T进行矩阵变换,得到对应下一帧时刻标准化设备坐标系下坐标(x′,y′,z′,w′)T
步骤5,对步骤4得到的下一帧时刻标准化设备坐标系下坐标(x′,y′,z′,w′)T进行线性变换,最终转换成屏幕坐标系下坐标(xfinal,yfinal)T
步骤6,把每个当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T中的像素RGB值赋给对应的下一帧时刻屏幕坐标系下坐标(xfinal,yfinal)T中,从而得到最后的扭曲图像。
优选的,步骤1包括:
在图像即将显示至屏幕设备之前,读取当前帧信息即framebuffer内容,包括已经渲染成纹理的colorbuffer和depthbuffer内容,并得到图像像素点当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T;colorbuffer中内容即为将要显示的图像像素点RGB值,定义其图像宽度为WindowWidth,图像高度为WindowHeight,则有0≤xoriginal<WindowHeight及0≤yoriginal<WindowWidth;depthbuffer中内容即为图像像素点深度信息,其坐标为屏幕坐标系下坐标(xoriginal,yoriginal)T,对应深度信息值为depthoriginal(xoriginal,yoriginal);
读取当前帧及下一帧时刻设备状态即读取设备两时刻的陀螺仪数据,OpenGL采用右手笛卡尔坐标系统,读取当前帧时刻设备陀螺仪数据即欧拉角ψ、θ、欧拉角ψ、θ、分别为当前帧时刻设备绕Z轴、Y轴、X轴的旋转角度;读取下一帧时刻设备陀螺仪数据即欧拉角ψ′、θ′、欧拉角ψ′、θ′、分别为下一帧时刻设备绕Z轴、Y轴、X轴的旋转角度。
更优的,步骤2包括以下步骤:
步骤2-1,把当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T转换为当前帧时刻标准化设备坐标系下坐标(x,y,z,w)T,具体为: z=2*depthoriginal(xoriginal,yoriginal)-1,w=1.0;
步骤2-2,根据设备状态生成旋转矩阵R、R′,具体步骤为:
步骤2-2-1,通过欧拉角生成四元素,转换公式为:
步骤2-2-2,通过四元素生成旋转矩阵,转换公式为:
把欧拉角ψ、θ、带入步骤2-2-1~2-2-2中得到第一旋转矩阵R,把欧拉角ψ′、θ′、带入步骤2-2-1~2-2-2中得到第二旋转矩阵R′。
更优的,步骤3包括以下步骤:
步骤3-1,获取投影矩阵P,对其求逆得到P-1,对当前帧时刻标准化设备坐标系下坐标(x,y,z,w)T进行投影逆变换,得到当前帧时刻相机坐标系下坐标(xcamera,ycamera,zcamera,wcamera)T,公式为:
(xcamera,ycamera,zcamera,wcamera)T=P-1(x,y,z,w)T
步骤3-2,对步骤2求得的第一旋转矩阵R及视点平移矩阵T求逆,求得矩阵R-1、T-1
对于当前帧像素,其世界坐标系坐标为:
(xworld,yworld,zworld,wworld)T=T-1·R-1·(xcamera,ycamera,zcamera,wcamera)T
更优的,步骤4包括以下步骤:
步骤4-1,根据步骤2求得的第二旋转矩阵R′及视点平移矩阵T,求得世界坐标系下坐标(xworld,yworld,zworld,wworld)T位于下一帧时刻相机坐标系下坐标(xcamera_1,ycamera_1,zcamera_1,wcamera_1)T,其变换公式为:(xcamera_1,ycamera_1,zcamera_1,wcamera_1)T=R′·T·(xworld,yworld,zworld,wworld)T
步骤4-2,获取投影矩阵P,对下一帧时刻相机坐标系下坐标(xcamera_1,ycamera_1,zcamera_1,wcamera_1)T进行投影变换,得到下一帧时刻标准化设备坐标系下坐标(x′,y′,z′,w′)T,其变换公式为:
(x′,y′,z′,w′)T=P·(xcamera_1,ycamera_1,zcamera_1,wcamera_1)T
更优的,步骤5包括以下步骤:
对下一帧时刻标准化设备坐标系下坐标(x′,y′,z′,w′)T进行线性变换,最终得到像素点下一帧时刻屏幕坐标系下坐标(xfinal,yfinal)T,具体为:
更优的,步骤6包括以下步骤:
把每个像素当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T中的像素RGB值赋给下一帧时刻屏幕坐标系下坐标(xfinal,yfinal)T中,具体步骤为:新建并初始化framebuffer,其中colorbuffer中的每个像素RGB值为(0,0,0),逐像素遍历纹理,该纹理为当前帧的colorbuffer渲染成纹理,把当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T对应的RGB值分别赋给对应的下一帧时刻屏幕坐标系下坐标(xfinal,yfinal)T的RGB分量中,遍历结束即可得到扭曲后的图像,最后把其直接输出至显示设备即可。
优选的,所涉及的坐标均有左眼与右眼之分,计算方式一致;视点平移矩阵T包括左眼视点平移矩阵T_L、右眼视点平移矩阵T_R,分别在左眼坐标变换、右眼坐标变换中使用。
更优的:
所述左眼视点平移矩阵T_L为:左眼视点相对于设备中心位置在世界坐标系下的平移矩阵,为设备内参;
所述右眼视点平移矩阵T_R为:右眼视点相对于设备中心位置在世界坐标系下的平移矩阵,为设备内参。
本发明的有益效果
(1)本发明为虚拟现实中一种生成中间帧方法,该方法能够有效减少VR游戏中的抖动,从而增加用户体验。
(2)本发明提出的矩阵逆运算方法其计算量小,运算速度快,能够在短时间内完成运算,实现在规定时间内完成一帧的插入。
(3)本发明提供的方法在计算着色器中编程实现,在保证计算速度的前提下,能够对当前帧逐像素扭曲,实现高精度预测,实际效果如图3所示。
附图说明
图1为本发明方法的基本流程图。
图2为各坐标系统变换关系图。
图3(a)为图像扭曲前后对比图的当前帧视图。
图3(b)为图像扭曲前后对比图的实际下一帧视图。
图3(c)为图像扭曲前后对比图的通过该发明方法扭曲得到下一帧视图。
图4为本发明方法应用场合图。
具体实施方式
下面结合实施例对本发明作进一步说明,但本发明的保护范围不限于此:
本方法的流程图如图1所示,该发明方法主要通过场景渲染中的矩阵变换关系,计算像素位置位于各坐标系统中的对应关系,从而得到当前帧像素点与下一帧像素点位置映射关系,最后根据当前帧生成下一帧,得到扭曲图像输出至显示设备。各坐标系统变换关系如图2所示。
本实施例的实验开发环境是:英特尔第三代酷睿i5-3550 3.30GHz四核CPU(处理器),NVDIA GeForce GTX650 GPU(显卡),8G内存,软件环境是Eclipse2015(软件开发工具)、MicrosoftVisualStudio2015(软件开发工具)和OpenGL ES 3.1(嵌入式系统开源图形库)。运行环境是:RK3288(移动端处理器型号)、ARM Mali-T764(GPU型号)、2GB内存、16GB存储空间。
本发明方法主要用于移动端虚拟现实设备中,如VR头盔等。如图4所示,当设备运行VR程序时,设备主线程(图4右侧)以至少60HZ的频率渲染图像帧输出,次线程(图4左侧)一直运行本发明方法,当设备无法在规定时间内渲染完一帧时,次线程把扭曲后的图像送入backbuffer中,最后输出到显示设备,从而保证设备能够以足够的帧率运行,并且减少画面抖动。
实施例1:一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法,包括以下步骤:
步骤1,读取当前帧信息,并且得到当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T,读取设备当前帧及下一帧时刻状态;
步骤2,对步骤1的读入数据进行必要预处理,把当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T转换为当前帧时刻标准化设备坐标系下坐标(x,y,z,w)T,根据设备状态生成第一旋转矩阵R、第二旋转矩阵R′;
步骤3,根据投影矩阵P、第一旋转矩阵R、视点平移矩阵T,对每个当前帧时刻标准化设备坐标系下坐标(x,y,z,w)T进行矩阵逆变换,得到其位于世界坐标系中坐标(xworld,yworld,zworld,wworld)T
步骤4,根据视点平移矩阵T、第二旋转矩阵R′、投影矩阵P,对世界坐标系中坐标(xworld,yworld,zworld,wworld)T进行矩阵变换,得到对应下一帧时刻标准化设备坐标系下坐标(x′,y′,z′,w′)T
步骤5,对步骤4得到的下一帧时刻标准化设备坐标系下坐标(x′,y′,z′,w′)T进行线性变换,最终转换成屏幕坐标系下坐标(xfinal,yfinal)T
步骤6,把每个当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T中的像素RGB值赋给对应的下一帧时刻屏幕坐标系下坐标(xfinal,yfinal)T中,从而得到最后的扭曲图像。
采用本方案可以获得以下有益效果:
(1)本发明为虚拟现实中一种生成中间帧方法,该方法能够有效减少VR游戏中的抖动,从而增加用户体验。
(2)本发明提出的矩阵逆运算方法其计算量小,运算速度快,能够在短时间内完成运算,实现在规定时间内完成一帧的插入。
(3)本发明提供的方法在计算着色器中编程实现,在保证计算速度的前提下,能够对当前帧逐像素扭曲,实现高精度预测,实际效果对比如图3(a)、图3(b)、图3(c)所示。
实施例2:如实施例1所述的一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法,步骤1包括:
在图像即将显示至屏幕设备之前,读取当前帧信息即framebuffer内容,包括已经渲染成纹理的colorbuffer和depthbuffer内容,并得到图像像素点当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T;colorbuffer中内容即为将要显示的图像像素点RGB值,定义其图像宽度为WindowWidth,图像高度为WindowHeight,则有0≤xoriginal<WindowHeight及0≤yoriginal<WindowWidth;depthbuffer中内容即为图像像素点深度信息,其坐标为屏幕坐标系下坐标(xoriginal,yoriginal)T,对应深度信息值为depthoriginal(xoriginal,yoriginal);
读取当前帧及下一帧时刻设备状态即读取设备两时刻的陀螺仪数据,OpenGL采用右手笛卡尔坐标系统,读取当前帧时刻设备陀螺仪数据即欧拉角ψ、θ、欧拉角ψ、θ、分别为当前帧时刻设备绕Z轴、Y轴、X轴的旋转角度;读取下一帧时刻设备陀螺仪数据即欧拉角ψ′、θ′、欧拉角ψ′、θ′、分别为下一帧时刻设备绕Z轴、Y轴、X轴的旋转角度。
实施例3:如实施例2所述的一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法,步骤2包括以下步骤:
步骤2-1,把当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T转换为当前帧时刻标准化设备坐标系下坐标(x,y,z,w)T,具体为: z=2*depthoriginal(xoriginal,yoriginal)-1,w=1.0;
步骤2-2,根据设备状态生成旋转矩阵R、R′,具体步骤为:
步骤2-2-1,通过欧拉角生成四元素,转换公式为:
步骤2-2-2,通过四元素生成旋转矩阵,转换公式为:
把欧拉角ψ、θ、带入步骤2-2-1~2-2-2中得到第一旋转矩阵R,把欧拉角ψ′、θ′、带入步骤2-2-1~2-2-2中得到第二旋转矩阵R′。
实施例4:如实施例3所述的一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法,步骤3包括以下步骤:
步骤3-1,获取投影矩阵P,投影矩阵P优选的根据虚拟现实移动端(如VR头盔)的参数确定,或是程序中设定,一般是不变的。获取,读懂了代码直接在程序中GET。对投影矩阵P求逆得到P-1,对当前帧时刻标准化设备坐标系下坐标(x,y,z,w)T进行投影逆变换,得到当前帧时刻相机坐标系下坐标(xcamera,ycamera,zcamera,wcamera)T,公式为:
(xcamera,ycamera,zcamera,wcamera)T=P-1(x,y,z,w)T
步骤3-2,对步骤2求得的第一旋转矩阵R及视点平移矩阵T求逆,求得矩阵R-1、T-1
对于当前帧像素,其世界坐标系坐标为:
(xworld,yworld,zworld,wworld)T=T-1·R-1·(xcamera,ycamera,zcamera,wcamera)T
实施例5:如实施例4所述的一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法,步骤4包括以下步骤:
步骤4-1,根据步骤2求得的第二旋转矩阵R′及视点平移矩阵T,求得世界坐标系下坐标(xworld,yworld,zworld,wworld)T位于下一帧时刻相机坐标系下坐标(xcamera_1,ycamera_1,zcamera_1,wcamera_1)T,其变换公式为:(xcamera_1,ycamera_1,zcamera_1,wcamera_1)T=R′·T·(xworld,yworld,zworld,wworld)T
步骤4-2,获取投影矩阵P,对下一帧时刻相机坐标系下坐标(xcamera_1,ycamera_1,zcamera_1,wcamera_1)T进行投影变换,得到下一帧时刻标准化设备坐标系下坐标(x′,y′,z′,w′)T,其变换公式为:
(x′,y′,z′,w′)T=P·(xcamera_1,ycamera_1,zcamera_1,wcamera_1)T
实施例6:如实施例5所述的一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法,步骤5包括以下步骤:
对下一帧时刻标准化设备坐标系下坐标(x′,y′,z′,w′)T进行线性变换,最终得到像素点下一帧时刻屏幕坐标系下坐标(xfinal,yfinal)T,具体为:
实施例7:如实施例6所述的一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法,步骤6包括以下步骤:
把每个像素当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T中的像素RGB值赋给下一帧时刻屏幕坐标系下坐标(xfinal,yfinal)T中,具体步骤为:新建并初始化framebuffer,其中colorbuffer中的每个像素RGB值为(0,0,0),逐像素遍历纹理,该纹理为当前帧的colorbuffer渲染成纹理,把当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T对应的RGB值分别赋给对应的下一帧时刻屏幕坐标系下坐标(xfinal,yfinal)T的RGB分量中,遍历结束即可得到扭曲后的图像,最后把其直接输出至显示设备即可。
优选的实施例中,所发明方法中所涉及的坐标均有左眼与右眼之分,计算方式一致;视点平移矩阵T包括左眼视点平移矩阵T_L、右眼视点平移矩阵T_R,分别在左眼坐标变换、右眼坐标变换中使用。
在更优的实施例中:
所述左眼视点平移矩阵T_L为:左眼视点相对于设备中心位置在世界坐标系下的平移矩阵,为设备内参;
所述右眼视点平移矩阵T_R为:右眼视点相对于设备中心位置在世界坐标系下的平移矩阵,为设备内参。
本文中所描述的具体实施例仅仅是对本发明精神做举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

Claims (6)

1.一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法,其特征在于,包括以下步骤:
步骤1,读取当前帧信息,并且得到当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T,读取设备当前帧及下一帧时刻状态;
步骤2,对步骤1的读入数据进行必要预处理,把当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T转换为当前帧时刻标准化设备坐标系下坐标(x,y,z,w)T,根据设备状态生成第一旋转矩阵R、第二旋转矩阵R′;步骤2包括以下步骤:
步骤2-1,把当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T转换为当前帧时刻标准化设备坐标系下坐标(x,y,z,w)T,具体为:z=2*depthoriginal(xoriginal,yoriginal)-1,w=1.0;式中:WindowWidth为图像宽度,WindowHeight为图像高度,depthoriginal(xoriginal,yoriginal)为(xoriginal,yoriginal)T对应的深度信息值;
步骤2-2,根据设备状态生成旋转矩阵R、R′,具体步骤为:
步骤2-2-1,通过欧拉角生成四元素,转换公式为:
步骤2-2-2,通过四元素生成旋转矩阵,转换公式为:
把欧拉角ψ、θ、带入步骤2-2-1~2-2-2中得到第一旋转矩阵R,把欧拉角ψ′、θ′、带入步骤2-2-1~2-2-2中得到第二旋转矩阵R′;
步骤3,根据投影矩阵P、第一旋转矩阵R、视点平移矩阵T,对每个当前帧时刻标准化设备坐标系下坐标(x,y,z,w)T进行矩阵逆变换,得到其位于世界坐标系中坐标(xworld,yworld,zworld,wworld)T;步骤3包括以下步骤:
步骤3-1,获取投影矩阵P,对其求逆得到P-1,对当前帧时刻标准化设备坐标系下坐标(x,y,z,w)T进行投影逆变换,得到当前帧时刻相机坐标系下坐标(xcamera,ycamera,zcamera,wcamera)T,公式为:
(xcamera,ycamera,zcamera,wcamera)T=P-1(x,y,z,w)T
步骤3-2,对步骤2求得的第一旋转矩阵R及视点平移矩阵T求逆,求得矩阵R-1、T-1
对于当前帧像素,其世界坐标系坐标为:
(xworld,yworld,zworld,wworld)T=T-1·R-1·(xcamera,ycamera,zcamera,wcamera)T
步骤4,根据视点平移矩阵T、第二旋转矩阵R′、投影矩阵P,对世界坐标系中坐标(xworld,yworld,zworld,wworld)T进行矩阵变换,得到对应下一帧时刻标准化设备坐标系下坐标(x′,y′,z′,w′)T;步骤4包括以下步骤:
步骤4-1,根据步骤2求得的第二旋转矩阵R′及视点平移矩阵T,求得世界坐标系下坐标(xworld,yworld,zworld,wworld)T位于下一帧时刻相机坐标系下坐标(xcamera_1,ycamera_1,zcamera_1,wcamera_1)T,其变换公式为:(xcamera_1,ycamera_1,zcamera_1,wcamera_1)T=R′·T·(xworld,yworld,zworld,wworld)T
步骤4-2,获取投影矩阵P,对下一帧时刻相机坐标系下坐标(xcamera_1,ycamera_1,zcamera_1,wcamera_1)T进行投影变换,得到下一帧时刻标准化设备坐标系下坐标(x′,y′,z′,w′)T,其变换公式为:
(x′,y′,z′,w′)T=P·(xcamera_1,ycamera_1,zcamera_1,wcamera_1)T
步骤5,对步骤4得到的下一帧时刻标准化设备坐标系下坐标(x′,y′,z′,w′)T进行线性变换,最终转换成屏幕坐标系下坐标(xfinal,yfinal)T
步骤6,把每个当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T中的像素RGB值赋给对应的下一帧时刻屏幕坐标系下坐标(xfinal,yfinal)T中,从而得到最后的扭曲图像。
2.如权利要求1所述的一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法,其特征在于,步骤1包括:
在图像即将显示至屏幕设备之前,读取当前帧信息即framebuffer内容,包括已经渲染成纹理的colorbuffer和depthbuffer内容,并得到图像像素点当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T;colorbuffer中内容即为将要显示的图像像素点RGB值,定义其图像宽度为WindowWidth,图像高度为WindowHeight,则有0≤xoriginal<WindowHeight及0≤yoriginal<WindowWidth;depthbuffer中内容即为图像像素点深度信息,其坐标为屏幕坐标系下坐标(xoriginal,yoriginal)T,对应深度信息值为depthoriginal(xoriginal,yoriginal);
读取当前帧及下一帧时刻设备状态即读取设备两时刻的陀螺仪数据,OpenGL采用右手笛卡尔坐标系统,读取当前帧时刻设备陀螺仪数据即欧拉角ψ、θ、欧拉角ψ、θ、分别为当前帧时刻设备绕Z轴、Y轴、X轴的旋转角度;读取下一帧时刻设备陀螺仪数据即欧拉角ψ′、θ′、欧拉角ψ′、θ′、分别为下一帧时刻设备绕Z轴、Y轴、X轴的旋转角度。
3.如权利要求1所述的一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法,其特征在于,步骤5包括以下步骤:
对下一帧时刻标准化设备坐标系下坐标(x′,y′,z′,w′)T进行线性变换,最终得到像素点下一帧时刻屏幕坐标系下坐标(xfinal,yfinal)T,具体为:
4.如权利要求2所述的一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法,其特征在于,步骤6包括以下步骤:
把每个像素当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T中的像素RGB值赋给下一帧时刻屏幕坐标系下坐标(xfinal,yfinal)T中,具体步骤为:新建并初始化framebuffer,其中colorbuffer中的每个像素RGB值为(0,0,0),逐像素遍历纹理,该纹理为当前帧的colorbuffer渲染成纹理,把当前帧时刻屏幕坐标系下坐标(xoriginal,yoriginal)T对应的RGB值分别赋给对应的下一帧时刻屏幕坐标系下坐标(xfinal,yfinal)T的RGB分量中,遍历结束即可得到扭曲后的图像,最后把其直接输出至显示设备即可。
5.如权利要求1~4中任一项所述的一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法,其特征在于,所涉及的坐标均有左眼与右眼之分,计算方式一致;视点平移矩阵T包括左眼视点平移矩阵T-L、右眼视点平移矩阵T-R,分别在左眼坐标变换、右眼坐标变换中使用。
6.如权利要求5所述的一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法,其特征在于:
所述左眼视点平移矩阵T-L为:左眼视点相对于设备中心位置在世界坐标系下的平移矩阵,为设备内参;
所述右眼视点平移矩阵T-R为:右眼视点相对于设备中心位置在世界坐标系下的平移矩阵,为设备内参。
CN201610475529.8A 2016-06-24 2016-06-24 一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法 Active CN106204418B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610475529.8A CN106204418B (zh) 2016-06-24 2016-06-24 一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610475529.8A CN106204418B (zh) 2016-06-24 2016-06-24 一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法

Publications (2)

Publication Number Publication Date
CN106204418A CN106204418A (zh) 2016-12-07
CN106204418B true CN106204418B (zh) 2019-02-12

Family

ID=57461173

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610475529.8A Active CN106204418B (zh) 2016-06-24 2016-06-24 一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法

Country Status (1)

Country Link
CN (1) CN106204418B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107452045B (zh) * 2017-07-04 2020-09-15 南京睿悦信息技术有限公司 基于虚拟现实应用反畸变网格的空间点映射方法
CN107886574B (zh) * 2017-09-19 2021-04-16 浙江科澜信息技术有限公司 一种基于粒子系统的全局雨效仿真方法
CN107943287A (zh) * 2017-11-16 2018-04-20 烽火通信科技股份有限公司 一种基于Android机顶盒系统解决VR画面抖动的系统及方法
CN109063703A (zh) * 2018-06-29 2018-12-21 南京睿悦信息技术有限公司 基于标识识别和惯性测量单元融合的增强现实定位算法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101419672A (zh) * 2008-12-03 2009-04-29 中国科学院计算技术研究所 一种同步采集人脸图像和注视视角的装置及方法
CN102496160A (zh) * 2011-12-09 2012-06-13 河海大学常州校区 集控式足球机器人视觉系统标定方法
CN103345765A (zh) * 2013-07-19 2013-10-09 南京理工大学 基于dsp+fpga的移动平台下运动目标检测装置及其方法
CN105303518A (zh) * 2014-06-12 2016-02-03 南京理工大学 一种基于区域特征的视频帧间拼接方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101419672A (zh) * 2008-12-03 2009-04-29 中国科学院计算技术研究所 一种同步采集人脸图像和注视视角的装置及方法
CN102496160A (zh) * 2011-12-09 2012-06-13 河海大学常州校区 集控式足球机器人视觉系统标定方法
CN103345765A (zh) * 2013-07-19 2013-10-09 南京理工大学 基于dsp+fpga的移动平台下运动目标检测装置及其方法
CN105303518A (zh) * 2014-06-12 2016-02-03 南京理工大学 一种基于区域特征的视频帧间拼接方法

Also Published As

Publication number Publication date
CN106204418A (zh) 2016-12-07

Similar Documents

Publication Publication Date Title
CN104268922B (zh) 一种图像渲染方法及图像渲染装置
CN108898630A (zh) 一种三维重建方法、装置、设备和存储介质
CN106204418B (zh) 一种虚拟现实移动端中基于矩阵逆运算的图像扭曲方法
US10726599B2 (en) Realistic augmentation of images and videos with graphics
JP2006506744A (ja) 区間解析を使用するコンピュータ・グラフィックスの際の可視面決定システムおよび方法
CN107707899B (zh) 包含运动目标的多视角图像处理方法、装置及电子设备
CN112288665A (zh) 图像融合的方法、装置、存储介质及电子设备
US20230230311A1 (en) Rendering Method and Apparatus, and Device
CN111583381B (zh) 游戏资源图的渲染方法、装置及电子设备
WO2023109486A1 (zh) 毛发模型的生成方法、装置、电子设备以及存储介质
CN111583398B (zh) 图像显示的方法、装置、电子设备及计算机可读存储介质
CN111161398A (zh) 一种图像生成方法、装置、设备及存储介质
CN112734896A (zh) 环境遮蔽渲染方法、装置、存储介质及电子设备
CN111754431A (zh) 一种图像区域替换方法、装置、设备及存储介质
US10909752B2 (en) All-around spherical light field rendering method
CN112508778B (zh) 一种3d人脸道具贴图方法、终端及存储介质
CN106886974A (zh) 图像加速器设备及相关方法
CN110136238B (zh) 一种结合物理光照模型的ar绘画方法
CN116385577A (zh) 虚拟视点图像生成方法及装置
CN113223137B (zh) 透视投影人脸点云图的生成方法、装置及电子设备
CN114693780A (zh) 图像的处理方法、装置、设备、存储介质和程序产品
CN112634420A (zh) 图像特效的生成方法、装置、电子设备及存储介质
Xu et al. Texture-GS: Disentangling the Geometry and Texture for 3D Gaussian Splatting Editing
Hao et al. Image completion with perspective constraint based on a single image
CN110689606A (zh) 一种虚拟场景中雨滴下落位置的计算方法及终端

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant