Just to add another suggestion:
My approach would be to use the contour finding code in skimage to convert the binary boundary into a polygon (
https://scikit-image.org/docs/dev/auto_examples/edges/plot_contours.html). After that, I would use the scipy tools to fit a parametric spline to the outline, applying a spatially appropriate bit of smoothing so the outline isn’t as jagged. (Or even better, if you have the original image, find the outline at the same threshold value you would have used to binaries the image and it will start out much less jagged.)
Once you have a reasonably smoothed spline, you can calculate its first and second derivatives, and from there the signed plane curvature values at each point. (
https://en.m.wikipedia.org/wiki/Curvature) You will be looking for regions of high curvature — and because it is signed you can distinguish inward from outward bends.
Alternately, if you represent the binary boundary as the zero level-set of a signed distance image, there are ways to calculate the curvature of that image (as a function of x and y) that could I think give you the same information without needing explicit boundary geometry.
Overall though for stuff like this (computations at boundaries) I like having explicit geometry represented as a smooth, differentiable parametric spline. Much simpler than trying to get pixels to do what you want.
Zach
Hi everybody,
I am working on a computer vision problem but I got stuck. I am trying to detect outer points of an binary image (see attached images, points which i need are labeled in red on image points.png).
I have tried different approaches (edges, maximas, corner detection) but usually the inner corners will be detected because the outer points I need are rather round.
Any idea of an algorithm which might be useful for this problem?
Thanks a lot in advance,
Stefanie
<points.png>
<test.png>
_______________________________________________