简单记录一下自己对VisualHull 和 association4D 两个程序的理解,没有别的意思(当然是真的

  由于进度还很慢,暂时只是简单记录一下发现的点和踩过的坑,做完再把资料汇总。

VisualHull

①模块划分

  首先我们需要大致读懂原本的代码。

  直接从main里面看这个程序都做了什么工作,主要消耗时间的是getModel(),getSurface(),saveModel(),saveModelWithNormal(),PoissonRecon.x64,我们就只关心这些好了。

  大致看一下这些模块各自消耗了多少时间:

  

  (此处第一个数字是这个本身模块的耗时,第二个数字是累计耗时,总耗时5.16s,除去外部代码PoissonRecon的话是2.61s)

②初步优化

  接下来我们看看哪些模块可以优化。

  先放一张优化后的图:

  

getModel

  这个部分的作用是将图片信息还原为三维点阵,每个点0/1表示这个点是否在模型的内部。

  原本代码的写法是暴力三个for,每个位置都judge一次,这样显然有大量空白位置被judge了很多次。

  于是我们采用这么一种方法:先随便找到一个在模型内部的点,从这个点开始搜索,遇到模型外部的点就不往外搜,满满填满这个模型的内部。这样一来,如果模型是被分割成多个块,它就只能找到一个,但是没有关系,我们默认人体模型都是连在一起的好了……

  效率:839ms->207ms,这个与最终结果里模型的大小有关,模型越小,效率越高。

saveModel && saveModelWithNormal

  这个纯粹是在输出,就没什么技术含量,但是原代码是用流输出,那显然我们改成fprintf或者fwrite就会快很多。实际快了接近50%。

  到这里前4个模块快了一半,但咱好像没啥可以接着往下做的地方了,比较瓶颈完完全全是在于输出,那个PoissonRecon又实在不想动它。

③尝试自己导ply文件

  查一下ply文件的编码格式,我们就只需要输出一些点的坐标和面的坐标就行了。在前面的getModel、getSurface中我们已经把点处理出来了,那自己把面也捣鼓出来不就完事了嘛。

  从点生成面的部分我是直接枚举点阵中每一个单位立方体,根据8个点的状态来判断要给它加哪些面,大致枚举一下哪些矩形、哪些三角形有可能出现就往里塞。

  

  效率还是很高的,只需0.8s,效果嘛……就有点丑了。

   

  总体看还行,放大看就很粗糙了。

  

association4D

①准备工作

  VisualHull没有任何问题,association4D(15)存在缺dll导致OpenCV无法正常读入视频的问题,更新后时测需要将助教放在x64/Release下的opencv_videoio_ffmpeg310_64.dll修改为opencv_ffmpeg310_64.dll

  原代码在我的笔记本上需要126s左右。嗯,这个时间挺好的,优化起来效率的提高肉眼可见。

  删掉SaveResult最后的三个imwrite,时间降到14s。再仔细测试各模块耗时,输入9+s,SaveResult 4+s,核心工作模块加起来不到0.5s。

  瓶颈在输入输出这让我优化个啥???

VisualHull && association4D 观摩记录的更多相关文章

  1. 罗永浩专访全文记录(转自好奇心日报-http://www.qdaily.com/)

    这篇文章是转的,存档做记录,定期看一看,激励自己遇到到困难时,想想人家比自己难多了,自己那点事算个屁啊.学习别人,不要带有傻逼主观倾向性,这样什么也得不到,我看完后,发现有一句话,说的非常好,自己有自 ...

  2. 记一次debug记录:Uncaught SyntaxError: Unexpected token ILLEGAL

    在使用FIS3搭建项目的时候,遇到了一些问题,这里记录下. 这里是发布搭建代码: // 代码发布时 fis.media('qa') .match('*.{js,css,png}', { useHash ...

  3. nginx配置反向代理或跳转出现400问题处理记录

    午休完上班后,同事说测试站点访问接口出现400 Bad Request  Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...

  4. Kali对wifi的破解记录

    好记性不如烂笔头,记录一下. 我是在淘宝买的拓实N87,Kali可以识别,还行. 操作系统:Kali 开始吧. 查看一下网卡的接口.命令如下 airmon-ng 可以看出接口名称是wlan0mon. ...

  5. 2015 西雅图微软总部MVP峰会记录

    2015 西雅图微软总部MVP峰会记录 今年决定参加微软MVP全球峰会,在出发之前本人就已经写这篇博客,希望将本次会议原汁原味奉献给大家 因为这次是本人第一次写会议记录,写得不好的地方希望各位园友见谅 ...

  6. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  7. 我是如何在SQLServer中处理每天四亿三千万记录的

    首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. ...

  8. 前端学HTTP之日志记录

    前面的话 几乎所有的服务器和代理都会记录下它们所处理的HTTP事务摘要.这么做出于一系列的原因:跟踪使用情况.安全性.计费.错误检测等等.本文将谥介绍日志记录 记录内容 大多数情况下,日志的记录出于两 ...

  9. ASP.NET Core应用中如何记录和查看日志

    日志记录不仅对于我们开发的应用,还是对于ASP.NET Core框架功能都是一项非常重要的功能特性.我们知道ASP.NET Core使用的是一个极具扩展性的日志系统,该系统由Logger.Logger ...

随机推荐

  1. Jenkins配置LDAP认证

    managerdn即为连接到AD的账号

  2. 这些Python库真的很“冷”,但是却很强大

    Python是一种很棒的编程语言.事实上,它还是世界上发展最快的编程语言之一.它一次又一次证明了它在数据科学职位中的实用性.整个Python及其库的生态系统使其成为全世界用户(初学者和高级)的合适选择 ...

  3. Bacula Plugins

    1. loadPlugin 插件通过加载动态库loadPlugin函数开始,此函数包括bacula的回调和Plugin的注册 bacula的回调 typedef struct s_baculaFunc ...

  4. 【分布式搜索引擎】Elasticsearch之开启Elasticsearch的用户名密码验证

    一.首先在elasticsearch配置文件中开启x-pack验证, 修改config目录下面的elasticsearch.yml文件,在里面添加如下内容,并重启 xpack.security.ena ...

  5. 5. [mmc subsystem] mmc core(第五章)——card相关模块(mmc type card)

    零.说明(重要,需要先搞清楚概念有助于后面的理解) 1.mmc core card相关模块为对应card实现相应的操作,包括初始化操作.以及对应的总线操作集合.负责和对应card协议层相关的东西. 这 ...

  6. Centos7安装dubbo与zookeeper服务配置

    目录 环境: 第一步:安装jdk,并且配置环境变量 1.解压jdk: 2.配置环境变量: 3.保存并使文件立即生效: 4.立即重启虚拟机,进行下面的安装 第二步:安装注册中心zookeeper 1.解 ...

  7. C语言杂

    atof——把字符串转化成浮点型 C语言标准库 头文件: #include <stdlib.h> 定义函数:double atof(const char *nptr); #include ...

  8. (十)OpenStack---M版---双节点搭建---Heat安装和配置

    ↓↓↓↓↓↓↓↓视频已上线B站↓↓↓↓↓↓↓↓ >>>>>>传送门 本章节仅在Controller节点执行 1.Controller节点执行安装和配置 2.验证操作 ...

  9. UGUI 逻辑以及实用性辅助功能

    UGUI 有它的实用性, 可是也存在理解上的困难, 因为它在面板上的显示内容根据布局而变动, 如果不深入理解它的设计原理, 估计每次要进行程序上的修改都需要进行一次换算和测试过程. 1. 设置某UI的 ...

  10. 初始v4l2(六)-------根据虚拟驱动vivi的使用彻底分析摄像头驱动

    前面的几篇文章已经分析了v4l2的框架,对框架的分析是比较粗浅的,能基本清楚函数之间的调用过程.但是很多内容并没有分析,比如说里面有很多ioctl,并没有分析哪些ioctl是必须的,也没有分析如何从应 ...