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