2009-06-29 6 views
4

У меня есть массив точек. Я хочу знать, представляет ли этот массив точки круг, квадрат или треугольник.Обнаружение фигур в массиве точек

С чего начать? (Я использую C#)

Благодарности Jon

+0

i hava массив (x, y). несколько сотен все время. И мне нужно выяснить, что фигура за этим – user96547

+0

- это точки, которые должны быть на периметре формы или внутри нее? – libeako

ответ

5

В зависимости от вашей проблемы, хороший подход к этой проблеме может быть использовать Hough transform и весь его производного алгоритм

Он состоит в преобразовании пространства изображения в другое пространство, где координаты представляет параметры объектов (угол и начальная точка для линии, координаты центра и радиус для круга)

Алгоритм преобразует каждую точку вашего массива точек в точках в другом пространстве. Затем вам нужно искать в новом пространстве, если некоторые моменты преобладают. Из этих пунктов вы получите параметры своего объекта.

Конечно, вам нужно сделать это один раз, чтобы распознать строки (чтобы вы знали, сколько строк в вашем растровом изображении и где они), и ему распознавать круги (это не совсем тот же алгоритм)

вы можете посмотреть на this lecture (для Хаф Circle Transform), но вы можете легко найти алгоритм для линии

EDIT: вы также можете посмотреть на эти ответы

Shape recognition algorithm(s)

Detecting an object on the image based on geometrical form

+0

Хорошо, я хочу попробовать. знаете ли вы реализацию C#? – user96547

+0

Нет, извините Но, насколько я помню, алгоритм был довольно прост (но он по-прежнему требует некоторой работы): a) вы преобразуете свое изображение в новое изображение с помощью математического преобразования (просто нужно применять формулы) б) вам нужно искать наиболее важные точки (т. е.точки со значением, большим заданного порога) c) вы применяете обратное преобразование (опять же с формулами), и у вас есть координата ваших линий/кругов d) из числа строк вы можете узнать, является ли это треугольник или квадрат (предположим, что у вас есть только один объект для распознавания) – ThibThib

+0

Будет ли он работать, если круг не идеален? – user96547

-2

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

Возможно, у вас есть дополнительная информация по вашей проблеме.

+0

о да. У меня больше 500 очков, и мне нужно выяснить, есть ли у меня линии или круг. – user96547

0

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