The command pgonCorners() implemented in this FEX submission takes a binary image of a convex polygon as input and returns estimated locations of its vertices (to the nearest pixel) as output. Prior knowledge of the number of vertices is assumed. The method used is based on an idea from linear programming discussed in this Matlab Answers post,
Although the method was designed with convex polygons in mind, it sometimes works rather well on approximately convex objects, as demonstrated in example scripts contained in this submission and illustrated in the thumbnail image above.
corners = pgonCorners(BW,k)
corners = pgonCorners(BW,k,N)
BW: Input binary image.
k: Number of vertices to search for.
N: Number of angular samples partitioning the unit circle (default=360).
Affects the resolution of the search.
corners: Detected corners in counter-clockwise order as a k x 2 matrix.
Matt J (2020). Find vertices in image of convex polygon (https://www.mathworks.com/matlabcentral/fileexchange/74181-find-vertices-in-image-of-convex-polygon), MATLAB Central File Exchange. Retrieved .