比如去互联网上搜集某个景点游客拍摄的图片。做joint optimization。做local featurization会发现各有一堆的feature点,任何两张feature点可以构造几千个点,算出空间的位置。如果联立照片中三维点的位置就能重现一个点云出来,用点云刻画三维场景中点的位置。但因为只是一个点云,不是完整地构造几何的表面。同时对于那么多图像,可以算出每一张是哪个位置拍的,google的街景就是这样,这些点云可以自己算出来是哪个位置拍的并精确到pixel level的位置。这样就可以让你很好的在照片与照片间游走。就重建这个三维。 回想一下,这里用到的技术。每个点成像怎么来的,根据这个定义local feature ,找到两个点的对应关系并进行transformation。所有的变化是在image space里面变换的。这里的不同位置是有视差的,求解不是图像空间的变换,是三维空间的变换。两两去做会发生最后的点云和重构的点云接不起来。因为传递会积累误差。如果距离很远的话我们就要去重构一个大范围的物体差别在于不同的图像重叠部分有多大,如果很大,那么drafting也会很大。那如果每次都重叠很小,transformation是通过链条积累起来的。这个就需要大量的feature点联合。 high-level vision task的时候,成像是一个imperfect的,而且有一个假设,不是我们想获得什么数据。同时获得的数据是有问题的。告诉我们图像的变化是怎么来的,是不是我们想要的。如果可以预先知道,提前去掉,使得数据的使用率大大提高。一旦high-level里数据不够,出现误差,不能收敛,我们就需要去看看数据怎么来的,回头看看low-level vision怎么来的。做machine learning等的时候,有时候去死调你的算法参数不如获得更多的信息更好的数据有用,根据场景设计你的传感器系统,camera放在什么位置,什么光源。这个对high-level understanding能不能做好很重要。 1. 点云生成后下一步是什么呢? 基本的思想是两个方面的信息,告诉你每个点的位置直接连线,不一定可靠。每个点周围有很多点。先构建一个graph,和周围联系起来,但不能保证重构起来的是合法的流形。此时就有一堆几何处理的算法砍掉不正常的边和点。当图像足够多的时候还可以知道每个点的法向量。如果对同一个点,拍的照片能发现不同光照的亮度,根据拍摄时间和朝向估算光源的位置。在图像空间中重构法向量,不但给位置也给法向量。一旦有法向量就知道和graph哪些边是不能连的,可以更好的构造面。 2. VR里vision是否需要更多算法去提高渲染质量? 不是vision的事情更多是graphics的事情。为了得到高质量渲染的图像,对物体的material要有很好的描述,比如BRDF能在计算机里渲染出和照片一样逼真的画。第二个是光照。除了photography上的应用,在computer graphics里也很有意义。早期看到的graphics渲染的东西很artificial,很大问题是点光源化。现实中不存在绝对的点光源,光还会间接照射这个物体,本身是全局的光照计算照射系统。用HDR图像刻画整个场景对它的光照。不是一个点去照射,而是一个球面积分,这样渲染的质量会更接近真实的世界。VR现在机能没有那么强。 3. 三维空间的表面反射比较强部分,怎么重建三维? 最基本的方法是找到不同视角对应的点,反算在空间的位置。但一旦对应关系不能被建立,就不能通过找对应重构。这里用photometric stereo,对物体打个侧面的光。打很多侧面的光,如果有物体表面反射一定假设,就能求出每个表面的法向量。只要改变光源的位置就能求出空间中每一个法向量是多少了。有了法向量,积分就可以求出物体的曲面,位置。另外一套算法是把场景弄成一片一片,每一片都可以求到一块集合。先用法向量来做。比如说有的物体表面反射光强和奇怪,不能找对应。那么把图片单独做,把面上的法向量求出来,和视角无关。我们就可以回到原来的路,找对应,不是用RGB color找对应,而是用法向量构成的feature来做。 4. 机器学习中识别RGB ,如何用光度的方法如何把法向量丢进去学? (责任编辑:本港台直播) |