CN111951336A - 基于gpu的三维大坐标处理方法 - Google Patents
基于gpu的三维大坐标处理方法 Download PDFInfo
- Publication number
- CN111951336A CN111951336A CN202010832600.XA CN202010832600A CN111951336A CN 111951336 A CN111951336 A CN 111951336A CN 202010832600 A CN202010832600 A CN 202010832600A CN 111951336 A CN111951336 A CN 111951336A
- Authority
- CN
- China
- Prior art keywords
- model
- matrix
- space
- correction
- obtaining
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 12
- 239000011159 matrix material Substances 0.000 claims abstract description 61
- 238000012937 correction Methods 0.000 claims abstract description 43
- 230000008859 change Effects 0.000 claims abstract description 10
- PUAQLLVFLMYYJJ-UHFFFAOYSA-N 2-aminopropiophenone Chemical compound CC(N)C(=O)C1=CC=CC=C1 PUAQLLVFLMYYJJ-UHFFFAOYSA-N 0.000 claims description 17
- 238000013519 translation Methods 0.000 claims description 6
- 238000000034 method Methods 0.000 abstract description 15
- 238000012545 processing Methods 0.000 abstract description 7
- 230000014616 translation Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
- G06T7/75—Determining position or orientation of objects or cameras using feature-based methods involving models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Abstract
本发明公开了一种基于GPU的三维大坐标处理方法,包括:采集求得模型位置的整数部分和小数部分;求得相机位置的矫正偏移位置;利用相机位置的矫正偏移位置构建模型的矫正偏移矩阵;求得矫正偏移矩阵的观察矩阵;求得模型在矫正空间的位置;求得模型在矫正空间内的变化矩阵;求得模型空间到设备空间(设备指抽象的显示设备)的变化矩阵;根据模型局部空间到设备空间的变化矩阵求得模型局部顶点在设备空间上的顶点位置。通过上述方案,本发明具有逻辑简单、计算工作量少、计算准确等优点,在大坐标数据处理技术领域具有很高的实用价值和推广价值。
Description
技术领域
本发明涉及大坐标数据处理技术领域,尤其是基于GPU的三维大坐标处理方法。
背景技术
本文所述的大坐标是指模型在世界空间位置的坐标,在三维地理信息平台(下简称三维GIS)上,这个坐标通常会比较大,在GPU进行绘制时至少需要使用双浮点才能保证其精度;然而,计算机CPU在处理浮点数,通常采用双浮点、单浮点和半浮点三种标准。在以上三种标准中,双浮点和单浮点最为流行;通常情况下,在GPU处理上,更多的采用单浮点计算,其优势主要集中在:第一,占用更少的存储空间;第二,计算速度更快;第三,平台兼容性好,支持单浮点的平台多。
目前,现有技术中处理大坐标数据的方式主要有以下两种:
第一,为了避免精度损失,提前将数据在CPU中采用双精度进行计算,然后在转换成单浮点格式再传递给GPU,在GPU内进行单浮点运输,其既能避免精度损失,又能得到更好的兼容性。但是,该方式存在以下缺陷:一、前期的双精度计算和单浮点转换过程增加了技术工作量,占用了计算内存,其处理的效率低,完全摒弃了单浮点数据处理的两个主要优势。总体来说,采用双精度计算加单浮点转换的方式,其效率的明显降低的。
第二,采用利用局部坐标进行变换:首先计算出视锥体内所有模型的包围盒,以该包围点中心点为原点构造局部坐标系,然后将模型转化到局部坐标系中,在局部坐标中进行计算,这样将大坐标转化到局部坐标系后,相对坐标就变小了,这个时候便可以用单浮点进行计算、提高精度、且没有兼容性问题。然而,该方法由于视锥体在变化,使得每帧需要重新计算局部坐标系,然后更新模型在局部坐标系中的位置,第一种方法,该方法可以使用GPU实例绘制,但是频繁的更新GPU端实例数据也严重降低了绘制性能。
因此,急需要提出一种计算工作量少、计算效率高、准确性高的基于GPU的三维大坐标处理方法。
发明内容
针对上述问题,本发明的目的在于提供一种基于GPU的三维大坐标处理方法,本发明采用的技术方案如下:
基于GPU的三维大坐标处理方法,包括以下步骤:
采集求得模型位置的整数部分PosInt和小数部分PosFloat;
求得相机位置的矫正偏移位置OffsetInt;
利用相机位置的矫正偏移位置OffsetInt构建模型的矫正偏移矩阵TransOffset;
求得矫正偏移矩阵TransOffset的观察矩阵ViewOffset;
求得模型在矫正空间的位置gPos,其表达式为:
gPos=(PosInt–OffsetInt)+PosFloat
求得模型在矫正空间内的变化矩阵gModel,其表达式为:
gModel=makeTrans(gPos)*makeScale(Scale)*makeRoate(Quat)
其中,makeTrans(gPos)表示模型在矫正空间的位置gPos的平移矩阵,makeScale(Scale)表示模型在矫正空间的缩放矩阵,makeRoate(Quat)表示模型在矫正空间旋转矩阵;
求得模型空间到设备空间的变化矩阵MVP,其表达式为:
MVP=Projection*ViewOffset*gModel
其中,Projection表示世界坐标投影到设备空间的投影矩阵,
根据空间变化矩阵MVP求得模型局部位置在设备空间的顶点位置。
进一步地,所述求得相机位置的矫正偏移位置OffsetInt,其表达式为:
OffsetInt=(int)CameraPos
其中,(int)CameraPos表示相机的位置坐标的整数部分。
进一步地,所述求得矫正偏移矩阵TransOffset的观察矩阵ViewOffset,其表达式为:
ViewOffset=View*TransOffset
其中,View表示相机的观察矩阵。
进一步地,所述模型局部位置在设备空间的顶点位置是采用空间变化矩阵MVP乘以模型局部位置所得。
与现有技术相比,本发明具有以下有益效果:
(1)本发明巧妙地将模型位置分为整数部分和小数部分,利用相机位置的矫正偏移位置构建模型的矫正偏移矩阵,再求得矫正偏移矩阵的观察矩阵,以获得模型在矫正空间的位置,其好处在于:其避免在GPU上使用双浮点,有利于实例绘制优化,提高性能和兼容性。
(2)本发明利用求得模型在矫正空间内的变化矩阵,再获得待观察点的空间变化矩阵,以求得待观察点再模型中的位置,其好处在于:矫正空间作为一致变量输入,减少CPU端计算量,从而提高性能。
综上所述,本发明具有逻辑简单、计算工作量少、计算准确等优点,在大坐标数据处理技术领域具有很高的实用价值和推广价值。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需使用的附图作简单介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对保护范围的限定,对于本领域技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明的逻辑流程图。
具体实施方式
为使本申请的目的、技术方案和优点更为清楚,下面结合附图和实施例对本发明作进一步说明,本发明的实施方式包括但不限于下列实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例
如图1所示,本实施例提供了基于GPU的三维大坐标处理方法,本实施例是将模型坐标转化成整数部分和小数部分分别传入GPU,以相机位置的整数部分为原点建立矫正空间,在GPU内模型转化到矫正空间内进行计算,使用结合律将整数部分先进行减法来避免数值过大问题。
在本实施例中,矩阵均采用行优先,向量Pos为模型的位置,四元数Quat为模型的旋转信息,向量Scale为模型的缩放,矩阵View为相机观察矩阵,向量CameraPos为相机的世界坐标,矩阵Projection为世界坐标投影到设备空间的投影矩阵。
下面详细产生本实施例的逻辑步骤过程:
第一步,采集求得模型位置的整数部分PosInt和小数部分PosFloat,其中,整数部分PosInt=(int)Pos,小数部分记为PosFloat,PosFloat=Pos–PosInt,并且,本实施例的PosInt、PosFloat、Scale、Quat作为GPU端实例数据输入,PosInt采用整数格式,PosFloat、Scale、Quat采用单浮点格式,其能兼容所有GPU。
第二步,求得相机位置的矫正偏移位置OffsetInt,其表达式为:
OffsetInt=(int)CameraPos
其中,(int)CameraPos表示相机的位置坐标的整数部分。
第三步,利用相机位置的矫正偏移位置OffsetInt构建模型的矫正偏移矩阵TransOffset,其表达式为:
TransOffset=makeTrans(CameraInt.x,CameraInt.y,CameraInt.z)
其中,makeTrans为构造模型平移矩阵,CameraInt.x表示相机在X轴上的取整数部分,CameraInt.y表示相机在Y轴上的取整数部分,CameraInt.z表示相机在Z轴上的取整数部分。
第四步,求得矫正偏移矩阵TransOffset的观察矩阵ViewOffset,其表达式为:
ViewOffset=View*TransOffset
其中,View表示相机的观察矩阵。
第五步,求得模型在矫正空间的位置gPos,其表达式为:
gPos=(PosInt–OffsetInt)+PosFloat
在本实施例中,由于PosInt与OffsetInt都是整数,相减后不会损失精度,最后算出的gPos经过相减后已经变为小的数值。
第六步,求得模型在矫正空间内的变化矩阵gModel,其表达式为:
gModel=makeTrans(gPos)*makeScale(Scale)*makeRoate(Quat)
其中,makeTrans(gPos)表示模型在矫正空间的位置gPos的平移矩阵,makeScale(Scale)表示模型在矫正空间的缩放矩阵,makeRoate(Quat)表示模型在矫正空间的旋转矩阵。
第七步,求得模型空间到设备空间的空间变化矩阵MVP,其表达式为:
MVP=Projection*ViewOffset*gModel
其中,Projection表示世界坐标投影到设备空间的投影矩阵,
第八步,根据空间变化矩阵MVP求得模型局部位置在设备空间的顶点位置。
为了验证本实施例具有可行性,下面特进行理论证明:
由图形学基础理论可知,模型到设备空间的变化矩阵为MVP=Project*View*Model,该公式为图形学基础理论,本方法最终的计算公式为MVP=Project*ViewOffset*gModel,只需要证明本方法的计算公式与图形学基础理论相同即可保证计算的正确性,即证明Project*View*Model==Project*ViewOffset*gModel成立;
其中,Model==makeTrans(Pos)*makeScale(Scale)*makeRoate(Quat),代入后有:
Project*View*makeTrans(Pos)*makeScale(Scale)*makeRoate(Quat)==Project*ViewOffset*gModel。
等式两边分别乘以Project的逆矩阵Porject’,有:
Project’*Project*View*makeTrans(Pos)*makeScale(Scale)*makeRoate(Quat)==Project’*Project*ViewOffset*gModel。
使用根据线性代数,矩阵与逆矩阵相乘为单位矩阵,即我们可以消掉Project’*Project,有:
View*makeTrans(Pos)*makeScale(Scale)*makeRoate(Quat)==ViewOffset*gModel。
由于gModel=makeTrans(gPos)*makeScale(Scale)*makeRoate(Quat),gPos=(PosInt–OffsetInt)+PosFloat,有,
View*makeTrans(Pos)*makeScale(Scale)*makeRoate(Quat)==ViewOffset*makeTrans(PosInt–OffsetInt+PosFloat)*makeScale(Scale)*makeRoate(Quat)。
同理,我们可以将等式两边的makeScale(Scale)和makeRoate(Quat)消掉,有:
View*makeTrans(Pos)==ViewOffset*makeTrans((PosInt–OffsetInt)+PosFloat)。
因为ViewOffset=View*OffsetTrans,OffsetTrans=makeTrans(OffsetInt),有:
View*makeTrans(Pos)=View*makeTrans(OffsetInt)*makeTrans(PosInt–OffsetInt+PosFloat)。
等式两边消去View有:
makeTrans(Pos)=makeTrans(OffsetInt)*makeTrans(PosInt–OffsetInt+PosFloat)。
根据线性代数基础理论,一个平移变换可以拆分成多步平移变换,这里makeTrans(PosInt–OffsetInt+PosFloat)=makeTrans(-OffsetInt)*makeTrans(PosInt)*makeTrans(PosFloat),有:
makeTrans(Pos)=makeTrans(OffsetInt)*makeTrans(-OffsetInt)*makeTrans(PosInt)*makeTrans(PosFloat)。
根据图形学基础可知makeTrans(OffsetInt)*makeTrans(-OffsetInt)等于单位矩阵,有:
makeTrans(Pos)=makeTrans(PosInt)*makeTrans(PosFloat)。
因为Pos=PosInt+PosFloat,根据图形学基础可知两次平移等于一次平移两次的量,可知makeTrans(Pos)等于makeTrans(PosInt)*makeTrans(PosFloat)。
由此证明等式成立,本方法是可行的。
上述实施例仅为本发明的优选实施例,并非对本发明保护范围的限制,但凡采用本发明的设计原理,以及在此基础上进行非创造性劳动而作出的变化,均应属于本发明的保护范围之内。
Claims (4)
1.基于GPU的三维大坐标处理方法,其特征在于,包括以下步骤:
采集求得模型位置的整数部分PosInt和小数部分PosFloat;
求得相机位置的矫正偏移位置OffsetInt;
利用相机位置的矫正偏移位置OffsetInt构建模型的矫正偏移矩阵TransOffset;
求得矫正偏移矩阵TransOffset的观察矩阵ViewOffset;
求得模型在矫正空间的位置gPos,其表达式为:
gPos=(PosInt–OffsetInt)+PosFloat
求得模型在矫正空间内的变化矩阵gModel,其表达式为:
gModel=makeTrans(gPos)*makeScale(Scale)*makeRoate(Quat)
其中,makeTrans(gPos)表示模型在矫正空间的位置gPos的平移矩阵,makeScale(Scale)表示模型在矫正空间的缩放矩阵,makeRoate(Quat)表示模型在矫正空间旋转矩阵;
求得模型空间到设备空间的空间变化矩阵MVP,其表达式为:
MVP=Projection*ViewOffset*gModel
其中,Projection表示世界坐标投影到设备空间的投影矩阵,
根据空间变化矩阵MVP求得模型局部位置在设备空间的顶点位置。
2.根据权利要求1所述的基于GPU的三维大坐标处理方法,其特征在于,所述求得相机位置的矫正偏移位置OffsetInt,其表达式为:
OffsetInt=(int)CameraPos
其中,(int)CameraPos表示相机的位置坐标的整数部分。
3.根据权利要求1所述的基于GPU的三维大坐标处理方法,其特征在于,所述求得矫正偏移矩阵TransOffset的观察矩阵ViewOffset,其表达式为:
ViewOffset=View*TransOffset
其中,View表示相机的观察矩阵。
4.根据权利要求1所述的基于GPU的三维大坐标处理方法,其特征在于,所述模型局部位置在设备空间的顶点位置是采用空间变化矩阵MVP乘以模型局部位置所得。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010832600.XA CN111951336B (zh) | 2020-08-18 | 2020-08-18 | 基于gpu的三维大坐标处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010832600.XA CN111951336B (zh) | 2020-08-18 | 2020-08-18 | 基于gpu的三维大坐标处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111951336A true CN111951336A (zh) | 2020-11-17 |
CN111951336B CN111951336B (zh) | 2024-01-19 |
Family
ID=73343186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010832600.XA Active CN111951336B (zh) | 2020-08-18 | 2020-08-18 | 基于gpu的三维大坐标处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111951336B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108629798A (zh) * | 2018-04-28 | 2018-10-09 | 安徽大学 | 基于gpu的图像快速配准方法 |
CN109255832A (zh) * | 2018-09-21 | 2019-01-22 | 四川长虹电器股份有限公司 | 一种基于OpenGL的目标光场创建方法 |
CN109887071A (zh) * | 2019-01-12 | 2019-06-14 | 天津大学 | 一种3d电子内镜系统及三维重建方法 |
CN110276808A (zh) * | 2019-06-11 | 2019-09-24 | 合肥工业大学 | 一种单相机结合二维码测量玻璃板不平度的方法 |
US20200058164A1 (en) * | 2018-08-14 | 2020-02-20 | ideaForge Technology Pvt. Ltd | Point cloud rendering on gpu using dynamic point retention |
-
2020
- 2020-08-18 CN CN202010832600.XA patent/CN111951336B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108629798A (zh) * | 2018-04-28 | 2018-10-09 | 安徽大学 | 基于gpu的图像快速配准方法 |
US20200058164A1 (en) * | 2018-08-14 | 2020-02-20 | ideaForge Technology Pvt. Ltd | Point cloud rendering on gpu using dynamic point retention |
CN109255832A (zh) * | 2018-09-21 | 2019-01-22 | 四川长虹电器股份有限公司 | 一种基于OpenGL的目标光场创建方法 |
CN109887071A (zh) * | 2019-01-12 | 2019-06-14 | 天津大学 | 一种3d电子内镜系统及三维重建方法 |
CN110276808A (zh) * | 2019-06-11 | 2019-09-24 | 合肥工业大学 | 一种单相机结合二维码测量玻璃板不平度的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111951336B (zh) | 2024-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107958484B (zh) | 纹理坐标计算方法及装置 | |
EP3803803A1 (en) | Lighting estimation | |
CN112652057B (zh) | 生成人体三维模型的方法、装置、设备以及存储介质 | |
CN111476718B (zh) | 一种图像放大方法、装置、存储介质及终端设备 | |
JPWO2003001458A1 (ja) | 情報処理装置 | |
CN113643414B (zh) | 一种三维图像生成方法、装置、电子设备及存储介质 | |
Upneja et al. | Fast computation of Jacobi-Fourier moments for invariant image recognition | |
JPH03127282A (ja) | ディジタル・イメージのランド変換装置および方法 | |
CN114663597B (zh) | 基于归一化扩展极线几何的实时结构光重建方法及装置 | |
CN108305281A (zh) | 图像的校准方法、装置、存储介质、程序产品和电子设备 | |
WO2019140282A1 (en) | Cross-device supervisory computer vision system | |
US20230409886A1 (en) | Method and apparatus for performing deconvolution processing on feature data by using convolution hardware | |
CN115272110A (zh) | 一种结构光三维重建中投影机畸变校正方法及装置 | |
CN111951336A (zh) | 基于gpu的三维大坐标处理方法 | |
Mosegaard et al. | Real-time Deformation of Detailed Geometry Based on Mappings to a Less Detailed Physical Simulation on the GPU. | |
CN110706332B (zh) | 一种基于噪声点云的场景重建方法 | |
CN114241029B (zh) | 图像三维重建方法及装置 | |
JPH0821087B2 (ja) | 3次元陰影画像生成処理方法 | |
CN114202465A (zh) | 图像旋转方法、图像旋转系统和存储介质 | |
CN111223175A (zh) | 三维人脸重建方法 | |
CN116310145B (zh) | 基于正交基函数的三维空间模型重建方法和装置 | |
Perez et al. | Real-time voxel-based visual hull reconstruction | |
CN116229005B (zh) | 三维巷道模型的测地线确定方法和装置 | |
JP7418517B2 (ja) | テキスト認識の方法、装置、電子機器、記憶媒体およびコンピュータプログラム | |
CN114332603A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |