batchat25t 0 Жалоба Опубликовано June 8, 2014 Здравствуйте, в теме computer vision я новичок. Возникла задача - объект (например, разводной мост) имеет два возможных состояния: "сведен" и "разведён". Требуется, анализируя видео объекта, определить его текущее состояние. Объект неподвижен относительно камеры и всегда известно его точное местоположение в кадре. Объект освещён в ночное время. Фон, на котором располагается объект, меняется в зависимости от времени года и погодных условий. Подскажите пожалуйста, в какую сторону рыть. Какие алгоритмы использовать? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано June 8, 2014 Собрать кучу изображений моста в открытом состоянии, примерно такую же-кучу в закрытом (думаю штук по 50 каждого класса должно хватить). Уменьшить изображение, чтобы глазом можно было различить мост и понять закрыт он или открыт. При помощи этого набора обучить классификатор (нейронную сеть, SVM, регрессию, ну или любой другой). Для нейронки пример я приводил здесь: http://www.compvision.ru/forum/index.php?showtopic=1552&pid=10803&st=0&#entry10803 Дальше подаем картинку на классификатор, получаем ответ. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
iskees 32 Жалоба Опубликовано June 8, 2014 Или если это "например мост" то там скорее всего доминирующая горизонтальная прямая или две под углом, можно их найти HoughLine или по Фурье углы определить. Но вариант с классификатором конечно лучше. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
batchat25t 0 Жалоба Опубликовано June 9, 2014 Спасибо за ответы. Я вообще в лоб хотел решать задачу простым расчетом корреляции между наблюдаемой картинкой и образцами в базе, сделанными с той же точки в различных состояниях в различное время (день/ночь). Но что-то нет уверенности, что получу надёжное определение состояния. Поэтому обучаемый классификатор будет надежнее. Вариация моделей "моста" присутствует. Это может быть два пролёта сходящиеся в центре. Может быть один длинный пролёт выдвигающийся с берега. Либо длинный пролёт, имеющий сочленение посередине, сгибающийся пополам и отходящий к одному берегу. Поэтому с анализом линий в разведенном состоянии наверное много мороки возникнет. Скажите, а в связи с тем, что фон, на котором наблюдаем мост (летом травка, зимой снег) меняется, придётся обучать классификатор по изображениям, снятым в течение года? А если поставить камеру снизу моста и снимать его на фоне неба, как много вариаций неба(ясно, пасмурно) придётся подсунуть на обучение , чтобы получить надёжный классификатор? По ночам освещенный объект будет светлее неба, а днём - наоборот. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано June 9, 2014 Ставить камеру под мост мне кажется не очень хорошая мысль, так как средний кадр, равномерный тон и для моста и для неба. По поводу фона, лучше чтобы обучающая выборка содержала как можно более полное описание модели, поэтому да, хорошо бы чтобы она содержала изображения снятые в течение года. Но может быть будет достаточно и снятых в один сезон в разное время суток. Так сказать сложно, надо пробовать. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано June 9, 2014 Я бы в качестве первого шага не обучал классификатор, а попробовал бы качественно разобраться с проблемой. Например, на изображении выделить область со сведённым мостом и поискать там горизонтальные отрезки или кривые второго порядка (дуги окружностей). При необходимости можно провести предобработку (увеличение контраста, фильтрация - можно даже билатеральный фильтр). Не получилось найти линии? Построить горизонтальную гистограмму (как при поискте строк с текстом). Можно попробовать связку Canny + контуры. В целом подход должен быть понятен: выделить признаки моста, за которые цепляется глаз. Если это получается, то можно обойтись и без классификатора. Или подавать на него не просто изображение, а результат какой-нибудь фильтрации, которая на глаз значимо выделяет мост. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
batchat25t 0 Жалоба Опубликовано June 11, 2014 Произвёл билатеральную фильтрацию и бинаризацию изображения, снятого снизу моста. Контуры объекта видны достаточно отчетливо как в закрытом состоянии, https://www.dropbox.com/s/v03gt5ftw25o5e5/%D0%97%D0%B0%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D0%B9.jpg так и в открытом https://www.dropbox.com/s/goxx88zcqpuq5ok/%D0%9E%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D0%B9.png Правильно я понимаю, что мне достаточно установить наличие связи между точкой А и Б (что между ними есть "маршрут" черных пикселей)? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано June 11, 2014 Ага. Можно это и контурами попробовать проверить. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
batchat25t 0 Жалоба Опубликовано June 11, 2014 Не знаете, в OpenCV реализованы алгоритмы нахождения пути между точками? Или нужно реализовывать самому, поиском в глубину/ширину? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано June 11, 2014 судя по картинкам лучше определять наклон линий. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах