代码又弄丢了,N次了。OK,2015,重新写一份咯,正好许多细节当初没完善。
思路:老样子,先预处理,搞到二值图后分割类似二维码那样的三个(或四个)标准定位的参考,然后校验参考,然后取出面积。
2015/1/2
简单预处理全部实现,包含:
1.去色(灰度化)2.二值化(基于阈值&基于相邻像素)3.边界提取
2015/1/4
关于连通域标记的问题,处理小图时使用了递归的方法,速度和效率都还过得去。
但是遇到很大的图片,实测有效像素大约>4000+(100*80图片中的叶子约占图片一半)左右递归就可能报溢出的错误。
此处时递归思路:遍历数组,遇到点点标记为1的则label++,点点四方寻找是否为1,若是递归标记。此法不需要新开辟数组,所以比较吃内存。
2015/1/8
实现了c#版的快速标记法,标记好后很顺利的实现了取出各个图片的外接矩形与面积和周长,本以为可以着手界面和代码优化了,
但是最小外接矩形的问题实在有点烦,
解决思路:将取出的外接矩形图旋转,旋转后在做一次最小外接矩形,若外接矩形面积变小则继续变小,若某次外接矩形由小变大,则旋转后最小外接矩形在最后两次旋转角度间。 想想就麻烦。。。
然后,我放弃原则了,决定使用opencv了,so,后接 EMGUCV学习日记咯。