Поиск форм с использованием каскадного классификатора OpenCV Haar

Я ищу параболы в некоторых данных радара. Я использую каскадный классификатор OpenCV Haar. Мои позитивные изображения - это PNG 20x20, где все пиксели черные, за исключением тех, которые прослеживают параболическую форму - одна парабола на позитивное изображение.

У меня такой вопрос: научат ли эти позитивы классификатора искать черные ящики с параболами внутри или они научат классификатор искать параболические формы?

Должен ли я добавить слой шума среднего значения к моим позитивным изображениям или они должны быть нереально четкими и высококонтрастными?

Вот пример исходных данных.

Исходные данные.

Вот пример моих данных после того, как я выполнил простое обнаружение краев с помощью GIMP. Параболические формы выделены белыми полями.

Данные после обнаружения края.

Вот одно из моих положительных изображений.

Образец положительного изображения.


person cjohnson318    schedule 22.08.2012    source источник
comment
Разместите несколько фотографий. Это действительно поможет получить хорошие ответы.   -  person Sam    schedule 22.08.2012
comment
Но быстрый ответ: вам не нужно что-то настолько сложное, как Хаар, для некоторых парабол.   -  person Sam    schedule 22.08.2012
comment
Спасибо за быстрый ответ @vasile. Обучение Хаара занимает очень много времени. Что вы посоветуете для обнаружения парабол?   -  person cjohnson318    schedule 22.08.2012
comment
Что вы хотите здесь обнаружить? Индексы столбца, где горизонтальные линии прерываются? или вершины? Можете ли вы обвести красную линию вокруг объекта, который хотите обнаружить? Вы также говорите, что это изображение обработано в GIMP. Было бы неплохо увидеть и оригинал. Хаар, похоже, здесь не очень помогает, но это очень интересная проблема.   -  person Sam    schedule 22.08.2012
comment
Есть очень (очень) слабые параболические сигнатуры. В исходных данных, зеленом изображении, есть слабая парабола под красной и синей линиями, около 147 футов (отметки в десятках футов). Опять же, если Хаар не является оптимальным выбором, есть ли у вас другие предложения?   -  person cjohnson318    schedule 22.08.2012


Ответы (1)


Я придумал способ обнаружения парабол изначально, используя метод MatchTemplate из OpenCV. Сначала я использовал библиотеки Python cv, а затем cv2, но мне нужно было убедиться, что мои входные изображения представляют собой 8-битные целые массивы без знака. В конце концов, я получил аналогичный эффект с меньшими усилиями, используя scipy.signal.correlate2d( image, template, mode='same'). mode='same' изменяет размер вывода до размера image. Когда я закончил, я выполнил пороговую обработку, используя функцию numpy.where(), а также открытие и закрытие для устранения шума соли и перца с помощью модуля scipy.ndimage.

Вот результат до определения порога.

введите описание изображения здесь

person cjohnson318    schedule 19.10.2012