OpenCV: объединение встроенных фигур - PullRequest
1 голос
/ 12 апреля 2019

Если я использую OpenCV (Python) и подгоняю две фигуры, например:

a = cv2.fitEllipse(contours)
b = cv2.minAreaRect(contours)

Оба a и b представлены как Box2D объекты, которые выглядят примерно так:

center: (x, y)
size: (width, height)
rotation: angle

a и b часто будут довольно похожими, но не точными из-за различных методов подбора.Как я могу найти форму (эллипс), который является «средним» для a и b?То есть эллипс, который лучше всего подходит между a и b?

1 Ответ

1 голос
/ 22 апреля 2019

Определение «среднего» может быть неоднозначным и дает вам различные решения. Если для вас это не имеет большого значения, поскольку вы просто хотите усреднить форму любым способом, ниже приведено простое решение, как усреднить два прямоугольника:

Обозначим два прямоугольника (a1, a2, a3, a4) и (b1, b2, b3, b4). Допустим, мы хотим найти прямоугольник (x1, x2, x3, x4) минимизировать

imagesum |xi - ai|^2 + sum |xi - bi|^2">

Прямоугольник параметризован как

imagex_i = R q_i + c">

, где R - это матрица вращения 2D, а q_i - это одна из +-w, +-h с w и h неизвестным размером прямоугольника. p - неизвестный центр прямоугольника.

Общая формулировка формирует задачу квадратичного программирования с неизвестными w, h, R, p и квадратичными ограничениями R - матрица вращения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...