由于精确计数需要,需要对二值图腐蚀后提取骨架、去分叉后,调用matlab自带函数corner进行角点提取。涉及到的操作均为自带函数:
- 提取骨架函数:J=bwmorph(I,'skel',refine_time); refine_time为细化次数,取值为Inf时细化到只剩一个像素宽的骨架,输入和输出图象I和J均为二值图像,下同;
- 去骨架分叉函数:J=bwmorph(I,'spur',spur_time);spur为去分叉次数。
- 角点检测函数:C=corner(I,corner_num); corner_num为要提取的角点数,默认为200.输出为corner_num*2大小矩阵,每一行代表一个角点坐标。
二值图、骨架图、去分叉图、角点检测图依次如下: