这段时间一直在帮老师做一个细胞统计的算法,查看了一些文章。说实在的,英文能力有点差,感觉是看懂了,但是总是在是实现的时候出问题------说明编程能力差!
这里先说说自己在其中犯的错误:
1.看文章时,总是感觉看懂了不去加以推敲就去实现
2.实现过程中压根细节都没有弄明白就动手写
3.代码写不出来时,就觉得方法不好实现,就去重新看其他方法
4.其他方法也是按照上边的思路实现,到头来发现还不如第一种方法(毕竟第一种方法是我一开始调研过觉得比较好的)
5.害怕麻烦,总是想到哪写到哪(严重的错误)
.............
其实还有很多错误,一下子想不起来
正确的方法呢?
我在香港实习时曾经一个同事对我说过,开发项目的时间分配,90%的时间用在调研和逻辑整理上,10%的时间才是实现……
说道这,上边的错误就显而易见了……
以后自己尝试做项目的思路:
调研一定要认真,方法认准了在动手,不要怕麻烦,麻烦意味者成长。
下边推荐一篇本人觉得比较好的细胞统计方法:http://yun.baidu.com/share/link?shareid=2766595326&uk=3305528451
本方法我只是实现了前半部分,分水岭操作没有做(我只做统计,不做分割)
说说实现的步骤,代码实现就算了:
1.由于我的样本颜色主要偏重于蓝色,这里选取B通道作为灰度图
B通道:
2.对灰度图片做局部自适应二值化处理,并对得到的二值图先做腐蚀操作,去除其中的毛刺,然后做膨胀操作,将边缘处理的较为光滑
3.对灰度图做均值滤波,滤除其中的噪声点,并用otsu做二值化处理
4.将2和3中的二值图做与运算,这样做的目的在于获得边缘较为清晰的目标
5.对获得的二值图做距离变换,距离变化后的极值点即为目标的上的位置点(距离变化的方法,主要是对二值图先用十字型结构元素做腐蚀操作,在用米字形或者圆形结构元素做腐蚀操作,没腐蚀一次,对应点的位置数值加1,循环腐蚀,直到二值图腐蚀完全。测试通过加1操作得到的图片便是二值图的距离变换图)
6.利用四个模板寻找距离变换图的极值点
//对距离变换后的图片做极值查找,获得的极值点即为目标的所在位置
//极值点的查找方法:分四步(上左,上右,下左,下右)处理
//上左模板 上右模板 下左模板 下右模板
//* o o o o o o o o * o o o o o o o o o o
//o o o o o o o o o o o o o o o o o o o o
//o o o o o o o o o o o o o o o o o o o o
//o o o o o o o o o o o o o o o o o o o o
//o o o o o o o o o o * o o o o o o o o *
//*表示起始点 o表示偏移位置 *的值与o所在位置的值进行比较,*值小于o的值时,*处的值设为零
7.得到的极值点个数即为目标的个数