最近做的一些事情【科研/点云/Github/WxPython】

2018-09-29  本文已影响72人  JianlingZhou

好久没写文章了,说一说最近做的事情。

7月、8月过得比较咸鱼,看了一些论文,补了一些数学,然后就去四川玩了几天,回家待了半个月。

9月份一直做点云处理相关的实验,主要工作就是设计算法、写代码。三维点云实验需要用一些三维显示的库,因为之前导师用的一直是Java3d,我也跟着用Java3d(现在看来也许用Qt3d会好些,我还踩了一些坑),然后用Java语言搭建了一个实验平台。

实验平台

实验平台需要做各种数据的导入(点云、Mesh、中间实验的参数、变换矩阵等),因此写了统一的DataLoader。

实验平台需要跑设计的算法(Pipeline),而点云处理的算法往往是一个个小过程构成,于是我用了Spring来将这些小过程变成一个个JavaBean,他们之间是存在一定的依赖关系的,比如前一个过程输出的图结构需要输入到下一个过程,把普遍用于 Web 应用的Spring 框架用在了科研中,听起来很魔幻,但是我还是做了这件事,哈哈。晒一下最新版的平台的界面:

实验平台UI

整体做起来还是很朴素的,但是有几个重要特性:

开源控件的缺乏

使用 Java 的最大优点就是:我对 Java 太熟悉了,以至于可以用反射、StreamAPI等特性搞一些花里胡哨的东西。但是另一个弊病就是,很多库没有

点云处理的常见的库是PointCloudLibrary(PCL),这个库是基于 C++开发的,没有 Java API,所以很多算法我得自己写。更加恶心的是,我居然找不到一个像模像样的库来读取ply文件。ply文件是一种描述mesh模型的文件,里面可以记录数据点的位置、网格边所连点的索引、数据点法向量等信息,因此可以用来描述一个点云。这么一个常见的数据格式,居然找不到一个像模像样的库来读取,我一度很苦恼。

确实,Github 上有一个库叫jPLY,但是这个库的API不支持调包即用,还需要用户多写N行代码才能把数据读到一个实体对象里面去,因此我干脆写了一个读取ply的库,放到了 Github 上,这个库我打算长期开发,现在 bug 还很多,不过不着急,反正有的是时间调整。

另外,我到 sonatype 上提交了一个申请,要创建一个用于点云处理的Java项目,现在这个玩具项目已经挂到了 Maven仓库 上。 过几天有时间的话,会写一写我怎么把项目放上去的,中间还是走了一点点弯路的。

杂七杂八

9月份白天写 Java,晚上接了个活儿,帮别人写一个桌面程序,技术栈已经被钦定了,用 wxpython,因此我还学了几天的 wxpython,算是把 Python 也给重新熟悉了一遍,以前没注意的一些基本特性都重新学习了一遍。

我把以前的个人网站重新搭建了一下,用的 Hexo,虽然几乎没有任何内容,还是放一下链接吧。

我以前总觉得 Python 这种语言不需要 getter 和 setter,现在觉得正是因为 Py 太过动态和灵活,也许更需要 getter 来防止自己犯错。。。。

上一篇 下一篇

猜你喜欢

热点阅读