请选择 进入手机版 | 继续访问电脑版

开源计算机图形学社区(Open Source Computer Graphics Community) |OpenGPU Forum (2007-2013)| OpenGPU Project

 找回密码
 注册
搜索
查看: 1589|回复: 9

有关"Texturing a Head With Projection Painting"的问题 [复制链接]

Rank: 8Rank: 8

注册时间
2013-11-15
积分
154
发表于 2016-12-10 10:33:17 |显示全部楼层
最近,在youtube.com上面看到这个视频"Texturing a Head With Projection Painting",但是一直想不通它是如何对应起来的,希望各位同仁指点一二!谢谢!

Rank: 13Rank: 13Rank: 13Rank: 13

注册时间
2014-4-25
积分
1866
发表于 2016-12-10 13:46:01 |显示全部楼层
一个三角面片可以表示为3个坐标点,而3个坐标点可以确定一个平面,以其中一个坐标点为原点,分别连接另外两个点做射线可以得到两条关于原点相交的射线,这就是一个小的二维坐标,这样每个三角面片所确定的二维坐标就可以和照片上一个面片所圈定的区域有坐标映射关系...
最简单的理解大概就是这样。

使用道具 举报

Rank: 8Rank: 8

注册时间
2013-11-15
积分
154
发表于 2016-12-11 13:46:27 |显示全部楼层
但是它们是如何影射到三维空间呢?

使用道具 举报

Rank: 13Rank: 13Rank: 13Rank: 13

注册时间
2014-4-25
积分
1866
发表于 2016-12-13 20:37:50 |显示全部楼层
ibruce 发表于 2016-12-11 13:46
但是它们是如何影射到三维空间呢?

先接受这样一个概念,不存在所谓的三维空间。
有一个点P(x,y,z),我假设摄像机的位置C(x1,y1,z1),摄像机的朝向D(x2,y2,z2)。
用投影算法(本身也可以理解成一个函数映射),就可以算出P在摄像机C的胶片(投影平面)上的投影,也就是点P在屏幕上的坐标。我现在论文正好写到这个的背景介绍。
我能算出一个坐标点投影到屏幕上的坐标,同样就能算出N个坐标点投影到屏幕上的坐标,我只要把这N个点都投到屏幕上,是不是就可以根据它们的拓扑关系在屏幕上把它们连起来,这样就得到了整个三维网格在二维屏幕上的样子了。
我再将纹理按照点对应的关系铺到这个网格上就可以了。
如果你初学图形学,不担心,不要急很快你能理解到这个水平的。我以前也经历过这个阶段。
如果只是感兴趣,中间可能有很多过程不能理解,没有关系,你只要接受一个概念,就是所谓的三维空间,实际上“空间”是不存在的,我们只是记录很多点的坐标,想办法在二维荧屏上展示出这些坐标点的样子。当我们做到这一步的时候,我们只要在屏幕上再现这些顶点和纹理/网格的对应关系,就已经把纹理、网格填补到这些顶点中间了。
希望能帮到你。

使用道具 举报

Rank: 8Rank: 8

注册时间
2013-11-15
积分
154
发表于 2016-12-14 09:18:42 |显示全部楼层
gon3d 发表于 2016-12-13 20:37
先接受这样一个概念,不存在所谓的三维空间。
有一个点P(x,y,z),我假设摄像机的位置C(x1,y1,z1),摄像机 ...

非常感谢!听君一席话,胜读十年书!但是,我还有一个疑问,三维空间的摄像机参数需不需要和图片采集时所使用的现实中的摄像机的参数相同,因为我见OpenCV有相机标定。如果,两个相机的参数差异较大的话,二维点匹配后的三维空间其实和实际也会有较大的差异。

使用道具 举报

Rank: 8Rank: 8

注册时间
2013-11-15
积分
154
发表于 2016-12-14 09:35:00 |显示全部楼层
gon3d 发表于 2016-12-13 20:37
先接受这样一个概念,不存在所谓的三维空间。
有一个点P(x,y,z),我假设摄像机的位置C(x1,y1,z1),摄像机 ...

其实,我的疑惑是如何确定或者选定3D摄像机的位置C(x1, y1, z1)和摄像机的朝向D(x2, y2, z2),谢谢!

使用道具 举报

Rank: 13Rank: 13Rank: 13Rank: 13

注册时间
2014-4-25
积分
1866
发表于 2016-12-14 11:49:27 |显示全部楼层
opencv一般是用于做图像方面的实验,比如机器视觉什么的。
可以这样理解:位图-图像;矢量-图形(几何)
opencv做三维图形不多,一般opencv涉及到摄像机姿态问题的是在机器视、AR领域比较多。
我没看你这个视屏,如果说它实现的主要技术是网格和照片的自动匹配,那么核心技术其实是对人脸的自动识别。
网格上的锚点其实是可以指定的,网格拉伸变换的算法现在也比较多了。
面部识别方法也不止一种,主要根据特征描述和精细度要求会有不同的策略。
总的来说,计算机里的三维空间,是不需要考虑实际中相机和目标物体的关系的,而实际中相机姿态的估计一直是个很大的课题,我身边的用slam算法用比较多吧。不过通过你的截图,这个人物是在特定的相机角度和参数下拍摄的,而且有人工交互,相机姿态应该不是非常麻烦。

使用道具 举报

Rank: 8Rank: 8

注册时间
2013-11-15
积分
154
发表于 2016-12-14 20:49:40 |显示全部楼层
gon3d 发表于 2016-12-14 11:49
opencv一般是用于做图像方面的实验,比如机器视觉什么的。
可以这样理解:位图-图像;矢量-图形(几何)
open ...

非常感谢!但是我还有一个疑问,人体头部的建模如果根本图像来设定大小,由于摄像机距离的问题会产生误差,有可能头比实际大很多或者小很多,不知道您能不能提供一些建议,将误差降低。

使用道具 举报

Rank: 13Rank: 13Rank: 13Rank: 13

注册时间
2014-4-25
积分
1866
发表于 2016-12-15 13:38:13 |显示全部楼层
等我找找导师本科的课件。
使用morphing的方法,只要图像和网格的主要锚点一一对应,就可以重合。
找图像上锚点的方法,最简单可以寻找照片上的高频特征,然后和人类脸部布局左匹配,调试好匹配的算法和迭代停止的阈值,就可以较为准确的标定出图像中眼角/鼻翼/嘴角/颌结节/眉心这些位置。然后和建好的头部网格模型匹配就好。

使用道具 举报

Rank: 8Rank: 8

注册时间
2013-11-15
积分
154
发表于 2016-12-16 12:29:56 |显示全部楼层
gon3d 发表于 2016-12-15 13:38
等我找找导师本科的课件。
使用morphing的方法,只要图像和网格的主要锚点一一对应,就可以重合。
找图像上 ...

非常感谢!

使用道具 举报

最近看过此主题的会员

您需要登录后才可以回帖 登录 | 注册

‹‹
我的工具栏

关于我们|手机版|Archiver|开源计算机图形学社区(Open Source Computer Graphics Community) | OpenGPU Project | OpenGPU Forum (2007-2013)

GMT+8, 2017-5-30 05:00 , Processed in 0.106377 second(s), 20 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部