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

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

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

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

实验平台

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

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

实验平台UI

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

  • 所有的调整配置的控件都是通过Java注解自动生成的,比如我给一个字段标注了 @Param,那么抽象基类的一个具体方法会在这个算法运行前被调用并扫描所有被标注了的字段,自动生成一个Spinner或者 CheckBox
  • 平台的前后端分离,前端可以是一个GUI,也可以是终端,但是我只是多做了一层接口,没有走HTTP协议,不然前端还可以是网页了,不过从这个角度看也不算纯粹的前后端分离
  • 为中间数据添加了缓存,我使用Kryo库对算法生成的中间数据生成了缓存,通过点云的Md5和配置JSON的Md5去多级查找缓存,之前写的序列化性能测试的文章
  • 通过 Spring 管理组件依赖关系,组件不仅包括算法过程,还包括 DataLoader,缓存管理器,日志工具、梯度下降优化器等
  • 借助已经被废弃的Java 线程的 suspend()、resume() 等API,实现了算法的暂停和恢复,这个其实很有用,因为我们经常需要在算法跑到一半观察效果,以前只能挂断点,现在要方便很多了
  • 做了一个Java3d的BranchGroup的可视化管理,就是图右边那个列表,我可以控制部分元素的显示和隐藏,技术难度不大,纯粹为了调试起来方便

开源控件的缺乏

使用 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 来防止自己犯错。。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容