Рассчитать ориентацию формы в Java (Анализ изображений) - PullRequest
0 голосов
/ 12 февраля 2012

У меня есть такое изображение:

enter image description here

и мне нужно рассчитать его ориентацию. В этом случае форма указывает на верхний левый угол экрана. Точность не очень важна, пока 3 или 4 вычисления усредняются с точностью до 5 градусов или около того от фактической ориентации (она будет немного двигаться).

Может кто-нибудь указать мне на алгоритм, чтобы сделать это? Я не против, если ориентация возвращается как двойной или как вектор.

Ответы [ 5 ]

0 голосов
/ 22 июля 2012

В итоге было решено использовать Алгоритм выпуклого корпуса , который находит минимальное количество точек, необходимых для того, чтобы заключить фигуру в границу.

0 голосов
/ 13 февраля 2012

Я бы попробовал морфологическую скелетонизацию , чтобы упростить изображение, после чего следовал какой-нибудь простой алгоритм для определения ориентации более длинной ноги скелета.

0 голосов
/ 12 февраля 2012

Полное решение невозможно, я думаю, так как требует распознавания изображения.Я должен проецировать 2D-изображение на ось, т.е. получить ширину и высоту изображения и получить вектор направления из этих значений, принимая их за компоненты.

0 голосов
/ 12 февраля 2012

Во-первых, пара предположений:

  1. Центр и центроид "близки"
  2. Нисходящий столбец Т длиннее, чем поперечина

Сначала определите ограничивающий прямоугольник изображения и найдите точки изображения, которые лежат вдоль этого прямоугольника.Для точек, которые лежат вдоль линии и находятся на определенном расстоянии друг от друга (скажем, 5 пикселей, чтобы выбрать значение), вам нужно взять только 1 точку из этого кластера.В конце этого у вас должно быть 3 точки, то есть треугольник.Самая короткая сторона треугольника должна быть поперечиной (из предположения 2), то есть найти две точки, наиболее близкие друг к другу.Линия, которая перпендикулярна линии, пересекающей эти две точки, является вашей ориентировочной линией, т.е. найдите угол между ней и горизонтальной осью.

0 голосов
/ 12 февраля 2012

Если изображение всегда имеет Т-образную форму, вы можете просто получить самую дальнюю пару пикселей, а затем найти самую дальнюю пару из или обоих из этих (ребра Т), найти которые дальшеиз двух других, проведите линию от этой до средней точки этих двух.

Вы можете дополнительно уточнить ее, найдя основание Т, сравнив среднюю линию с краями основания,и регулировка угла и смещения до тех пор, пока он фактически не окажется посередине.

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