Подтвердить что ты не робот

Как идентифицировать разные объекты в изображении?

Я собираюсь написать программу для обнаружения и выделения определенных объектов с почти сплошного фона. На переднем плане и в фоновом режиме есть большая контрастность, которую я бы еще увеличил, чтобы помочь в процессе идентификации объекта. Я планирую использовать технологию преобразования Хафа и OpenCV.

Пример изображения

Как видно из приведенного выше изображения, я хотел бы отдельно идентифицировать круговые объекты и квадратные объекты (или любую другую фигуру из конечного набора фигур). Поскольку я совершенно новичок в обработке изображений, у меня нет идеи, нужна ли такая ситуация для реализации нейронной сети, и каждая форма должна быть изучена заранее. Может ли такая техника, как сопоставление шаблонов, сделать это без нейронной сети?

4b9b3361

Ответ 1

Эти сообщения помогут вам начать:

Вам, вероятно, придется скорректировать некоторые параметры в этих кодах, чтобы они соответствовали вашим кругам/квадратам, но ядро ​​метода показано на этих примерах.

Ответ 2

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

Основная предпосылка, объясняемая простыми словами, следующая:

  • Вы выполняете обнаружение кромок (например, cvCanny в opencv)
  • Вы создаете изображение расстояния, где значение каждого пикселя означает расстояние между ближайшим кромкой.
  • Вы берете фигуры, которые хотите обнаружить, задайте точки проецирования вдоль краев фигуры и попытайтесь сопоставить эти точки на изображении расстояния. В основном вы просто добавляете значения на изображении расстояния, которые находятся под координатами ваших точек выборки, учитывая конкретную позицию ваших объектов.
  • Найдите хороший алгоритм минимизации, эффективность этого зависит от вашего приложения.

Этот базовый подход является общим решением, обычно хорошо работает, но без дальнейших улучшений он очень медленный.

Обычно это хорошая идея, чтобы сначала отделить объекты, представляющие интерес, так что вам не нужно всегда выполнять полный поиск по всему изображению. Найдите хороший threshold, чтобы вы могли разделить объекты. Вы все еще не знаете, какой объект он есть, но вам нужно только выполнить совпадение в непосредственной близости от этого объекта.

Еще одна хорошая идея - вместо полного поиска на изображении с высоким разрешением сначала сделайте это с очень низким разрешением. Результат будет не очень точным, но вы можете знать общие области, где стоит делать поиск с более высоким разрешением, поэтому вы не тратите свое время на области, в которых нет ничего интересного.

Существует несколько более продвинутых методов, но по-прежнему стоит взглянуть на базовое сопоставление фасок, поскольку оно является основой большого количества методов.