请问如何得到一个三维空间物体映射到二维空间的轮廓?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问如何得到一个三维空间物体映射到二维空间的轮廓?相关的知识,希望对你有一定的参考价值。

C++当中,应该用到那些函数呢?

对于一般的图形这种映射是很困难的,要用到OpenGL这样的专业软件去做,但是如果只是多边形,可以对端点做映射,再直接将映射后的端点用线段连接起来。之前看过一个公式:设三维空间中的点坐标为(X,Y,Z),则变换后的二维坐标为(X*d/Z,Y*d/Z)其中d是参数,可以自己尝试选一个看着舒服的。不过我没有亲测过,试试吧。另外,这个变换由于不是线性变换,不能像楼上说的那样用矩阵算。 参考技术A 没有相应的函数的,除非用第三方的函数库(opengel之类的)
提提思路
首先三维空间物体是三维坐标的,x、y、z三个坐标,转换为二维的话,其实是做了一个坐标映射,而坐标映射其本质就是一个矩阵的乘法,这些矩阵的原理这里就不提了,很复杂,网上有很多,可以找找,矩阵的运算网上也有很多现成的函数。

当每个点都转换为二维坐标后就可以求出二维的投影图了本回答被提问者采纳

SVM(支持向量机)

1.什么是SVM

通过跟高斯“核”的结合,支持向量机可以表达出非常复杂的分类界线,从而达成很好的的分类效果。“核”事实上就是一种特殊的函数,最典型的特征就是可以将低维的空间映射到高维的空间。

技术分享图片技术分享图片?

我们如何在二维平面划分出一个圆形的分类界线?在二维平面可能会很困难,但是通过“核”可以将二维空间映射到三维空间,然后使用一个线性平面就可以达成类似效果。也就是说,二维平面划分出的非线性分类界线可以等价于三维平面的线性分类界线。于是,我们可以通过在三维空间中进行简单的线性划分就可以达到在二维平面中的非线性划分效果。

技术分享图片技术分享图片?

图  三维空间的切割

 

SVM的英文全称是Support Vector Machines,我们叫它支持向量机。支持向量机是我们用于分类的一种算法。让我们以一个小故事的形式,开启我们的SVM之旅吧。

在很久以前的情人节,一位大侠要去救他的爱人,但天空中的魔鬼和他玩了一个游戏。

魔鬼在桌子上似乎有规律放了两种颜色的球,说:"你用一根棍分开它们?要求:尽量在放更多球之后,仍然适用。"

技术分享图片技术分享图片?

于是大侠这样放,干的不错?

技术分享图片技术分享图片?

然后魔鬼,又在桌上放了更多的球,似乎有一个球站错了阵营。显然,大侠需要对棍做出调整。

技术分享图片技术分享图片?

SVM就是试图把棍放在最佳位置,好让在棍的两边有尽可能大的间隙。这个间隙就是球到棍的距离。

技术分享图片技术分享图片?

现在好了,即使魔鬼放了更多的球,棍仍然是一个好的分界线。

技术分享图片技术分享图片?

魔鬼看到大侠已经学会了一个trick(方法、招式),于是魔鬼给了大侠一个新的挑战。

技术分享图片技术分享图片?

现在,大侠没有棍可以很好帮他分开两种球了,现在怎么办呢?当然像所有武侠片中一样大侠桌子一拍,球飞到空中。然后,凭借大侠的轻功,大侠抓起一张纸,插到了两种球的中间。

技术分享图片技术分享图片?

现在,从空中的魔鬼的角度看这些球,这些球看起来像是被一条曲线分开了。

技术分享图片技术分享图片?

再之后,无聊的大人们,把这些球叫做data,把棍子叫做classifier, 找到最大间隙的trick叫做optimization,拍桌子叫做kernelling, 那张纸叫做hyperplane

 

以上是关于请问如何得到一个三维空间物体映射到二维空间的轮廓?的主要内容,如果未能解决你的问题,请参考以下文章

摄像机模型

宋圭武猜想(82)量子纠缠是由于物体维度变化所致

WPF三维图形

Direct-X学习笔记--纹理映射

SVM(支持向量机)

shader编程-二维空间中使用矩阵实现物体的旋转缩放平移变换(WebGL-Shader开发基础03)