Проблема, которую я первоначально обсуждал здесь , эволюционировала и, возможно, стала немного проще, когда я изучил ее еще немного и получил новую информацию.
В итоге, я хотел бы быть в состоянии обнаружить эту модель, показанную здесь, используя методы компьютерного зрения / обработки изображений. Как видите, идеальный шаблон состоит из четырех «пингов». Объект распознавания должен быть:
- Сдвиг Инвариант
- По горизонтали изображение будет циклическим. (т. е. нажмите вправо, выйдет слева и наоборот).
- (К счастью) по вертикали это не циклично. (т. е. нажмите на верх или низ, и он остановится).
- Инвариант шкалы (как вы можете видеть, пинги могут различаться по толщине).
Я мог бы продолжать и продолжать об этом, но я приложил изображения, охватывающие то, что я имею в виду, см. Ниже:
Конечно, они также могут быть в другом «масштабе», как видно из этой семьи:
И, наконец, вот несколько «реалистичных» сценариев того, что я мог бы на самом деле получить, где будет шум, строки могут «исчезать» при движении к дну, и, конечно, на изображении будет много ложных линий, артефактов. , и т.д.
И, конечно же, как грандиозный финал, существует явная возможность этого «экстремального» сценария:
Итак, еще раз, я хотел бы попросить некоторые рекомендации о том, какие методы компьютерного машинного зрения я должен использовать здесь, чтобы наилучшим образом обнаружить вхождение моего паттерна, где я должен быть инвариантом сдвига и масштабирования, как вы можете видеть, и также сможете получить достойные результаты для реалистичных сценариев. (Хорошая новость в том, что мне не нужно, чтобы он был инвариантным по ротации). Единственная идея, которую я смог придумать, - это двумерная корреляция.
Я должен добавить, что на самом деле у меня нет цветных изображений - я просто получу мартикс чисел, поэтому я полагаю, что мы говорим о «оттенках серого».
Заранее спасибо!
PS Для чего это стоит, я, вероятно, буду использовать открытый C V.
РЕДАКТИРОВАНИЕ № 1:
Основываясь на комментариях, я добавил детали, которые вы просили здесь:
Для признаков, определяющих данные, мы можем предположить следующее:
Горизонтальная длина каждого пинга может варьироваться, но я знаю верхнюю и нижнюю границы этого. ДА за что-либо в пределах этой границы, НЕТ за что-либо за пределами. (Например, я знаю, что длина пингов может быть где-то между 1 и 3 секундами, например).
Для YES все эхо-запросы должны быть «видимыми», однако в последнем ряду может отсутствовать, и все равно нужно сказать «YES». В противном случае НЕТ.
Вертикальная длина («толщина») каждого пинга может варьироваться, но, опять же, также известны верхняя и нижняя границы. (Подобно тому, что вы видите на этих изображениях). ДА за что-либо в пределах этой границы. НЕТ для чего-либо снаружи.
Высота между каждым пингом всегда должна быть одинаковой для ДА. Если нет, то НЕТ. (Например, вы можете увидеть, как все пинги имеют одинаковую высоту относительно друг друга, ~ 110 на вертикальной оси). Таким образом, 110 +/- 5 может быть ДА, все остальное должно быть НЕТ.
Я думаю, вот и все - но дайте мне знать, что еще я могу добавить ... (Кроме того, все показанное здесь должно быть зарегистрировано как ДА, кстати).
detect this pattern shown here
? Вы просто заинтересованы в выделении красной / желтой линии или вам действительно нужно выражение, которое вычисляет отношения между такими линиями. Только нахождение строк может потребовать лишь некоторого определения порога или сегментации. Что ты действительно хочешь?Ответы:
Вообще говоря, есть два основных подхода к решению этой проблемы:
а. соответствие шаблона или
б. сопоставление с параметризованной моделью.
Лично, учитывая простоту модели, я бы предпочел второй подход к этой проблеме.
Шаг 1: Определите пинг-капли
В качестве первого шага извлеките «Ящики» - по существу, желтые / синие квадраты. Самым простым способом здесь может быть просто пороговое изображение. Кажется, что нет большого количества изменений в фоновом режиме, за исключением того, что с увеличением шума он, как правило, очень похож на пинг. Следовательно, порог может быть глобальным для всего изображения - и я думаю, что вы сможете получить достойный порог, который будет работать для всех изображений. Порог, однако, должен быть разумным, чтобы вы могли использовать что-то вроде метода Оцу. Смотрите это и это для получения дополнительной ссылки.
Благоустройство блоков
Одна из хороших вещей, которую вы можете сделать, это удалить паразитные точки, похожие на передний план пинга, где некоторые пиксели внутри пингов также синего цвета. Здесь вам нужна морфологическая операция под названием «Открытие». Вот одна из ссылок от HIPR . Этот тип операций требует умной формы, которая помогает сохранять похожие формы и удалять другие. В вашем случае вы можете выбрать горизонтальные линии. К концу этого у вас есть фон и пиксели переднего плана, аккуратно разделяющие пинги, не касаясь друг друга.
Шаг 2: Пометить / зарегистрировать блоки
Теперь, когда у вас есть самые чистые возможные капли, пора пометить их как 1,2,3,4 или A, B, C, D и т. Д. Обычно это выполняется так называемым простым алгоритмом. Пропустите каждый пиксель и, если он соприкасается с какой-либо отмеченной областью, а также на переднем плане, присвойте его этому сегменту, иначе создайте новый. Если вы обнаружили более 4 важных сегментов, вам нужно выбрать наиболее подходящие. Примените здесь некоторую эвристику, а не теоретический алгоритм.
Шаг 3: Моделирование параметров
Теперь, как только мы получим наиболее вероятные 4 кандидата в 4 соответствующих эхо-запроса, вы можете определить ограничивающие блоки - по существу, верхний левый и нижний правый углы (или левый и правый большинство пикселей, а также верхний и нижний ряды большого двоичного объекта). , Найдите ограничивающую рамку, вы можете оштрафовать центроида каждой ячейки пинга.
следовательно, межцентровые расстояния теперь могут быть рассчитаны:
По сути у вас есть 8 параметров vecoter:
Шаг 4: Классификация
На последнем шаге теперь нам нужно иметь классификацию, существует ли пинг-паттерн да или нет.
Для чего-то вроде этого, вы можете иметь хорошую структуру байесовского классификатора.
Есть две гипотезы у вас есть
Сначала вы изучите много изображений, где вы знаете, что они принадлежат к изображению. Теперь вы можете построить различные гистограммы или применить метод оценки плотности. Читайте классификацию шаблонов Дуды Харт.
Теперь из данных испытаний
Следовательно, вы можете вычислить
Вам необходимо объединить это выражение с векторным выражением и приложить немало усилий, чтобы точно выполнить оценку параметра. Но я оставляю вас с базовым подходом здесь.
Пожалуйста, сделайте свою математику, это будет долго, но все же должно быть довольно интуитивно понятно.
РЕДАКТИРОВАТЬ
Так как вы уже определяете конкретные критерии 110 +/- 5 пикселей, последний шаг может быть проще. Вероятно, вам не обязательно рассчитывать все эти вероятности, если ваши критерии классификации фиксированы.
источник
Эта проблема кажется мне похожей на задачу определения интервала повторения импульсов + оценки. Мне нужно будет разработать этот ответ с течением времени, но алгоритмы, которые хорошо работают в этой задаче, имеют максимальную вероятность на решетке .
источник