POLYGONCURVATURE Estimate curvature on polygon vertices using polynomial fit.
CURV = polygonCurvature(POLY, M)
Estimate the curvature for each vertex of a polygon, using polynomial
fit from the M verties located around current vertex. M is usually an
odd value, resulting in a symmetric neighborhood.
Polynomial fitting is of degree 2 by default.
Example
img = imread('circles.png');
img = imfill(img, 'holes');
imgf = imfilter(double(img), fspecial('gaussian', 7, 2));
figure(1), imshow(imgf);
contours = imContours(imgf, .5); poly = contours{1};
poly2 = smoothPolygon(poly, 7);
hold on; drawPolygon(poly2);
curv = polygonCurvature(poly2, 11);
figure; plot(curv);
minima = bwlabel(imextendedmin(curv, .05));
centroids = imCentroid(minima);
inds = round(centroids(:,2));
figure(1); hold on; drawPoint(poly2(inds, :), 'g*')
See also
polygons2d
Package: matgeom