Какие методы обработки изображений идеально подходят для этого конкретного сопоставления с инвариантным шаблоном сдвига / масштаба?

17

Проблема, которую я первоначально обсуждал здесь , эволюционировала и, возможно, стала немного проще, когда я изучил ее еще немного и получил новую информацию.

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

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

Я мог бы продолжать и продолжать об этом, но я приложил изображения, охватывающие то, что я имею в виду, см. Ниже:

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

Конечно, они также могут быть в другом «масштабе», как видно из этой семьи:

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

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

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

И, конечно же, как грандиозный финал, существует явная возможность этого «экстремального» сценария:

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

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

Я должен добавить, что на самом деле у меня нет цветных изображений - я просто получу мартикс чисел, поэтому я полагаю, что мы говорим о «оттенках серого».

Заранее спасибо!

PS Для чего это стоит, я, вероятно, буду использовать открытый C V.

РЕДАКТИРОВАНИЕ № 1:

Основываясь на комментариях, я добавил детали, которые вы просили здесь:

Для признаков, определяющих данные, мы можем предположить следующее:

  • Горизонтальная длина каждого пинга может варьироваться, но я знаю верхнюю и нижнюю границы этого. ДА за что-либо в пределах этой границы, НЕТ за что-либо за пределами. (Например, я знаю, что длина пингов может быть где-то между 1 и 3 секундами, например).

  • Для YES все эхо-запросы должны быть «видимыми», однако в последнем ряду может отсутствовать, и все равно нужно сказать «YES». В противном случае НЕТ.

  • Вертикальная длина («толщина») каждого пинга может варьироваться, но, опять же, также известны верхняя и нижняя границы. (Подобно тому, что вы видите на этих изображениях). ДА за что-либо в пределах этой границы. НЕТ для чего-либо снаружи.

  • Высота между каждым пингом всегда должна быть одинаковой для ДА. Если нет, то НЕТ. (Например, вы можете увидеть, как все пинги имеют одинаковую высоту относительно друг друга, ~ 110 на вертикальной оси). Таким образом, 110 +/- 5 может быть ДА, все остальное должно быть НЕТ.

Я думаю, вот и все - но дайте мне знать, что еще я могу добавить ... (Кроме того, все показанное здесь должно быть зарегистрировано как ДА, кстати).

ошалевший
источник
Что вы имеете в виду, когда говорите detect this pattern shown here? Вы просто заинтересованы в выделении красной / желтой линии или вам действительно нужно выражение, которое вычисляет отношения между такими линиями. Только нахождение строк может потребовать лишь некоторого определения порога или сегментации. Что ты действительно хочешь?
Дипан Мехта
@DipanMehta Извините за путаницу. То, что я хочу сделать, это: во-первых, не обращайте внимания на цвета (это просто говорят, что они были нанесены на график), то, что я буду иметь, это просто матрица чисел, поэтому оттенки серого. Во-вторых, поскольку цветов нет, я просто забочусь о «узоре», который вы видите там, с повторением четырех пингов. Таким образом, детектор увидит варианты этого шаблона изображения, как показано на изображениях выше, и скажет «да, этот шаблон существует». Извините за путаницу, дайте мне знать, если я могу уточнить что-нибудь еще. Благодарность!
Spacey
Итак, если вы правильно меня поняли, учитывая, что в верхней строке находится первая строка, вы хотите узнать, находятся ли баланс в том же месте. если это так, вы бы пришли к выводу, что шаблон существует! Правильно?
Дипан Мехта
@DipanMehta Да, в принципе, уметь обнаруживать, существует ли шаблон, показанный выше, достаточно устойчивый, чтобы справиться с неизменностью масштаба, и достаточно устойчивый, чтобы справиться с неизменностью сдвига. Имеет ли это смысл? Спасибо,
Спейси
1
Я понимаю, есть ли у вас доступ к исходным данным в реальной системе, над которой вы работаете. Если вы это сделаете, то может быть лучший подход, который работает с исходными данными напрямую, а не с промежуточным форматом спектрограммы, на котором вы сосредоточились.
Джейсон Р

Ответы:

6

Вообще говоря, есть два основных подхода к решению этой проблемы:

а. соответствие шаблона или
б. сопоставление с параметризованной моделью.

Лично, учитывая простоту модели, я бы предпочел второй подход к этой проблеме.

Шаг 1: Определите пинг-капли

В качестве первого шага извлеките «Ящики» - по существу, желтые / синие квадраты. Самым простым способом здесь может быть просто пороговое изображение. Кажется, что нет большого количества изменений в фоновом режиме, за исключением того, что с увеличением шума он, как правило, очень похож на пинг. Следовательно, порог может быть глобальным для всего изображения - и я думаю, что вы сможете получить достойный порог, который будет работать для всех изображений. Порог, однако, должен быть разумным, чтобы вы могли использовать что-то вроде метода Оцу. Смотрите это и это для получения дополнительной ссылки.

Благоустройство блоков

Одна из хороших вещей, которую вы можете сделать, это удалить паразитные точки, похожие на передний план пинга, где некоторые пиксели внутри пингов также синего цвета. Здесь вам нужна морфологическая операция под названием «Открытие». Вот одна из ссылок от HIPR . Этот тип операций требует умной формы, которая помогает сохранять похожие формы и удалять другие. В вашем случае вы можете выбрать горизонтальные линии. К концу этого у вас есть фон и пиксели переднего плана, аккуратно разделяющие пинги, не касаясь друг друга.

Шаг 2: Пометить / зарегистрировать блоки

Теперь, когда у вас есть самые чистые возможные капли, пора пометить их как 1,2,3,4 или A, B, C, D и т. Д. Обычно это выполняется так называемым простым алгоритмом. Пропустите каждый пиксель и, если он соприкасается с какой-либо отмеченной областью, а также на переднем плане, присвойте его этому сегменту, иначе создайте новый. Если вы обнаружили более 4 важных сегментов, вам нужно выбрать наиболее подходящие. Примените здесь некоторую эвристику, а не теоретический алгоритм.

Шаг 3: Моделирование параметров

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

Ся где я{1,2,3,4}С1С1

следовательно, межцентровые расстояния теперь могут быть рассчитаны:

С1я[Икс,Y]знак равно{С1[Икс]-Ся[Икс],С1[Y]-Ся[Y]}

Lя где я{1,2,3,4}

По сути у вас есть 8 параметров vecoter:

1.{С1[Икс],С1[Y]}2..4С1я[Икс,Y]5..8Lя

Шаг 4: Классификация
На последнем шаге теперь нам нужно иметь классификацию, существует ли пинг-паттерн да или нет.

Для чего-то вроде этого, вы можете иметь хорошую структуру байесовского классификатора.

Есть две гипотезы у вас есть

H0: шаблон пинга существует.
H1: шаблон пинга не существует

С1,я[Икс]

Сначала вы изучите много изображений, где вы знаете, что они принадлежат к изображению. Теперь вы можете построить различные гистограммы или применить метод оценки плотности. Читайте классификацию шаблонов Дуды Харт.

С1,я[Икс]μзнак равно20,σзнак равно0,1

С1,яЧАС0п[С1,я[Икс]|ЧАС0]

Теперь из данных испытаний

п[ЧАС0|С1,я[Икс]знак равноИкс1]С1[Икс]Икс1ЧАС0

Следовательно, вы можете вычислить

п[ЧАС0 |С1,я[Икс]]знак равноп[С1,я[Икс]|ЧАС0]*п[ЧАС0]п[С1,я[Икс]]

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

Пожалуйста, сделайте свою математику, это будет долго, но все же должно быть довольно интуитивно понятно.

п[ЧАС0|все параметры]>1/2

РЕДАКТИРОВАТЬ
Так как вы уже определяете конкретные критерии 110 +/- 5 пикселей, последний шаг может быть проще. Вероятно, вам не обязательно рассчитывать все эти вероятности, если ваши критерии классификации фиксированы.

Дипан Мехта
источник
Большое спасибо! Мне придется переварить это и вернуться к вам.
Спейси
3

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

Питер К.
источник
Спасибо, да, я буду рад услышать ваши мысли по этому поводу. А пока посмотрю вашу ссылку.
Спейси
Питер, у тебя было время подумать об этом, как ты упомянул? Мне было бы интересно услышать ваши мысли по этому вопросу.
Спейси
Просто снова начал ковыряться (апрель был списанием). Я могу ошибаться: то, как в статье Кларксона формулируется проблема, отличается ... позвольте мне еще немного покопаться.
Питер К.