本文用matlab实现了基本多边形的检测、提取。
本文涉及到的知识点如下:
1、Canny边缘检测。bw = edge(gray,'canny',[0 , 50/256]);
2、细化操作。im=bwmorph(image,'thin',Inf);
3、边界追踪。edgelist=bwboundaries(im);
4、边界的多边形近似。linefit_Prasad_RDP_opt(edgelist);
本文算法思路借鉴了Nash的博客,地址:http://opencv-code.com/tutorials/detecting-simple-shapes-in-an-image/点击打开链接
边界的多边形近似算法为:Douglas-Peucker algorithm,算法的matlab实现我引用了Dilip K. Prasad分享的文件。本文所有操作的理论基础均可在冈萨雷斯的《数字图像处理》中找到答案。
Douglas-Peucker algorithm地址:https://docs.google.com/file/d/0B10RxHxW3I92dG9SU0pNMV84alk/edit?pli=1点击打开链接
算法实现过程可分为以下几步。
1、提取边缘。
2、进行形态学处理,分割图像。
3、进行细化操作,减小计算量。
4、用多边形近似边界。
5、判断该顶点是否有效。(根据相邻顶点之间的距离)
转载请注明出处:http://blog.csdn.net/u010278305
下面给出源代码:
%function:
% 基于最小距离分类器的模板匹配
% 寻找图片中与已