Посмотрите, делают ли NSBezierPath (s) определенную форму или шаблон - PullRequest
0 голосов
/ 27 марта 2012

Хорошо, поэтому я создаю программу, в которой я буду универсально принимать события трекпада какао, и я буду отображать эти события в NSBezierPaths. Например, у меня мог бы быть NSBezierPath, который только от одного пальца, и это является круглым (иш). Или путь может быть в форме стрелки, указывающей вправо. Или это могут быть две вертикальные NSBezierPaths рядом. Что мне нужно сделать, так это посмотреть на эти NSBezierPaths и определить, какой шаблон / фигуру они больше всего напоминают ... У кого-нибудь есть указатели?

Спасибо

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Это может помочь

алгоритмы распознавания формы - переполнение стека

поиск в Google

Большинство из них требуютрастровое изображение и попытайтесь определить форму - это сложная область.

hth

0 голосов
/ 16 апреля 2012

Возможно, уже поздно, но я просто подумал об этом и придумал что-то, что стоит попробовать.

  1. Определите набор фигур, каждая из которых параметризована небольшим количеством параметров. Например, определите круг через его среднюю точку (две переменные) и радиус (третью переменную), линию через две конечные точки (четыре переменные), стрелку в виде линии с дополнительным параметром для размера головы и т. Д. на.

  2. Теперь вы можете превратить это в проблему минимизации. Для каждой точки i на контуре и каждой фигуры определите минимальное расстояние до фигуры в зависимости от параметров фигуры di(params). Теперь определите функцию вероятности, которая скажет вам, насколько путь выглядит как форма. Кандидатом по умолчанию является то, что называется «хи-квадрат» в теории вероятностей:

chi^2 (params) = sum_i ( di(params) )^2

  1. chi^2 является функцией параметров для каждой фигуры, поэтому следующим шагом является минимизация этого количества. Обычно для этого доступны библиотеки, но процедура минимизации также может быть реализована вручную.

  2. После минимизации chi^2 для каждой фигуры форма, которая получает наименьшее значение chi^2, является той, которая больше всего напоминает путь. И у вас уже есть параметры, которые подходят лучше всего!

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

...