Как идентифицировать различные объекты на изображении? - PullRequest
13 голосов
/ 12 марта 2012

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

Образец изображения

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

Ответы [ 2 ]

10 голосов
/ 12 марта 2012

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

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

9 голосов
/ 12 марта 2012

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

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

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

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

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

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

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

...