好久没来冒个泡

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

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

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

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

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

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


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

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

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

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

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


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值