2013-11-23 3 views
0

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

У вас есть одно изображение из видео наблюдения, расположенного в аэропорту, которое включает в себя линию людей, ожидающих регистрации. Вы должны оценить, является ли линия большой/переполненной, и поэтому необходимы дополнительные клерки. Вы можете принять все, что может помочь вашему ответу. Что бы вы сделали? Я сказал им, что я пытаюсь

  • сегментировать область, содержащую людей от остальных обнаружения края
  • использовать допущения на контур тела, такие как относительная высота/ширина до Denoise нежелательных кромок
  • использование цвета знаний; но потом они спросили, как сделать это, и я не знаю
+2

Вы не можете испортить интервью, сказав, что не знаете ответа на вопрос. Либо вы пошли на собеседование, зная, что вы не знаете домен, в котором они нуждаются, или объявление плохо написано. Если им требуются программисты, обладающие знаниями об анализе изображений, а не просто знание того, что это возможно, но фактическая математика и обработка сигналов позади него, тогда объявление (или все, что вы читали, что заставило вас появиться для интервью), должно сказать. –

+0

Если бы это был я, я бы сказал, что есть специальные библиотеки для языка программирования, который я использую (C#), и используемая среда выполнения (.NET), которая помогла бы мне в этом. В любом случае, это не вопрос для переполнения стека. –

+0

Благодарим вас за ответ. Я не вижу вреда в применении на работу, которая точно не соответствует вашей квалификации, о которой они знали. У меня есть знания в обработке сигналов, и я ищу способ узнать более конкретно в обработке изображений, и иногда вы учитесь лучше всего, работая. Вы знаете более подходящий форум для этого вопроса? –

ответ

2

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

Вы сказали, что я могу предположить что угодно, поэтому я буду считать, что пол в аэропорту - это хороший однородный зеленый цвет. Давайте сделать снимок очереди через каждые 10 секунд:

queue at time t=0

queue at time t=10s

queue at time t=20s

Мы можем использовать фильтр диапазона цвета, чтобы определить области пола, которые являются пустыми в каждом изображении:

empty floor area at time t=0s

empty floor area at time t=10s

empty floor area at time t=20s

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

combined floor space images, showing queue length

Есть несколько способов улучшения на этом. Например, зеленый цвет не может быть хорошим выбором цвета в аэропорту Дублина в день Святого Патрика. Кварцевые плитки были бы немного сложнее выделить из объектов переднего плана, но результаты были бы более надежными. Еще одной альтернативой является использование инфракрасной камеры для определения тепловых характеристик.

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

+0

Ничего себе спасибо !! это очень полезный ответ! Просто чтобы убедиться, что, когда вы сказали, чтобы вычислить максимальный пиксель в каждом изображении, вы имели в виду прохождение суб-частей изображения, например, каждые 5X5 пикселей, а затем выбрать максимальный пиксель вправо? –

+0

Нет проблем :-) Я имел в виду, что вы должны исследовать каждую позицию пикселя во всех трех изображениях и вычислять максимум этих трех значений. В графическом редакторе это будет эквивалентно объединению всех трех изображений с режимом наложения, установленным на «lighten». Это приводит к изображению, которое выглядит как последнее, показанное выше (с красной стрелкой). Это устраняет людей, которые ходят и не стоят в очереди, потому что каждый раз они будут в другом положении. –

+0

OK спасибо:) !!! –

0

Я просто хотел бы использовать детектор лица, для обнаружения HOG людей Пример OpenCV в: http://docs.opencv.org/modules/gpu/doc/object_detection.html

или латентный SVM с моделью человека: http://docs.opencv.org/modules/objdetect/doc/latent_svm.html

Я бы подсчитать количество людей в очереди. ..

+0

спасибо, Гил! это хороший ответ, но они не просили идентифицировать очертания людей в этом случае, поэтому это немного сложнее для этого случая. –

+0

Я имел в виду, что вы можете просто подсчитать количество людей в очереди, чтобы узнать, переполнено ли это ... – GilLevi

0

Я бы оценил цвет пустого пола и перешел в нормализованное цветовое пространство (например, {R/(R + G + B), G/(R + G + B)}). Также сделайте это для изображения, которое вы хотите проверить, и сравните эти два.

Мое предположение: где разница больше порога T, это связано с человеком.

Когда это происходит для слишком большого пространства, оно переполнено, и вам нужно больше клерков для регистрации.

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

Смежные вопросы