Собственно есть изображение (уже обработанное, применен фильтр Canny). На нем изображены контуры какой-то фигуры. Фигура всегда должна стоять вертикально (для последующей обработки). Контур всей фигуры вписывается в прямоугольник. На данный момент проблема решена следующим образом. Находятся крайние вертикальные/горизонтальные точки, строятся линии. Выбирается максимальная по длине линия, высчитывается угл между перпендикуляром. Происходит вращение изображения. Результат правильный лишь в 50% случаев, так как изза поворота объекта эти «вершины» находятся с довольно большой погрешностью.
Объекты представляю собой контуры грушевидной формы.
Как вариант — попробовать методом подбора, повернуть на определенный угл, посмотреть размеры прямоугльника (высоту) в который вписывается контур, если этот размер больше — поворачивать еще до того момента пока высота не станет варьироваться в пределах одного пикселя. Угл обычно не большой, до 15 градусов, но по сути такой способ выходит довольно прожорливым. Есть ли какие-либо алгоритмы для подобных задач?
В конечном этоге я должен получить координаты точек прямоугольника и угл поворота.
Пример изображения: