这次的项目是结合3D技术做出人脸识别,首先的工作就是了解3D模型,为此,这一阶段的任务就是利用程序作出3D模型并研究3D模型的特点。
我的阶段任务分为两部分:一.考察3D建模对2D素材的要求;二.尽可能多的尝试已有的建模方法。
一.建模的图片要求
关于这方面,确实不好说,我查过了一部分资料,主要为别人的博客,和部分官方对旗下的产品的说明,有几个基本点是共同的:
对于物体:
1.物体不能移动(这个就是废话了。。。。)。
2.物体不要有大量的反射,也不能是半透明。因为光的颜色和亮度在不同角度看是不一样的,会影响到建模,,它可能把光线也算作一种“物体”。
3.物体最好不要只有一种颜色,照片建模软件很难重建纯色的物体。
4.非常薄的物体。软件生成点云时,当拍摄物的一个面非常薄,软件没有办法在上面找到足够多的点并计算出它的形状。此外,沿着薄片的长度方向搜寻点也十分困难。
5.纵横交错的物体。由于软件在照片之间追踪同名点,纵横交错的物体会导致软件遗失很多在某张照片上搜寻出的点。特别是那些看起来非常相似的纵横交错的物体,比如树上的树叶,软件无法确定某个点到底是前一张照片上位于远处的同一个点,还是另外一个点。
还有灯光的要求,但是我只搜索的大概是“合适”的灯光,怎么个合适法。不知道
对于相机。。。。。。emmmmm。。。。搜索到一堆东西,但懂得不多,放链接吧(其实手机的傻瓜相机已经很不错了):
https://www.sohu.com/a/167977948_300353(这是详细的,总体的说明)
http://www.3dcloud.cn/bbs/forum.php?mod=viewthread&tid=161&extra=page%3D1(这是3Dcloud的论坛官方说明,嗯,大概是官方的,链接有放在建模说明里,3Dcloud就是下面我建出来的鬼模型,用的那个建模方法)
http://www.zbddd.com/forum.php?mod=viewthread&tid=122&extra= (以一个点为圆心,半径要一样,匀速转动 ,这样拍出来的照片,在转化模型的时候效果比较好)
二.建模方法
刚开始有点蒙圈,老想着用现成的,就查了好多成熟的软件(甚至是别人家成熟的建模软件),姑且是说一下,展示下我这周没偷懒(然而事实是。。。。我用的心确实不多):
1.首先用的是一个国产的软件,是一个深圳公司的,可以申请20天的免费使用,下载地址(官方):http://www.zwpix.com/gsjj.asp?id=18。不得不说,这公司真是个奇葩,第一次见(可能我软件公司见少了吧)把自家产品挂在百度云上提供下载的,当时看着没开百度云会员的条件下,限速的百度云每秒不到100kb的下载速度,真的是崩溃。。。。弃了,弃了。
2.大名鼎鼎的Autodesk 123D catch,这是是世界级的公司,就是有一点。。。。外国的,被墙限速了(人与人之间为什么不能多一点真诚,这么多限速),在艰难的打开网页,申请账号,从一大堆公司推荐产品中找到123D catch就是已经够烦人了。还好这是个免费软件,可以免费使用,然后就发现自己太天真了。一堆的申请还等着你,同时你还被墙卡着,上不上,下不下。反正我是没有一次填到最后,最后下的中国破解(盗)版,还只有win系统的,我这个mac用户已经mmp了,去了机房还有更坑的。。。。这个单机版只能操作模型,要想2D图片建模还是需要翻墙登陆Autodesk公司的账号,利用云服务来合成。够了,我想静静。。
3.然后尝试了一个3Dcloud,就是你在百度上输入“照片建模”的第一个网址,成功居然离自己这么近。然后就是喜闻乐见的注册账号,申请合成。云服务,你需要传照片给服务器,由服务端替你完成工作,然后传模型供你下载(我终于反应过来,好像有哪里不对)。按照步骤一步步来啰,第一个模型就选宅男收藏品中的一个,高达,它大概长这个样子
然后就是拍了大概30多张照片,50多M上传,等了好一会(上传是一段时间,建模又是一段时间大概5分多钟,而且还是不算我前面还有一个等待任务)。
建出来的模型大概是长这个样子:
。。。。。。。。保持微笑。。然后:这什么鬼,我的高达怎么建出来这么个鬼玩意儿,这网站不是逗我吧。
然后看看别人建出来的:
好吧,可能第一部分,照片要求我白写了。。
除此之外,照片建模已经是一门很成熟的技术,现在网上有大量的现成软件可以完成这个任务,方法大同小异,(从我等待3Dcloud时,网站给出的提示可以看出,都是包含了稀疏点云,稠密点云,生成网格等等的步骤),你甚至还能看到清华大学和美国的特拉维夫大学的研究学者写出的根据一张照片建立模型的程序。不过上述大部分软件都是成熟的,有商业价值,已经被应用于绘测,游戏,建筑等领域的商业软件,换句话说就是这些都是别的公司的产品,已被封装的程序,程序放在服务器上,我们只能利用客户端上传资料,建模过程都是服务器完成,我们接触不到源码自然是不可能利用的(法律上也不会允许侵犯专利)。再附加一张3d模型建立和处理方面的软件总结,是中科大教授的一篇介绍,介绍了超多超详细,可以用来大致了解目前3D模型软件的大致现状:http://3dfun.com.tw/3dnews/3d建模与处理软件简介/
然后我终于发现,我是要做的项目是要求对人脸建模,并用来进行认别,也就是必须有源代码,可能还要根据具体需求更改代码功能,em。。。。。发现问题了,我现在做的测试没什么用顶多只是试试别人成熟的技术,了解到相关领域的现状,对我们的项目编写没有太大帮助。中途调转炮口,研究怎样利用代码建模。
首先第一类:别人写好的组件和算法,利用某些软件来进行3D建模。(当然是开源的)
这个目前的主流是VisualSFM(找出各张照片中的特征点,进行两两匹配,根据匹配的结果,利用射影定理计算得到相机位置等场景信息将场景信息与原始照片结合在一起,得到照片中物体的三维点云,以上即是SFM算法建模)
+ CMVS-PMVS(创建稠密点云)
+ Meshlab(进行网格处理,利用三维点云创建三维模型)
当然,还有利用openCV实现SFM算法(大神专属建模方法),上面的主流方法只适用于windows操作系统(用mac的我再次感受到世界深深的恶意),还有Bundler+ CMVS-PMVS和 Meshlab方法可以用在linux系统上,需要用linux系统的命令行来实现,据说成像效果最好(这和我这个冷酷的mac用户有什么关系呢。。。。),缺点是它只能建成一面,“我把物体四周都拍了,他就拆开,前后建在一面,我也是很惆怅。”——来自某个博主的话:https://blog.csdn.net/moneyhoney123/article/details/78318506(建模方法分析)
最后,还是脚踏实地,踏踏实实的用代码写建模吧。。。。才有鬼咧。我没修计算机图形学,这个项目也算事半道出家(也算别人可怜我),让我从头写。。。。。估计项目交差事时我也写不完,上github吧。互联网时代还真是个好时代,共享概念深入人心,我也在github上找到了开源的人脸重建项目,可喜可贺,可喜可贺。。。信不信我掀桌啊,(╯°Д°)╯︵┴┴代码是用scale语言写的。。。我个小白,玩鬼啊。
不说了,都是泪啊,搞个建模搞的烦死了,目前在搭建scale环境,不知道Intellij IDEA能不能用,慢慢来吧。附上github上的源代码地址:
https://github.com/unibas-gravis/scalismo-faces
https://github.com/AaronJackson/vrn
https://github.com/unibas-gravis/basel-face-pipeline
下面是我参考的一些不知道放哪里的小资料,也顺手附上吧:
基于图像的场景三维建模:https://blog.csdn.net/gzq0723/article/details/79597650(照片建模过程及详细算法介绍)
Autodesk 123D如何进行拍照:http://v.youku.com/v_show/id_XMzY0Mzg4ODA0.html(Autodesk 123D 的照片要求介绍,纯英文,可以练练听力)
第一次正规的写博客(上次项目是黑历史,已经丢进记忆的垃圾堆了),不知道怎么写才能完整的写出我的项目阶段汇报,写到后面完全写嗨了,写到放飞自我,下次注意。另外这次博客引用网址过多,完全是依靠别人的经验来解决自己项目的问题,自身感悟过少,同样,下次注意。这次的汇报,让我清楚的认识到了自身基础薄弱,各种能力(自学能力,利用网络的能力)欠缺,以后会注意补正。
来源:https://www.cnblogs.com/Hellcythe/p/10153551.html