Использование обработки изображений, чтобы сделать вывод, занято ли место

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

Какое программное обеспечение я должен искать для достижения этого эффекта? Главное — это возможность обнаружить объект (может быть, какой-то материал, очевидный для компьютера) и определить, исчез ли он.

Я перенес ваш вопрос на сайт, где он актуален. Ваш вопрос в основном соответствует нашим рекомендациям по обеспечению качества , что хорошо, но вы должны предоставить нам немного больше информации. Какая операционная система у вас есть? Сколько вы готовы заплатить (если нет свободного программного обеспечения, которое может это сделать)?
Определить, какие места заняты, — это одно, но я не понимаю, как вы собираетесь определять, что студенты занимают эти места. Заставить каждого ученика носить футболку с уникальным QR-кодом?
Если есть какое-то отличное решение, я, вероятно, мог бы подняться до 500-1000 долларов (если это разовая вещь). Я открыт и для других предложений. Операционная система Windows, но я могу использовать любую операционную систему, это не имеет большого значения.
Я также изучаю какое-нибудь актуальное программное обеспечение для распознавания фотографий, поэтому, если у вас есть какая-то информация об этом, было бы здорово. Что касается занятых мест, если есть выделенные места, предположительно, студенты не смогут занять место для своего друга или т. д., потому что они не находятся в непосредственной близости.

Ответы (3)

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

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

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

Если светоотражающая лента имеет определенный цвет, вы также можете использовать ImageMagick, чтобы сфокусироваться на определенном цветовом канале.

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

Вот дополнительная информация о том, как использовать ImageMagick для сравнения изображений:

Это даст довольно много ложных срабатываний, потому что люди кладут сумки/напитки на свободные места рядом с собой.
@user3791372 user3791372 Это скорее комментарий к методологии, предложенной в вопросе, не так ли?
@Chop нет, это касается использования двух изображений вместе
@user3791372 Вопрос предлагает посчитать рефлексивную ленту на незанятых местах. Также могут возникнуть трудности с сумками и напитками. Но я согласен с трудностями, поэтому я думаю, что DW предложил различать только определенные участки изображения. Я думаю, что понимаю ваш смысл (лента может быть видна, хотя и частично скрыта, что приводит к дифференциалу, где сиденье все еще свободно).

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

Вам придется обучить программное обеспечение, чтобы узнать, как выглядит пустое место или как выглядит занятое место, в том числе научить его распознавать, как выглядит место с сумкой / едой, чтобы не считать его занятым.

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

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

Это было бы ОЧЕНЬ сложно и потребовало бы много человеко-часов для создания программного обеспечения и обеспечения его надлежащего обучения.

Не проще ли подойти к этому с другой стороны? Возьмите автоматический подсчет, когда люди входят через вход с простым световым лучом и приемником, и считайте каждый раз, когда он сломан. Может подушка для ног? Или люди, нажимающие кликер, когда входят (который, кстати, может быть подключен к светодиодной стойке в холле!). Что-то простое, что можно сделать с помощью pi/arduino. Я уверен, что вы получите несколько ложных срабатываний, когда люди уходят и возвращаются, но это было бы НАМНОГО проще, чем то, что вы предлагаете.

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

Или... если вы хотите знать, какие там студенты, дайте каждому студенту NFC-карту с закодированным на ней индивидуальным номером, и когда они войдут, они проведут ее через приемник. Карты NFC дешевы, их кодирование довольно тривиально. Бум. Возможно, их можно было бы включить в студенческие билеты.

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

Эта статья в блоге дает хорошую отправную точку для работы над распознаванием лиц с использованием python и OpenCV2 в 25 строках кода на python — доступно несколько таких статей. Важным соображением является то, пытаетесь ли вы получить приблизительное число или 100% точное.

Распознавание лиц никогда не бывает точным на 100%, и ничего не упоминалось об обнаружении лиц.
Отсюда соображение, упомянутое выше.