写House3D渲染的时候踩过的坑

House3D 是一个用于research的交互式3D环境. 用户可以载入一个来自SUNCG数据集的房子的模型,然后在里面走来走去,并获得first-person view的图片输入.

我写了House3D的渲染代码,过程中踩到了不少神奇的坑,坑踩的多了就觉得干脆记下来吧.

Explode Tuple in C++11

std::tuple是C++11中的一个好东西. 它功能上算是std::pair的扩展, 但有一些其他的用法.

例如, 可以借用tuple来模拟多值返回(python中也是这样), SugarCpp 中就是使用tuple实现了简洁的多值返回语法:

tuple<TTsort<T>(a: T, b: T)
    return a < b ? (a, b) : (b, a)

tuple也可以用于模拟python中的Parallel Assignment:

Monte Carlo Tree Search & Monte Carlo Ray Tracing

这学期有两个有意思的大作业都跟Monte Carlo有那么点关系.


人智的大作业是写一个Connect Four 游戏的AI. 当然由于原本这个游戏是有必胜策略 的, 所以老师对这个游戏做了小修改. 给了50个测试AI, 编号2~100的偶数, 越牛的编号越大, 让我们打着玩, 评测时用另外一批AI.

建议的方法是$\alpha-\beta$剪枝, 但是写出来之后效果不行, 貌似缺一个好的估价函数. 但是编估价函数又有点蛋疼....这时候 maskray, zxytim, blahgeek 纷纷表示Monte Carlo Tree Search很靠谱.

SIFT and Image Stitching

图像处理课期中要写一个图像拼接程序.

这方面的技术当然已经很成熟了, 开源界最著名的当属hugin, 拼全景图效果非常好. 在学术界也已经不是难题了, Lowe在IJCV2007的一篇 Automatic Panoramic Image Stitching using Invariant Features 是一个完整的流程介绍. MSRA的Szeliski有过一本几十页的 Image Alignment and Stitching: A Tutorial, 也详细的介绍了图像拼接的众多方法. 我基本就照着Lowe, Szeliski的一堆论文的方法在搞.

突然就可以在读秀上下书了..

高中搞竞赛的同时会每天也搞电脑,竞赛资料全是网上找的,也认识了一堆一堆的人.. 然后,跟很多人一样养成了一种强迫症..就是..搜集pdf..

高中搜集的数学竞赛各种, 现在还保留着的pdf还有1G多.. 也做过自己整理的事情,比如把各年联赛题找出来整理了个25年联赛题集..总之强迫症嘛,逼着自己做完.

带来的一个结果就是,搜索能力变强了.比正常的google一下baidu一下ishare一下要有效的多 那时候有北大的学长让我帮忙找一篇很难找的论文, 我搞了三四个小时的样子,一直都在不同的途径上找这篇论文, 现在可不会这么闲了.. 是一篇Hilbert的,由于那个时代的杂志现在都没有收录在乱七八糟的网站,搜了好久最后在Gottingen的某网站找到了图片版的 大概就是经历了很多这样的事之后,搜论文的话,对几个常见的网站也都比较熟了..比如记得有次也是研究了好久springer上的论文下载.