Bildverarbeitung:Verbesserung des Algorithmus für die Erkennung von „Coca-Cola-Dosen“.

Bildverarbeitung:Verbesserung des Algorithmus für die Erkennung von „Coca-Cola-Dosen“.

Ein alternativer Ansatz wäre das Extrahieren von Merkmalen (Schlüsselpunkten) unter Verwendung der skaleninvarianten Merkmalstransformation (SIFT) oder beschleunigter robuster Merkmale (SURF).

Sie können einen schönen OpenCV finden Codebeispiel in Java , C++ , und Python auf dieser Seite:Features2D + Homographie, um ein bekanntes Objekt zu finden

Beide Algorithmen sind invariant gegenüber Skalierung und Rotation. Da sie mit Features arbeiten, können Sie auch mit Okklusion umgehen (solange genügend Keypoints sichtbar sind).

Bildquelle:Tutorial-Beispiel

Die Verarbeitung dauert bei SIFT einige hundert ms, SURF ist etwas schneller, aber nicht für Echtzeitanwendungen geeignet. ORB verwendet FAST, das bezüglich Rotationsinvarianz schwächer ist.

Die Originalpapiere

  • SURF:Robuste Funktionen beschleunigt
  • Eindeutige Bildmerkmale aus skaleninvarianten Schlüsselpunkten
  • ORB:eine effiziente Alternative zu SIFT oder SURF

Zur Beschleunigung würde ich ausnutzen, dass Sie nicht nach einem beliebigen Bild/Gegenstand gefragt werden, sondern gezielt nach einem mit dem Coca-Cola-Logo. Dies ist von Bedeutung, da dieses Logo sehr unverwechselbar ist und im Frequenzbereich, insbesondere im Rotkanal von RGB, eine charakteristische, skaleninvariante Signatur aufweisen sollte. Das heißt, das abwechselnde Muster von Rot zu Weiß zu Rot, auf das eine horizontale Abtastlinie (auf einem horizontal ausgerichteten Logo trainiert) trifft, hat einen charakteristischen "Rhythmus", wenn es durch die Mittelachse des Logos verläuft. Dieser Rhythmus wird bei verschiedenen Maßstäben und Ausrichtungen "beschleunigen" oder "verlangsamen", bleibt aber proportional äquivalent. Sie könnten ein paar Dutzend solcher Scanlines identifizieren/definieren, sowohl horizontal als auch vertikal durch das Logo und mehrere weitere diagonal in einem Sternenmuster. Nennen Sie diese die "Signatur-Scanlinien."

Um diese Signatur im Zielbild zu suchen, müssen Sie das Bild einfach in horizontalen Streifen scannen. Suchen Sie nach einer Hochfrequenz im roten Kanal (was anzeigt, dass Sie sich von einem roten Bereich zu einem weißen bewegen) und sehen Sie, sobald Sie ihn gefunden haben, ob einer der Frequenzrhythmen folgt, die in der Trainingseinheit identifiziert wurden. Sobald eine Übereinstimmung gefunden wurde, kennen Sie sofort die Ausrichtung und Position der Scanlinie im Logo (wenn Sie diese Dinge während des Trainings im Auge behalten), sodass es trivial ist, die Grenzen des Logos von dort aus zu identifizieren.

Ich wäre überrascht, wenn dies kein linear effizienter Algorithmus wäre, oder fast so. Es spricht offensichtlich nicht Ihre Dosenflaschendiskriminierung an, aber zumindest haben Sie Ihre Logos.

(Update:Zur Flaschenerkennung würde ich neben dem Logo nach Cola (der braunen Flüssigkeit) suchen - also innen die Flasche. Oder, im Falle einer leeren Flasche, würde ich nach einem Verschluss suchen die immer die gleiche Grundform, Größe und den gleichen Abstand zum Logo haben und normalerweise ganz weiß oder rot sind. Suchen Sie nach einer einfarbigen Ellipsenform, wo eine Kappe sollte sein, relativ zum Logo. Natürlich nicht narrensicher, aber Ihr Ziel hier sollte es sein, das Einfache zu finden diejenigen schnell .)

(Seit meiner Bildverarbeitung sind einige Jahre vergangen, daher habe ich diesen Vorschlag auf hohem Niveau und konzeptionell gehalten. Ich denke, er könnte der Funktionsweise eines menschlichen Auges ein wenig nahe kommen - oder zumindest der Funktionsweise meines Gehirns!)


Lustiges Problem:Als ich mir dein Flaschenbild ansah, dachte ich, es wäre auch eine Dose. Aber was ich als Mensch tat, um den Unterschied zu erkennen, war, dass ich dann bemerkte, dass es auch eine Flasche war ...

Um Dosen und Flaschen voneinander zu unterscheiden, wie wäre es also, wenn Sie zuerst einfach nach Flaschen scannen? Wenn Sie eine finden, maskieren Sie das Etikett, bevor Sie nach Dosen suchen.

Nicht zu schwer zu implementieren, wenn Sie bereits Dosen machen. Der wirkliche Nachteil ist, dass es Ihre Bearbeitungszeit verdoppelt. (Aber wenn Sie an reale Anwendungen denken, werden Sie am Ende sowieso Flaschen machen wollen;-)