ПРОБЛЕМА
У меня есть фотография, взятая из качающегося автомобиля. Для простоты я превратил его в черно-белое изображение. Пример показан ниже:
Изображение показывает высокую интенсивность возвращается и имеет шаблон в нем, который обнаружил, что все действительные изображения обведены красным цветом. Это изображение может быть взято под разными углами в зависимости от поворота транспортного средства. Другой пример:
Целью здесь является попытка идентифицировать ячейки изображения, в которых эта модель существует.
ТЕКУЩИЕ ПОДХОДЫ
Я пробовал несколько методов до сих пор, я использую Matlab для тестирования, но в конечном итоге буду реализовывать в С++. Желательно, чтобы алгоритм был эффективным по времени, однако меня интересуют любые предложения.
SURF (Ускоренные надежные функции) Распознавание функций
Я попробовал реализацию MATLAB по умолчанию для SURF, чтобы попытаться найти функции. Matlab SURF может идентифицировать функции в двух примерах (не то же самое, что и выше), однако он не может идентифицировать общие:
Я знаю, что точки разные, но шаблон все еще несколько идентифицируется. Я пробовал несколько наборов изображений, и почти нет общих точек. Из чтения о SURF кажется, что он не является устойчивым к искаженным изображениям в любом случае. Возможно, некоторые рекомендации по предварительной обработке здесь?
Соответствие шаблонов
Итак, сопоставление шаблонов было проверено, но определенно не идеально подходит для приложения, потому что оно не является надежным для масштабирования или искажения. Я открыт для предварительной обработки идей, чтобы исправить перекос. Это может быть довольно легко, некоторые обсуждения дополнительной информации о картине приводятся ниже.
Теперь давайте исследуем соответствие шаблонов. Скажем, в качестве шаблона и текущего изображения мы имеем следующие два изображения:
Шаблон выбирается из одного из наиболее перспективных изображений. И используя его на очень похожем изображении, мы можем сопоставить позицию:
Но тогда (и несколько явно), если мы изменим картину на другой угол, это не сработает. Конечно, мы ожидаем этого, потому что шаблон no-long выглядит как шаблон на изображении:
Таким образом, мы, очевидно, также нуждаемся в предварительной работе по обработке.
Hough Lines и RANSAC
Строки Hough и RANSAC могут идентифицировать линии для нас, но как мы можем получить положение шаблона?
Другое, о котором я еще не знаю
Я новичок в области обработки изображений, поэтому мне бы хотелось услышать о любых других методах, которые подходят для этой простой, но сложной проблемы с изображением.
Датчик и способ его предварительной обработки
Датчик представляет собой 3d лазер, он был превращен в изображение для этого эксперимента, но все еще сохраняет информацию о расстоянии. Если мы построим масштаб с расстоянием от 0 до 255, получим следующее изображение:
Где легче дальше. Это может определенно помочь нам выровнять изображение, некоторые мысли по наилучшему пути?. До сих пор я думал о таких вещах, как вычисление нормали ячеек, которые не равны 0, мы могли бы также сделать какой-то градиентный спуск или наименьший квадрат, подходящий таким образом, чтобы разница в расстоянии равнялась 0, что могло бы выровнять изображение так, чтобы оно всегда прямая. Проблема в том, что сплошная белая полоса еще далеко? Может быть, мы могли бы сегментировать это? Мы вроде как алгоритмы построения на наших алгоритмах, поэтому нам нужно быть осторожными, чтобы это не стало монстром.
Любая помощь или идеи были бы замечательными, я с удовольствием рассмотрю любой серьезный ответ!