• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 13
    • 下载费用:30 金币  

    重庆时时彩出数据: 一种渲染输出全景影像的方法、系统及便携式终端.pdf

    摘要
    申请专利号:

    重庆时时彩单双窍门 www.4mum.com.cn CN201610980572.X

    申请日:

    2016.11.08

    公开号:

    CN106569696A

    公开日:

    2017.04.19

    当前法律状态:

    实审

    有效性:

    审中

    法律详情: 实质审查的生效IPC(主分类):G06F 3/0484申请日:20161108|||公开
    IPC分类号: G06F3/0484(2013.01)I; G06F3/0487(2013.01)I; G06T15/10 主分类号: G06F3/0484
    申请人: 深圳岚锋创视网络科技有限公司
    发明人: 谢钰铭; 彭文学; 刘靖康
    地址: 518000 广东省深圳市宝安区海秀路龙光世纪大厦A座6楼601
    优先权:
    专利代理机构: 深圳瑞天谨诚知识产权代理有限公司 44340 代理人: 温青玲
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201610980572.X

    授权公告号:

    |||

    法律状态公告日:

    2017.05.17|||2017.04.19

    法律状态类型:

    实质审查的生效|||公开

    摘要

    本发明适用于图像显示领域,提供了一种渲染输出全景影像的方法、系统及便携式终端。所述方法包括:初始化手势控制器和姿态传感器,分别得到手势控制器和姿态传感器的初始化矩阵值;加载全景影像数据,并建立球模型;将全景影像映射到球模型的球面上;按照刷新时钟,更新姿态传感器的矩阵;接收用户对屏幕显示的原始全景图像的手势操作指令,计算出手势操作后的手势控制器的矩阵;将手势操作后的手势控制器的矩阵与实时的姿态传感器的矩阵叠加;将叠加后的矩阵作用于球模型中,渲染输出全景影像。本发明在用户观看全景影像时,可以跟用户交互,使用姿态传感器和手势操作来控制球模型的方向,从而达到更好的用户体验。

    权利要求书

    1.一种渲染输出全景影像的方法,其特征在于,所述方法包括:
    初始化手势控制器和姿态传感器,分别得到手势控制器和姿态传感器的初始化矩阵
    值;
    加载全景影像数据,并建立球模型;
    将全景影像映射到球模型的球面上;
    按照刷新时钟,更新姿态传感器的矩阵;
    接收用户对屏幕显示的原始全景图像的手势操作指令,计算出手势操作后的手势控制
    器的矩阵;
    将手势操作后的手势控制器的矩阵与实时的姿态传感器的矩阵叠加;
    将叠加后的矩阵作用于球模型中,渲染输出全景影像。
    2.如权利要求1所述的方法,其特征在于,所述姿态传感器的矩阵是4*4的旋转矩阵M0,
    M0的运算规则是:
    <mrow> <mi>M</mi> <mn>0</mn> <mo>=</mo> <mrow> <mo>(</mo> <mrow> <mtable> <mtr> <mtd> <mrow> <mi>M</mi> <mn>00</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>10</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>20</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>30</mn> </mrow> </mtd> </mtr> </mtable> <mrow> <mo>|</mo> <mrow> <mtable> <mtr> <mtd> <mrow> <mi>M</mi> <mn>01</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>11</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>21</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>31</mn> </mrow> </mtd> </mtr> </mtable> <mrow> <mo>|</mo> <mrow> <mtable> <mtr> <mtd> <mrow> <mi>M</mi> <mn>02</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>12</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>22</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>32</mn> </mrow> </mtd> </mtr> </mtable> <mfenced open = "|" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>M</mi> <mn>03</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>13</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>23</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>33</mn> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow> </mrow> </mrow> </mrow> </mrow> <mo>)</mo> </mrow> </mrow>
    其中,
    <mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mi>M</mi> <mn>00</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>10</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>20</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>30</mn> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mi>s</mi> <mi>c</mi> <mi>a</mi> <mi>l</mi> <mi>e</mi> <mo>.</mo> <mi>x</mi> <mo>*</mo> <mrow> <mo>(</mo> <mn>1.0</mn> <mo>-</mo> <mn>2.0</mn> <mo>*</mo> <mo>(</mo> <mrow> <mi>y</mi> <mn>2</mn> <mo>+</mo> <mi>z</mi> <mn>2</mn> </mrow> <mo>)</mo> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>2.0</mn> <mo>*</mo> <mi>s</mi> <mi>c</mi> <mi>a</mi> <mi>l</mi> <mi>e</mi> <mo>.</mo> <mi>y</mi> <mo>*</mo> <mrow> <mo>(</mo> <mi>x</mi> <mi>y</mi> <mo>-</mo> <mi>w</mi> <mi>z</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>2.0</mn> <mo>*</mo> <mi>s</mi> <mi>c</mi> <mi>a</mi> <mi>l</mi> <mi>e</mi> <mo>.</mo> <mi>z</mi> <mo>*</mo> <mrow> <mo>(</mo> <mi>x</mi> <mi>z</mi> <mo>+</mo> <mi>w</mi> <mi>y</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> </mrow>
    <mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mi>M</mi> <mn>01</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>11</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>21</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>31</mn> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mn>2.0</mn> <mo>*</mo> <mi>s</mi> <mi>c</mi> <mi>a</mi> <mi>l</mi> <mi>e</mi> <mo>.</mo> <mi>x</mi> <mo>*</mo> <mrow> <mo>(</mo> <mi>x</mi> <mi>y</mi> <mo>+</mo> <mi>w</mi> <mi>z</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>s</mi> <mi>c</mi> <mi>a</mi> <mi>l</mi> <mi>e</mi> <mo>.</mo> <mi>y</mi> <mo>*</mo> <mrow> <mo>(</mo> <mn>1.0</mn> <mo>-</mo> <mn>2.0</mn> <mo>*</mo> <mo>(</mo> <mrow> <mi>x</mi> <mn>2</mn> <mo>+</mo> <mi>z</mi> <mn>2</mn> </mrow> <mo>)</mo> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>2.0</mn> <mo>*</mo> <mi>s</mi> <mi>c</mi> <mi>a</mi> <mi>l</mi> <mi>e</mi> <mo>.</mo> <mi>z</mi> <mo>*</mo> <mrow> <mo>(</mo> <mi>y</mi> <mi>z</mi> <mo>-</mo> <mi>w</mi> <mi>x</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> </mrow>
    <mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mi>M</mi> <mn>02</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>12</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>22</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>32</mn> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mn>2.0</mn> <mo>*</mo> <mi>s</mi> <mi>c</mi> <mi>a</mi> <mi>l</mi> <mi>e</mi> <mo>.</mo> <mi>x</mi> <mo>*</mo> <mrow> <mo>(</mo> <mi>x</mi> <mi>z</mi> <mo>-</mo> <mi>w</mi> <mi>y</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>2.0</mn> <mo>*</mo> <mi>s</mi> <mi>c</mi> <mi>a</mi> <mi>l</mi> <mi>e</mi> <mo>.</mo> <mi>y</mi> <mo>*</mo> <mrow> <mo>(</mo> <mi>y</mi> <mi>z</mi> <mo>+</mo> <mi>w</mi> <mi>x</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>s</mi> <mi>c</mi> <mi>a</mi> <mi>l</mi> <mi>e</mi> <mo>.</mo> <mi>z</mi> <mo>*</mo> <mrow> <mo>(</mo> <mn>1.0</mn> <mo>-</mo> <mn>2.0</mn> <mo>*</mo> <mo>(</mo> <mrow> <mi>x</mi> <mn>2</mn> <mo>+</mo> <mi>y</mi> <mn>2</mn> </mrow> <mo>)</mo> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> </mrow>
    <mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mi>M</mi> <mn>03</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>13</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>23</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>M</mi> <mn>33</mn> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mi>p</mi> <mi>o</mi> <mi>s</mi> <mi>i</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>x</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>p</mi> <mi>o</mi> <mi>s</mi> <mi>i</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>y</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>p</mi> <mi>o</mi> <mi>s</mi> <mi>i</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>z</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>1.0</mn> </mtd> </mtr> </mtable> </mfenced> </mrow>
    <mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>x</mi> <mn>2</mn> </mtd> </mtr> <mtr> <mtd> <mi>y</mi> <mn>2</mn> </mtd> </mtr> <mtr> <mtd> <mi>z</mi> <mn>2</mn> </mtd> </mtr> <mtr> <mtd> <mi>&lambda;</mi> <mi>y</mi> </mtd> </mtr> <mtr> <mtd> <mi>x</mi> <mi>z</mi> </mtd> </mtr> <mtr> <mtd> <mi>y</mi> <mi>z</mi> </mtd> </mtr> <mtr> <mtd> <mi>w</mi> <mi>x</mi> </mtd> </mtr> <mtr> <mtd> <mi>w</mi> <mi>y</mi> </mtd> </mtr> <mtr> <mtd> <mi>w</mi> <mi>z</mi> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>x</mi> <mo>*</mo> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>x</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>y</mi> <mo>*</mo> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>y</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>z</mi> <mo>*</mo> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>z</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>x</mi> <mo>*</mo> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>y</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>x</mi> <mo>*</mo> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>z</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>y</mi> <mo>*</mo> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>z</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>w</mi> <mo>*</mo> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>x</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>w</mi> <mo>*</mo> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>y</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>w</mi> <mo>*</mo> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>.</mo> <mi>z</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>
    其中,Position为X,Y,Z三个方向的位移,Scale为X,Y,Z三个方向的缩放值,Rotation
    为X,Y,Z三个方向的旋转角度,rotation.w是四元数的W标量。
    3.如权利要求2所述的方法,其特征在于,所述姿态传感器的矩阵是参考便携式终端的
    横屏方向的,该矩阵的每个变量中,scale值x、y、z均取值为1,position值x、y、z均取值为0;
    兼容便携式终端四个方向的姿态传感器的矩阵R通过以下方式获得:
    首先通过旋转轴和旋转角度得到一个四元数,基本旋转轴axis为Z轴,分别为0、0、1,旋
    转角度angle分别为0、-90、-180、-270,得到四元数q后,把四元数转成一个4*4的旋转矩阵
    M1,然后与矩阵M0做左乘运算,最后得到兼容便携式终端四个方向的姿态传感器的矩阵R,
    公式如下:
    <mrow> <mi>q</mi> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>w</mi> </mtd> </mtr> <mtr> <mtd> <mi>x</mi> </mtd> </mtr> <mtr> <mtd> <mi>y</mi> </mtd> </mtr> <mtr> <mtd> <mi>z</mi> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mi>c</mi> <mi>o</mi> <mi>s</mi> <mrow> <mo>(</mo> <mi>a</mi> <mi>n</mi> <mi>g</mi> <mi>l</mi> <mi>e</mi> <mo>/</mo> <mn>180</mn> <mo>*</mo> <mi>&pi;</mi> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>s</mi> <mi>i</mi> <mi>n</mi> <mrow> <mo>(</mo> <mi>a</mi> <mi>n</mi> <mi>g</mi> <mi>l</mi> <mi>e</mi> <mo>/</mo> <mn>180</mn> <mo>*</mo> <mi>&pi;</mi> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>*</mo> <mi>a</mi> <mi>x</mi> <mi>i</mi> <mi>s</mi> <mo>.</mo> <mi>x</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>s</mi> <mi>i</mi> <mi>n</mi> <mrow> <mo>(</mo> <mi>a</mi> <mi>n</mi> <mi>g</mi> <mi>l</mi> <mi>e</mi> <mo>/</mo> <mn>180</mn> <mo>*</mo> <mi>&pi;</mi> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>*</mo> <mi>a</mi> <mi>x</mi> <mi>i</mi> <mi>s</mi> <mo>.</mo> <mi>y</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>s</mi> <mi>i</mi> <mi>n</mi> <mrow> <mo>(</mo> <mi>a</mi> <mi>n</mi> <mi>g</mi> <mi>l</mi> <mi>e</mi> <mo>/</mo> <mn>180</mn> <mo>*</mo> <mi>&pi;</mi> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>*</mo> <mi>a</mi> <mi>x</mi> <mi>i</mi> <mi>s</mi> <mo>.</mo> <mi>z</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>
    <mrow> <mi>M</mi> <mn>1</mn> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mn>1.0</mn> <mo>-</mo> <mn>2.0</mn> <mo>*</mo> <mrow> <mo>(</mo> <mi>y</mi> <mn>2</mn> <mo>+</mo> <mi>z</mi> <mn>2</mn> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mn>2.0</mn> <mo>*</mo> <mrow> <mo>(</mo> <mi>x</mi> <mi>y</mi> <mo>+</mo> <mi>w</mi> <mi>z</mi> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mn>2.0</mn> <mo>*</mo> <mrow> <mo>(</mo> <mi>x</mi> <mi>z</mi> <mo>-</mo> <mi>w</mi> <mi>y</mi> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>2.0</mn> <mo>*</mo> <mrow> <mo>(</mo> <mi>x</mi> <mi>y</mi> <mo>-</mo> <mi>w</mi> <mi>z</mi> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mn>1.0</mn> <mo>-</mo> <mn>2.0</mn> <mo>*</mo> <mrow> <mo>(</mo> <mi>x</mi> <mn>2</mn> <mo>+</mo> <mi>z</mi> <mn>2</mn> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mn>2.0</mn> <mo>*</mo> <mrow> <mo>(</mo> <mi>y</mi> <mi>z</mi> <mo>+</mo> <mi>w</mi> <mi>x</mi> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>2.0</mn> <mo>*</mo> <mrow> <mo>(</mo> <mi>x</mi> <mi>z</mi> <mo>+</mo> <mi>w</mi> <mi>y</mi> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mn>2.0</mn> <mo>*</mo> <mrow> <mo>(</mo> <mi>y</mi> <mi>z</mi> <mo>-</mo> <mi>w</mi> <mi>x</mi> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mn>1.0</mn> <mo>-</mo> <mn>2.0</mn> <mo>*</mo> <mrow> <mo>(</mo> <mi>x</mi> <mn>2</mn> <mo>+</mo> <mi>y</mi> <mn>2</mn> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> </mrow>
    R=M0*M1。
    4.如权利要求1所述的方法,其特征在于,所述手势控制器的矩阵由四元数q来表示,公
    式如下:
    通过旋转轴axis和绕该轴旋转的角度angle构造一个四元数q:
    <mrow> <mi>q</mi> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>w</mi> </mtd> </mtr> <mtr> <mtd> <mi>x</mi> </mtd> </mtr> <mtr> <mtd> <mi>y</mi> </mtd> </mtr> <mtr> <mtd> <mi>z</mi> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mi>c</mi> <mi>o</mi> <mi>s</mi> <mrow> <mo>(</mo> <mi>a</mi> <mi>n</mi> <mi>g</mi> <mi>l</mi> <mi>e</mi> <mo>/</mo> <mn>180</mn> <mo>*</mo> <mi>&pi;</mi> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>s</mi> <mi>i</mi> <mi>n</mi> <mrow> <mo>(</mo> <mi>a</mi> <mi>n</mi> <mi>g</mi> <mi>l</mi> <mi>e</mi> <mo>/</mo> <mn>180</mn> <mo>*</mo> <mi>&pi;</mi> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>*</mo> <mi>a</mi> <mi>x</mi> <mi>i</mi> <mi>s</mi> <mo>.</mo> <mi>x</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>s</mi> <mi>i</mi> <mi>n</mi> <mrow> <mo>(</mo> <mi>a</mi> <mi>n</mi> <mi>g</mi> <mi>l</mi> <mi>e</mi> <mo>/</mo> <mn>180</mn> <mo>*</mo> <mi>&pi;</mi> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>*</mo> <mi>a</mi> <mi>x</mi> <mi>i</mi> <mi>s</mi> <mo>.</mo> <mi>y</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>s</mi> <mi>i</mi> <mi>n</mi> <mrow> <mo>(</mo> <mi>a</mi> <mi>n</mi> <mi>g</mi> <mi>l</mi> <mi>e</mi> <mo>/</mo> <mn>180</mn> <mo>*</mo> <mi>&pi;</mi> <mo>/</mo> <mn>2</mn> <mo>)</mo> </mrow> <mo>*</mo> <mi>a</mi> <mi>x</mi> <mi>i</mi> <mi>s</mi> <mo>.</mo> <mi>z</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>
    或者,手势控制器的矩阵由欧拉角来表示,通过四元数到欧拉角的转换得到如下:
    其中,θ、ψ分别为绕X轴、Y轴、Z
    轴的旋转角度。
    5.如权利要求1所述的方法,其特征在于,当用户通过屏幕滑动产生屏幕坐标系的x、y
    方向的位移时,用欧拉角来表示的手势控制器的矩阵如下:
    其中,θ'、ψ'是指视频或图像相对于坐标系的
    原始偏转角度,dx是指用户通过屏幕滑动产生屏幕坐标系的x方向的位移,dy是指用户通过
    屏幕滑动产生屏幕坐标系的y方向的位移;
    或者,
    用四元数来表示的手势控制器的矩阵如下,通过欧拉角到四元数的转换得到q:

    6.如权利要求1所述的方法,其特征在于,所述将手势操作后的手势控制器的矩阵与实
    时的姿态传感器的矩阵叠加具体包括:
    预先在球模型上增加一个父级节点,父级节点用于作用姿态传感器,球模型用于作用
    手势操作;
    当父级节点的欧拉角发生变化时,根据手势控制器的矩阵与姿态传感器的矩阵的对应
    关系,得出欧拉角发生变化后的手势控制器的矩阵。
    7.如权利要求6所述的方法,其特征在于,所述手势控制器的矩阵与姿态传感器的矩阵
    的对应关系具体为:
    欧拉角发生变化后的手势控制器的矩阵等于手势操作后的手势控制器的矩阵左乘姿
    态传感器的矩阵;
    所述将叠加后的矩阵作用于球模型中,渲染输出全景影像具体为:
    将欧拉角发生变化后的手势控制器的矩阵作用于球模型中,渲染输出全景影像。
    8.一种渲染输出全景影像的系统,其特征在于,所述系统包括:
    初始化???,用于初始化手势控制器和姿态传感器,分别得到手势控制器和姿态传感
    器的初始化矩阵值;
    加载???,用于加载全景影像数据,并建立球模型;
    映射???,用于将全景影像映射到球模型的球面上;
    更新???,用于按照刷新时钟,更新姿态传感器的矩阵;
    计算???,用于接收用户对屏幕显示的原始全景图像的手势操作指令,计算出手势操
    作后的手势控制器的矩阵;
    叠加???,用于将手势操作后的手势控制器的矩阵与实时的姿态传感器的矩阵叠加;
    渲染???,用于将叠加后的矩阵作用于球模型中,渲染输出全景影像。
    9.如权利要求8所述的系统,其特征在于,所述叠加??榫咛逵糜谠は仍谇蚰P蜕显黾?br />一个父级节点,父级节点用于作用姿态传感器,球模型用于作用手势操作;当父级节点的欧
    拉角发生变化时,根据手势控制器的矩阵与姿态传感器的矩阵的对应关系,得出欧拉角发
    生变化后的手势控制器的矩阵。
    10.一种便携式终端,其特征在于,所述便携式终端包括权利要求8或9所述的渲染输出
    全景影像的系统。

    说明书

    一种渲染输出全景影像的方法、系统及便携式终端

    技术领域

    本发明属于图像显示领域,尤其涉及一种渲染输出全景影像的方法、系统及便携
    式终端。

    背景技术

    现有技术观看全景影像通常使用空间三维的球模型,把全景影像映射到球模型的
    球面上,再使用透视投影的方式,显示到便携式终端的屏幕上。观看全景影像通常需要用户
    的交互,然而现有技术仅能单独通过手势操作或者陀螺仪来控制全景影像的渲染输出,从
    而用户体验较差。

    发明内容

    本发明的目的在于提供一种渲染输出全景影像的方法、系统及便携式终端,旨在
    解决现有技术仅能单独通过手势操作或者陀螺仪来控制全景影像的渲染输出,从而用户体
    验较差的问题。

    第一方面,本发明提供了一种渲染输出全景影像的方法,所述方法包括:

    初始化手势控制器和姿态传感器,分别得到手势控制器和姿态传感器的初始化矩
    阵值;

    加载全景影像数据,并建立球模型;

    将全景影像映射到球模型的球面上;

    按照刷新时钟,更新姿态传感器的矩阵;

    接收用户对屏幕显示的原始全景图像的手势操作指令,计算出手势操作后的手势
    控制器的矩阵;

    将手势操作后的手势控制器的矩阵与实时的姿态传感器的矩阵叠加;

    将叠加后的矩阵作用于球模型中,渲染输出全景影像。

    第二方面,本发明提供了一种渲染输出全景影像的系统,所述系统包括:

    初始化???,用于初始化手势控制器和姿态传感器,分别得到手势控制器和姿态
    传感器的初始化矩阵值;

    加载???,用于加载全景影像数据,并建立球模型;

    映射???,用于将全景影像映射到球模型的球面上;

    更新???,用于按照刷新时钟,更新姿态传感器的矩阵;

    计算???,用于接收用户对屏幕显示的原始全景图像的手势操作指令,计算出手
    势操作后的手势控制器的矩阵;

    叠加???,用于将手势操作后的手势控制器的矩阵与实时的姿态传感器的矩阵叠
    加;

    渲染???,用于将叠加后的矩阵作用于球模型中,渲染输出全景影像。

    第三方面,本发明提供了一种便携式终端,所述便携式终端包括上述的渲染输出
    全景影像的系统。

    在本发明中,由于将手势操作后的手势控制器的矩阵与实时的姿态传感器的矩阵
    叠加;将叠加后的矩阵作用于球模型中,渲染输出全景影像。因此在用户观看全景影像时,
    可以跟用户交互,使用姿态传感器和手势操作来控制球模型的方向,从而达到更好的用户
    体验;还可以把不同的用户操作分离到不同的节点上产生叠加影响,从代码层面说,这样设
    计更好轻便,耦合度更低,更便于理解,扩展性更强,从用户层面来说,本发明能支持姿态传
    感器与手势操作同时来观看全景影像,能扩展出更多或更好的用户使用方式。

    附图说明

    图1是本发明实施例一提供的渲染输出全景影像的方法的流程图。

    图2是本发明实施例一中,当父级节点绕X或Y轴旋转90度时的示意图。

    图3是本发明实施例二提供的渲染输出全景影像的系统的功能??榭蛲?。

    具体实施方式

    为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施
    例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发
    明,并不用于限定本发明。

    为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

    实施例一:

    请参阅图1,本发明实施例一提供的渲染输出全景影像的方法包括以下步骤:

    S101、初始化手势控制器和姿态传感器,分别得到手势控制器和姿态传感器的初
    始化矩阵值;

    在本发明实施例一,姿态传感器可以是加速度传感器、陀螺仪或磁力计传感器。

    S102、加载全景影像数据,并建立球模型;

    S103、将全景影像映射到球模型的球面上;

    S104、按照刷新时钟,更新姿态传感器的矩阵;

    例如,刷新时钟可以是每秒60帧。

    在本发明实施例一中,姿态传感器的矩阵是4*4的旋转矩阵(M0),M0的运算规则
    是:


    其中,





    其中,


    Position为X,Y,Z三个方向的位移,Scale为X,Y,Z三个方向的缩放值,Rotation为
    X,Y,Z三个方向的旋转角度。该矩阵的每个变量中,scale值x、y、z均取值为1,position值x、
    y、z均取值为0,rotation.w是四元数的W标量。

    上述矩阵是参考便携式终端的横屏方向的,如果要得到兼容便携式终端四个方向
    的姿态传感器的矩阵R,就需要把矩阵绕Z轴旋转对应的角度,其中angle表示便携式终端方
    向与便携式终端横向参考的角度。

    兼容便携式终端四个方向的姿态传感器的矩阵R通过以下方式获得:

    首先通过旋转轴和旋转角度得到一个四元数,基本旋转轴axis为Z轴(0,0,1),旋
    转角度angle分别为(0,-90,-180,-270),得到四元数q后,需要把四元数转成一个4*4的旋
    转矩阵(M1),然后与矩阵(M0)做左乘运算,最后得到兼容便携式终端四个方向的姿态传感
    器的矩阵R,公式如下:



    R=M0*M1

    S105、接收用户对屏幕显示的原始全景图像的手势操作指令,计算出手势操作后
    的手势控制器的矩阵;

    在本发明实施例一中,手势控制器的矩阵可以由四元数Quaternion(简称q)来表
    示,公式如下:

    通过旋转轴axis和绕该轴旋转的角度angle构造一个四元数q:


    手势控制器的矩阵也可以由欧拉角来表示,通过四元数到欧拉角的转换得到如
    下:

    其中的a表示arctan,是一种
    数学矩阵符号,θ、ψ分别为绕X轴、Y轴、Z轴的旋转角度,分别为Roll(取值范围-90度至90
    度)、Pitch(取值范围0度至360度)、Yaw(不用取值,因为立体图像观看时,用户不会绕Z轴旋
    转)。

    当用户通过屏幕滑动产生屏幕坐标系的x、y方向的位移时,用欧拉角来表示的手
    势控制器的矩阵如下:

    其中,θ'、ψ'是指视频或图像相对于坐标
    系的原始偏转角度,dx是指用户通过屏幕滑动产生屏幕坐标系的x方向的位移,dy是指用户
    通过屏幕滑动产生屏幕坐标系的y方向的位移,dx改变绕Y轴Pitch角,dy改变绕X轴的Roll
    角。

    用四元数来表示的手势控制器的矩阵如下,通过欧拉角到四元数的转换得到q:


    S106、将手势操作后的手势控制器的矩阵与实时的姿态传感器的矩阵叠加;

    在本发明实施例一中,S106具体包括:

    预先在球模型上增加一个父级节点,父级节点用于作用姿态传感器,球模型用于
    作用手势操作;

    当父级节点的欧拉角(Rotation)发生变化时,根据手势控制器的矩阵与姿态传感
    器的矩阵的对应关系,得出欧拉角发生变化后的手势控制器的矩阵。

    手势控制器的矩阵与姿态传感器的矩阵的对应关系具体可以为:

    欧拉角发生变化后的手势控制器的矩阵等于手势操作后的手势控制器的矩阵左
    乘姿态传感器的矩阵。

    举例说明如下:

    请参阅图2,父级节点的坐标是相对于世界坐标系,与世界坐标系保持一致,而球
    模型的坐标系经过父级节点的矩阵的影响,会产生变化,如果父级节点绕Y轴旋转90度,则
    整个球模型坐标系也会绕Y轴旋转90度,这时球模型坐标系与世界坐标系不一致了,X=Z’,
    Z=-X’;而手势操作是相对于空间物体的坐标系的,所以在复合使用时,手势操作只能使用
    横向滑动,则球模型只能绕Y轴旋转,原因是外部的空间物体的矩阵对绕Y轴没有影响,当父
    级节点绕X轴旋转90度,Y=-Z’,Z=Y’,所以在看底部的时候是绕Z轴旋转的。其中,X’、Y’、
    Z’是世界坐标系的3条轴,X、Y、Z是空间物体的坐标系的3条轴。

    S107、将叠加后的矩阵作用于球模型中,渲染输出全景影像。

    在本发明实施例一中,S107具体为:将欧拉角发生变化后的手势控制器的矩阵作
    用于球模型中,渲染输出全景影像。

    实施例二:

    请参阅图3,本发明实施例二提供的渲染输出全景影像的系统包括:

    初始化???1,用于初始化手势控制器和姿态传感器,分别得到手势控制器和姿
    态传感器的初始化矩阵值;

    加载???2,用于加载全景影像数据,并建立球模型;

    映射???3,用于将全景影像映射到球模型的球面上;

    更新???4,用于按照刷新时钟,更新姿态传感器的矩阵;

    计算???5,用于接收用户对屏幕显示的原始全景图像的手势操作指令,计算出
    手势操作后的手势控制器的矩阵;

    叠加???6,用于将手势操作后的手势控制器的矩阵与实时的姿态传感器的矩阵
    叠加;

    渲染???7,用于将叠加后的矩阵作用于球模型中,渲染输出全景影像。

    在本发明实施例二中,所述叠加??榫咛逵糜谠は仍谇蚰P蜕显黾右桓龈讣督?br />点,父级节点用于作用姿态传感器,球模型用于作用手势操作;当父级节点的欧拉角发生变
    化时,根据手势控制器的矩阵与姿态传感器的矩阵的对应关系,得出欧拉角发生变化后的
    手势控制器的矩阵。

    在本发明实施例二中,所述手势控制器的矩阵与姿态传感器的矩阵的对应关系具
    体为:欧拉角发生变化后的手势控制器的矩阵等于手势操作后的手势控制器的矩阵左乘姿
    态传感器的矩阵;

    所述渲染??榫咛逵糜诮防欠⑸浠蟮氖质瓶刂破鞯木卣笞饔糜谇蚰P?br />中,渲染输出全景影像。

    本发明实施例还提供了一种包括本发明实施例二提供的渲染输出全景影像的系
    统的便携式终端。

    在本发明实施例中,由于将手势操作后的手势控制器的矩阵与实时的姿态传感器
    的矩阵叠加;将叠加后的矩阵作用于球模型中,渲染输出全景影像。因此在用户观看全景影
    像时,可以跟用户交互,使用姿态传感器和手势操作来控制球模型的方向,从而达到更好的
    用户体验;还可以把不同的用户操作分离到不同的节点上产生叠加影响,从代码层面说,这
    样设计更好轻便,耦合度更低,更便于理解,扩展性更强,从用户层面来说,本发明能支持姿
    态传感器与手势操作同时来观看全景影像,能扩展出更多或更好的用户使用方式。

    本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以
    通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,
    所述的存储介质,如ROM/RAM、磁盘、光盘等。

    以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精
    神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的?;し段е?。

    关 键 词:
    一种 渲染 输出 全景 影像 方法 系统 便携式 终端
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:一种渲染输出全景影像的方法、系统及便携式终端.pdf
    链接地址://www.4mum.com.cn/p-6092761.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03