Вы пробовали что-то простое, например, корреляцию?
( РЕДАКТИРОВАТЬ ). Идея корреляции заключается в том, чтобы использовать шаблон (в вашем случае обученный образец дорожного знака) и сравнить его с каждой позицией на тестовом изображении. Операция сравнения, которую я использовал для генерации изображений ниже, называется нормализованной взаимной корреляцией . Грубо говоря, вы стандартизируете (среднее = 0, стандартное отклонение = 1) пиксели в шаблоне и той части изображения, которую хотите сопоставить, умножаете их попиксельно и вычисляете среднее значение продуктов. Таким образом, вы получаете «оценку соответствия», то есть меру сходства между шаблоном и тестовым изображением в каждой позиции тестового изображения. Позиция с наилучшим соответствием (самая высокая корреляция) является наиболее вероятным кандидатом на позицию дорожного знака. (На самом деле, я использовал функцию MathematicaCorrelationDistance для генерации изображения ниже, которое равно 1 - (нормализованная корреляция). Таким образом, самое темное пятно на изображении соответствует лучшему совпадению).
У меня нет других шаблонов, поэтому я просто обрезал знак со второй фотографии, которую вы разместили:
Несмотря на то, что шаблон слегка повернут, кросс-корреляция все еще выглядит полезной
и лучшее совпадение находится в правильном положении:
(Конечно, вам понадобится несколько масштабированных версий каждого шаблона для обнаружения знаков любого размера)