好久没来冒个泡

来源:互联网 发布:中科院分词系统算法 编辑:程序博客网 时间:2024/06/06 02:53

这两天做了个小东西, 从一张细胞的图片识别出每个细胞的边界和算面积什么的.

最大的难点 我跟你们说,就是那细胞图太恐怖了,简直就是密集恐惧症.

然后其次是找合适的显示方法, 因为我实在讨厌mfc, 以前又没做过类似的. 所以费了大部分时间在做这个.

  最后找到了glut, 感觉不错, 挺符合我的代码哲学的. 就是opengl用起来像汇编. 基本是靠副作用工作的.

算法反而是最不占时间的, 虽然中间调整了几次.

其中找界面用什么占了1整天, 了解glut用了半天(写出hello_world), 编码半天.


我用的算法是,先增强对比度,突出一下细胞壁,顺便减弱低频光的影响(比如照片中间比边缘亮),然后简单的用分水岭算法.(就是选取凹的地方扩张范围,直到和另一个区域接触形,对于孤立点的边界条件这些细节就不提了).

增强对比度这里我做的很极端, 基本上算半个2值化了, 要不是在比较模糊的情况下有些问题,我还真想做到2值化.

分水岭算法这里,c++没有yield是一个很烦恼的地方. 因为这个算法是现有的几个区域在争抢剩余的像素. 做到争抢的公平不容易. 我只能手动保存状态然后频繁的轮询, 导致了速度瓶颈.(这里,我开编译器的优化之后 总体程序 的速度提升甚至接近于两个数量级.)代码写的比较丑陋,但是因为是demo也没打算优化.

还有一个地方我估计也是瓶颈, 就是GetPixel() 这个函数非常之慢.即使没打算优化也有点看不下去了.(开编译器优化之后估计很大一部分提升来自这里,虽然没测试过)

最终效果一般, 与预想中没多大差别,没什么残念也没多大惊喜.


剩下的再说点什么的话, 就是:"还没死, 呵呵."