0.前言

目前已经进行到了逆映射阶段,写完了求解逆映射的代码之后发现,得出来的世界坐标点完全不对,但是对于一元三次方的求解以及逆映射的公式,经过验证推导并无问题。所以找寻问题的答案。

1 问题的可能性原因

1)逆映射的公式

经过验证,逆映射的公式没有问题,也就是一元三次方的求解也没有问题

2)计算dx,dy,dz,ox,oy,oz出错

也不是这个原因

3)计算的的x,y,z有错

因为在求逆映射的过程中,主要用到了dx,dy,dz的值,而这个值来自于Dw=R^T(u,v,f)^T,所以只能是u,v的问题。而u,v的话来自于世界坐标点经过透视投影而来,所以问题就出在世界坐标点上。

2 分析原因

仔细想想,从6月份开始到现在,做的最多的工作就是拟合书本模型,找到系数的范围,利用定积分求得对应的x值。

这些工作完成了之后,透视投影变换是之前的代码,没有做更多的修改。生成样本,训练网络也没有修改。

然后就是逆映射部分做了一元三次方的求解和确定方程组,如何求得世界坐标的工作。

也就是总共的工作分为了三部分:

1)求书本模型的系数范围以及世界坐标点

2)进行透视投影,生成样本,训练网络

3)测试网络,进行逆映射,反向求得世界坐标点

可以确定的是,后两部分工作没有问题。问题只能出现在第一部分。

回头想想,第一部分的工作最关键的是求得了系数的范围,通过大量的观察和总结。然后在这个基础上进行定积分求解x坐标,然后通过多项式公式(系数是在求得的系数范围中随机选取的)求得z的值。

那么其实,这个书本模型的系数范围是在什么情况下确定的呢?是在x位于0到1的范围下找到的规律。

所以呢,在求定积分的时候,x坐标也是从0到1的。在求得这样的x之后,利用多项式

Z_XFun = lambda x: a3*x**3 + a2*x**2 + a1*x**1 + a0

求得了z的值。

然后关键的一步来了,对x进行了-190到190的映射!

for x in posXLst:        posX.append((x-0.5)*380)

在这个地方,问题就开始出现了。

并没有对相应的z进行映射。

也不知道当时怎么想的,满脑子都是符合的曲线。因为如果用映射后的x求得z的值的话,这个曲线完全不符合要求。

所以,当时找了一个符合曲线的z值,那就是用0到1的x求得的z值。

然后用这个z值与x值进行透视变换以及接下来的所有,到了逆映射阶段,我就发现不行了,出问题了!

3 解决方案

对z值也进行相应的映射。当然是用0到1的x计算得到的z值。

经过验证,这个曲线也符合要求。

那么,接下来要做的就是,用这个坐标,重新生成样本,进行逆映射,

可以先生成几个,然后测试一下逆映射的正确与否,如果任然不对,那就继续找寻问题所在!

4 验证是否解决

没有解决。问题的原因就是这个。求逆映射的公式中,带入了z=a3*x^3+a2*x^2+a1*x+a0,所以,x和z必须满足这个关系。然后对z进行和x一样的映射之后,x和z的关系并不成立,所以无法这么计算。

那到底该怎么做呢?

书本变形模型上的透视投影问题总结相关推荐

  1. CG笔记之一——透视投影

    以前以为投影也就投影了,并不了解投影也可视作坐标变换,而且也是一个齐次坐标(Homogeneous Coordinate)系的坐标变换.因此书中的介绍一开始也不明白--它说透视投影会把直线映射成曲线, ...

  2. [补充]上集 Ch. 19-12(AJAX)在ListView / GridView的「样版」里面,放置 UpdatePanel

    这是我的文章备份,有空请到我的网站走走, http://www.dotblogs.com.tw/mis2000lab/ 才能掌握我提供的第一手信息,谢谢您.   http://www.dotblogs ...

  3. 基于MFC的透视投影算法实现

    基于MFCMFCMFC的透视投影算法实现 本文是在上一篇博客基于MFC的平行投影算法实现的基础上实现透视投影中的一点透视. 两种方法实现 一.添加事件处理程序实现 设置IDIDID为ID_Yidian ...

  4. 《Real-Time Rendering 4th Edition》全文翻译 - 第15章 非真实感渲染(上)15.1 ~ 15.2

    好久没更新了~ 由于对NPR方面比较感兴趣,所以任性了一下,先翻译了这一章~ 业余翻译,若有不周到之处,还请多多指教! 实时渲染(第四版)Real-Time Rendering (Fourth Edi ...

  5. python实现——在图像上放置虚拟物

    前言:虚拟物是指一些3D模型,在图像上放置虚拟物就是以一张图片为背景,在把绘制的3D图放置在指定的位置上.除此之外还可以用于视频中放置虚拟物,实现动图放置3D模型.在这个例子当中,是通过照相机标定获得 ...

  6. 《Real-Time Rendering 4th Edition》全文翻译 - 第4章 变换(下)4.5 ~ 4.7

    第四章终于结束了--接下来会休息一段时间,祝各位五一劳动节快乐! -- 想了想还是不休息了,继续继续!! 实时渲染(第四版)Real-Time Rendering (Fourth Edition) 第 ...

  7. 计算机图形学 实验三 相机、阴影、光照

    文章目录 实验3.1 相机定位 一. 实验目的 二. 理论背景 1.各个坐标系 世界坐标系 相机坐标系 模型视图矩阵 ndc坐标系 2. 齐次坐标 3. OpenGL观察变换 三. 实验内容 Look ...

  8. 万字长文详解如何用Python玩转OpenGL | CSDN 博文精选

    作者 | 天元浪子 来源 | CSDN博文精选 [编者按]OpenGL(开放式图形库),用于渲染 2D.3D 矢量图形的跨语言.跨平台的应用程序编程接口,C.C++.Python.Java等语言都能支 ...

  9. OpenGL基础知识

    基本概念 透视(Perspective) 变换(Transformation) 投影矩阵(Projection Matrix):用于将3D坐标转换为2D屏幕坐标 光栅化(Rasterization): ...

最新文章

  1. 宏基因组公众号创立初衷及如何注册一个名字好记的公众号
  2. 找出重复的数java_剑指offer:1.找出数组中重复的数(java版)
  3. 更改记录表CDHDR和CDPOS
  4. myjdbc链接数据库.增删改查
  5. LeetCode 426. 将二叉搜索树转化为排序的双向链表(BST中序循环遍历)
  6. linux ntp软件下载,Linux_Linux时区同步问题(安装ntp软件过程),下载了一个windows的NTP服务程序 - phpStudy...
  7. ubuntu 下安装apache服务器
  8. 95-40-150-java.util.concurrent-ExecutorCompletionService
  9. webpack的一些plugin,怎么使用webpack对项目进行优化
  10. 漏洞奖励计划的五大成功要素问答实录
  11. 应用安全-XXE(XML外部实体注入)攻防整理
  12. ENVI5.3.1使用Landsat 8影像进行灰度分割(密度分割)
  13. 【图像去噪】基于matlab小波域双重局部维娜滤板图像去噪【含Matlab源码 1642期】
  14. 密码学 ZUC算法 Python实现
  15. 小米蓝牙耳机持续白灯_小米蓝牙耳机不能自动串联问题
  16. 常见阿拉伯数学符号以及拼写
  17. 视频文件服务器加速,百度云加速视频加速缓存设置教学
  18. 制造业信息化与现代企业管理
  19. Camtasia 2019卸载-无痕强力卸载
  20. pycharm的配置——字体

热门文章

  1. 数据分析告诉你,为什么《延禧攻略》这么火?
  2. thymeleaf 引如js文件后 函数不触发
  3. HDU - 1164 - Eddy‘s research I
  4. Mockito模拟器
  5. WordPress主题 知更鸟Begin V5.2版响应式个人博客源码
  6. windows xp系统下Android模拟器安装apk与卸载apk
  7. WIN10任务管理器中看不到GPU的使用情况
  8. 高德地图四月新增数千条重要道路 数据能力持续领先
  9. vue项目发布后禁止 favicon.ico 请求
  10. 我的 2020 总结