Verwenden von Bildverarbeitung, um abzuleiten, ob ein Sitz belegt ist

Ich schaue mir verschiedene Teilnahmeoptionen für eine besonders große Seminarklasse (etwa 600 Studenten) an und dachte darüber nach – was wäre, wenn ein Foto von den Sitzen gemacht würde, vielleicht mit einem visuellen Hinweis darauf, wie z. B. reflektierendem Klebeband. Ein weiteres Bild wurde während eines Unterrichts mit zugewiesenen Sitzplätzen aufgenommen und wenn das reflektierende Band bedeckt ist, könnte dies ein guter Hinweis darauf sein, ob der Sitzplatz besetzt ist oder nicht.

Welche Art von Software sollte ich mir ansehen, um diesen Effekt zu erzielen? Die Hauptsache ist, ein Objekt zu erkennen (vielleicht eine Art Material, das für den Computer offensichtlich ist) und zu erkennen, ob es weg ist.

Ich habe Ihre Frage auf eine Website migriert, auf der sie zum Thema gehört. Ihre Frage entspricht größtenteils unseren Qualitätsrichtlinien , was nett ist, aber Sie müssen uns ein wenig mehr Informationen geben. Welches Betriebssystem steht Ihnen zur Verfügung? Wie viel sind Sie bereit zu zahlen (wenn es keine kostenlose Software gibt, die das kann)?
Zu erkennen, wie welche Plätze besetzt sind, ist eine Sache, aber ich sehe nicht, wie Sie feststellen sollen, dass Schüler diese Plätze besetzen. Jeden Schüler ein T-Shirt mit einem einzigartigen QR-Code tragen lassen?
Wenn es eine großartige Lösung gibt, könnte ich wahrscheinlich auf 500-1000 Dollar steigen (wenn es eine einmalige Sache ist). Für andere Vorschläge bin ich auch offen. Betriebssystem ist Windows, aber ich kann jedes Betriebssystem verwenden, es ist keine große Sache.
Ich schaue mir auch eine aktuelle Fotoerkennungssoftware an. Wenn Sie also Informationen dazu hätten, wäre es großartig. In Bezug auf besetzte Sitzplätze, wenn es zugewiesene Sitzplätze gibt, können die Schüler vermutlich keinen Sitzplatz für ihren Freund usw. verdecken, da sie sich nicht in unmittelbarer Nähe befinden

Antworten (3)

Wenn Sie garantieren können, dass sich die Kamera jedes Mal in genau derselben Position befindet (niemand wird sie bewegen oder anstoßen), und Sie die Art/Farbe des reflektierenden Bands auswählen können, können Sie möglicherweise eine einfache Bilddifferenzierungssoftware verwenden .

ImageMagick enthält Software, mit der Sie zwei Bilder vergleichen können. Es kann verwendet werden, um ein "Differenzbild" zu berechnen, das die Pixelpositionen zeigt, an denen ein wesentlicher Unterschied zwischen den beiden besteht.

Damit können Sie Folgendes tun. Machen Sie vorab ein Foto des leeren Zuschauerraums. Kreisen Sie dann manuell jeden der Orte ein, die jedem Stuhl entsprechen (z. B. den Ort, an dem sich das reflektierende Band befindet). Machen Sie als Nächstes am Tag der Vorlesung ein Foto und führen Sie einen „Vergleich“ durch, um dieses Bild mit dem des leeren Auditoriums zu vergleichen. Dadurch erhalten Sie eine Heatmap der Pixelpositionen, an denen ein wesentlicher Unterschied zwischen den beiden Bildern besteht. Schließlich können Sie die Orte ausschneiden, die Sie zuvor bestimmt haben und die einem Sitzplatz entsprechen, und zählen, wie viele davon es gibt. Sie können ImageMagic auch verwenden, um bestimmte Stellen auszuschneiden, die durchschnittliche Intensität in diesen Regionen zu berechnen und sie mit einem Schwellenwert zu vergleichen.

Wenn das reflektierende Band eine bestimmte Farbe hat, können Sie auch ImageMagick verwenden, um sich auf einen bestimmten Farbkanal zu konzentrieren.

Das ist ein wenig hacky. Ich weiß nicht, wie gut es funktionieren würde, aber es wäre ziemlich einfach, damit von Hand zu experimentieren und festzustellen, wie gut es funktionieren würde.

Hier finden Sie weitere Informationen zur Verwendung von ImageMagick zum Vergleichen von Bildern:

Dies wird zu einigen Fehlalarmen führen, da die Leute Taschen / Getränke auf leere Plätze neben sich stellen
@ user3791372 Dies ist eher ein Kommentar zu der in der Frage vorgeschlagenen Methodik, oder?
@Chop nein, es geht um die Verwendung, zwei Bilder miteinander zu vergleichen
@ user3791372 Die Frage schlägt vor, ein Reflexband auf unbesetzten Sitzen zu zählen. Die Schwierigkeit von Taschen und Getränken kann ebenfalls auftreten. Aber ich stimme der Schwierigkeit zu, weshalb DW meiner Meinung nach vorgeschlagen hat, nur bestimmte Bereiche des Bildes zu unterscheiden. Ich glaube, ich verstehe Ihre Bedeutung (das Klebeband kann sichtbar, aber teilweise verdeckt sein, was zu einem Unterschied führt, bei dem der Sitz noch frei ist).

Sie können erwägen, opencv zu verwenden, um etwas zu erstellen, das einen leeren Platz im Vergleich zu einem besetzten Platz erkennt. Es gibt mehrere Bildverarbeitungsalgorithmen, die von Nutzen sein werden - obwohl dies eine benutzerdefinierte Software wäre, die Sie erstellen müssten.

Sie müssten die Software trainieren, um zu lernen, wie ein leerer Sitz aussieht oder wie ein besetzter Sitz aussieht - einschließlich des Trainings, um zu erkennen, wie ein Sitz mit einer Tasche / einem Essen darin aussieht, um ihn nicht als besetzt zu zählen.

Wenn die Sitze eine bestimmte helle Farbe haben, können Sie möglicherweise mit der Farberkennung davonkommen, obwohl ich bezweifle, dass dies zu 100% genau wäre, da die Schüler Kleidung in derselben Farbe wie die Sitze tragen könnten.

Ich würde mir vorstellen, dass der beste Winkel über Kopf wäre, aber dies erfordert möglicherweise mehrere Kameras, um eine Verzerrung der Sitze zu verhindern.

Dies wäre SEHR kompliziert und würde viele Arbeitsstunden erfordern, um die Software zu erstellen und sicherzustellen, dass sie richtig trainiert wird.

Wäre es nicht einfacher, sich ihm aus einem anderen Blickwinkel zu nähern? Führen Sie mit einem einfachen Lichtstrahl und einem Empfänger eine automatische Zählung durch, wenn Personen durch den Eingang kommen, und zählen Sie jedes Mal, wenn er kaputt ist. Vielleicht ein Fußdruckpolster? Oder Leute, die beim Betreten einen Klicker drücken (der übrigens mit einem LED-Zähler in der Halle verbunden sein könnte!). Etwas Einfaches, das mit einem Pi / Arduino gemacht werden könnte. Ich bin sicher, Sie würden ein paar Fehlalarme bekommen, wenn Leute raus und wieder reingehen, aber es wäre VIEL einfacher als das, was Sie vorschlagen.

Oder warum nicht den althergebrachten Weg gehen – ein Stück Papier mit Namen für „Brandschutzvorschriften“ herumreichen. Dann könnten Sie OCR verwenden, um schnell zu sehen, wer teilgenommen hat, und hübsche Diagramme davon erstellen! Wenn die Anwesenheit ein Teil der Note ist, dann wäre es doppelt nützlich.

Oder ... wenn Sie wissen möchten, welche Schüler dort sind, geben Sie jedem Schüler eine NFC-Karte mit einer darauf codierten individuellen Nummer, und wenn sie eintreten, ziehen sie sie durch einen Empfänger. NFC-Karten sind billig und kodieren sie ziemlich trivial. Boom. Vielleicht könnten sie in Studentenausweise eingebaut werden.

Ich denke jedoch, dass dies aufgrund des Mangels an Details und Kenntnissen und Bemühungen, die in Ihrer Frage gezeigt werden, nicht für eine reale Situation ist, sondern nur eine Aufgabe, um Sie dazu zu bringen, Methoden zu untersuchen und Sie dazu zu bringen, über den Tellerrand hinauszudenken.

Dieser Blog-Artikel bietet einen guten Ausgangspunkt für die Arbeit an der Gesichtserkennung mit Python und OpenCV2 in 25 Zeilen Python-Code - es gibt eine Reihe solcher Artikel. Die wichtige Überlegung ist, ob Sie versuchen, eine ungefähre Zahl oder 100% genau zu sein.

Die Gesichtserkennung ist nie 100% genau, und es wurde nichts über die Erkennung von Gesichtern erwähnt
Daher die oben erwähnte Überlegung.