Предполагая, что трасса имеет постоянную толщину, намного длиннее, чем она широкая, не слишком сильно изогнута и не имеет пересечений / пересечений, я предлагаю алгоритм обнаружения кромки, который также определяет направление кромки, а затем подъем /детектор падения с некоторой тригонометрией и алгоритмом минимизации.Это дает минимальную толщину поперек относительно прямой части кривой.
Я предполагаю, что ошибка составляет до 25%.
Сначала используйте детектор кромок, который дает нам информацию, гдекрай и в каком направлении (с шагом 45 ° или PI / 4) он имеет.Это делается путем фильтрации по 4 различным матрицам 3х3 ( Пример ).
Обычно я бы сказал, что достаточно отсканировать изображение по горизонтали, хотя вы также можете сканировать по вертикали или диагонали.- при строчном (горизонтальном) сканировании, как только мы находим ребро, мы проверяем, является ли это повышением (переход от фона к цвету трассировки) или падением (к фону).Если направление кромки перпендикулярно направлению сканирования, пропустите его.
Если вы обнаружили один подъем и одно падение с правильными направлениями и без каких-либо помех между ними, измерьте расстояние от подъема до падения.Если направление диагональное, умножьте на квадратное корень из 2. Сохраните эту меру вместе с данными координат.
Затем алгоритм должен выполнить поиск по соседнему краю (не может найти веб-ресурс по этому вопросу) для соседнего(по их координатам) измерения.Если существует локальный минимум с отступом от 4 до 5 единиц размера на каждую сторону (значение, с которым нужно играть - больше: меньше информации, меньше: больше шума), этот показатель считается кандидатом.Это делается для того, чтобы концы следа или участка, согнутого слишком сильно, не учитывались.
Минимум этого измерения.Проверка достоверности: если трассировка не слишком запутанная, в этой области должно быть много значений.
Пожалуйста, прокомментируйте, если есть еще вопросы.: -)