Ответ 1
В таких случаях я сначала пытаюсь найти наилучшую отправную точку. Итак, сначала я создал свой образ (однако я мог бы также скелетовать его и только тогда порог. Но таким образом некоторые данные теряются безвозвратно):
Затем я попробовал множество инструментов, чтобы получить наиболее заметные функции, подчеркнутые навалом. Наконец, играя с плагином Gimp G'MIC, я нашел это:
Исходя из вышеизложенного, я подготовил универсальный шаблон, который выглядит так:
Тогда я просто получил часть этого изображения:
Чтобы помочь определить угол, я сделал локальный график частоты Фурье - таким образом вы можете получить локальный угол вашего шаблона:
Тогда вы можете сделать простую толщину, которая быстро работает на современных графических процессорах - получите такую же разницу (пропущенный случай):
При ударе разница минимальна; то, что я имел в виду, говоря о локальных максимумах, более или менее относится к тому, как следует обрабатывать полученную разницу. Было бы нецелесообразно взвешивать за пределами разности кругов рисунка, так же как и внутри, из-за чувствительности к масштабному коэффициенту. Таким образом, внутри с крестом следует взвешивать больше в используемом алгоритме. Тем не менее разный шаблон с изображением выглядит следующим образом:
Как вы можете видеть, можно различать хиты и промахи. Важно установить правильную допуск и использовать частоты Фурье для получения угла (с пороговыми изображениями Фурье обычно следует общей ориентации анализируемого изображения). Вышеупомянутый способ может быть позже дополнен обнаружением Харриса, или обнаружение Харриса может быть изменено с использованием вышеприведенных рисунков, чтобы отличить два-четыре близко расположенных угла. К сожалению, все методы зависят от масштаба в таком случае и должны быть соответствующим образом скорректированы. Существуют также другие подходы к вашей проблеме, например, сначала путем их водоразбора, затем получения областей, а затем игнорирования переднего плана, затем упрощения кривых, а затем проверки того, являются ли их углы последовательным эквидистантным шаблоном. Но для моего носа это не принесло бы правильных результатов.
Еще одна вещь - libgmic - это библиотека G'MIC, где вы можете напрямую или через привязки использовать преобразования, показанные выше. Или получите алгоритмы и перепишите их в своем приложении.