9

У меня есть список баллов. Каждая точка имеет координаты x и y (оба из которых являются целыми числами). Теперь я пытаюсь найти известные шаблоны, такие как линии, дуги или круги, зная, что точки не совсем соответствуют шаблону.Как найти узоры (линии, круги, ...) из списка точек?

Каков наилучший способ сделать это? У меня нет много подсказок, чтобы начать.

Редактировать: точки заказаны. Пользователь рисует что-то, и программа должна обнаруживать лучшие образцы. Например, если треугольник рисуется, он должен обнаружить три строки.

+0

Все ли точки составляют единый узор? Или вы ищете несколько шаблонов в одном списке точек? – Nosredna

+0

Я ищу несколько шаблонов в одном списке – Burkhard

+0

Просто прочитайте ваши изменения. Пользователь рисует. Является ли этот рисунок пикселя, и у вас есть список пикселей? Или это чертеж сегмента линии, и у вас есть список конечных точек? – Nosredna

ответ

9

посмотреть на Hough Transformation. что вы делаете: вы преобразуете изображение в «круг», а затем вам нужно найти только светлые пиксели.

найти светлые пиксели на изображении довольно просто, просто примените обрезку.

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

+0

+1. Преобразование Hough является обычным решением этой проблемы. – erickson

+0

+1. Использовал это в прошлом для определения шара с помощью SICK-лазера, и он отлично работал. – rofrankel

+0

Кроме того, вы можете использовать вариацию преобразования Hough для обнаружения линий, треугольников и т. Д. Может быть немного сложно разобраться в деталях, но это можно сделать. – rofrankel

3

Классический распознаватель - нейронная сеть. Нейронные сети работают «хорошо» и требуют обучения в некотором роде.

Математические методы и принципы, лежащие в основе нейронных сетей, могут передаваться (с соответствующей модификацией) большинству других распознавателей, о которых я читал; например, цепи Маркова, байесовские модели.

1

Пока вы ограничиваете его основными формами, вы можете рассчитать усредненное «направление» текущего хода и создать из них последовательность «ударов».

Это, вероятно, легче распознать форму на основе этой информации:

  • круг имеет достаточно постоянной второй производной
  • а «семь» имеет удар справа, после чего ход к левый нижний
  • ...
1

Я смотреть на расстоянии от некоторой точки P каждого из других точек, чем если P является центром Х rcle, вы получите некоторые очень разные статистические эффекты.

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

Ожидается, что вам понадобится нечто иное, чем стандартное отклонение, что менее заинтересовано в выбросах и больше заинтересовано в скрещивании.

Кроме того, это не принесет вам много пользы для линий.

1

Поскольку вы получаете пиксели, и они приходят в порядок, вы можете начать с проверки наклона между, скажем, каждыми 10-ми пикселями и посмотреть, как изменяется наклон. Разрывы дают вам некоторую информацию.