Bilderfassung und -analyse

Ich arbeite an einem Projekt, um eine Schaltung für ein Bildverarbeitungsprojekt zu erstellen. Grundsätzlich muss die Schaltung ein Bild aufnehmen (320 × 240), nach einigen Merkmalen suchen und dann basierend auf den Merkmalen einen Befehl geben.

Wenn beispielsweise kein roter Pfeil gefunden wird, wird ein "Löschen"-Befehl gesendet. Wenn ein roter Pfeil gefunden wird, muss die Schaltung die Richtung des Pfeils senden.

Meine Frage ist: Wenn ich jeden Zyklus (von der Aufnahme eines Bildes bis zur Richtungsausgabe) in 2 Sekunden beenden möchte, wäre es möglich, einen PIC-Mikrocontroller zu verwenden? Welcher PIC-Controller und welche Kamera würden mir das ermöglichen?

HINWEIS: Mein Chef braucht eine ACAP-Lösung (so billig wie möglich).

Sie sollten Ihrem Chef sagen, dass ACAP keine Spezifikation ist. Sie benötigen ein tatsächliches Budget.
Ich denke, ich kann meine Lösung meinem Chef verkaufen, wenn die Kosten für Schaltung und Kamera weniger als 60 US-Dollar betragen.
Wie schnell muss die Erkennung sein?
@suha Ein kompletter Zyklus in 2 Sek.
Bitte posten Sie hier auch eine beliebige Quelle (z. B. Website, Code). Mein Chef gibt mir heute dieses Projekt und möchte, dass ich es innerhalb von 3 Wochen fertigstelle.
@Superhero Die Zeit hängt vollständig von der für die Erkennung erforderlichen Komplexität ab. Du musst viel mehr Infos geben. Ich denke, drei Wochen sind nicht lang genug, um es fertigzustellen.
Ein einfarbiges Bild mit 24 Bit Farbtiefe hat eine Größe von 320 x 240 x 3 Byte. Kaum eine Chance, dass ein PIC 230400 Byte freien RAM hat. Sie können die Farbtiefe natürlich auf 8 Bit reduzieren (3 Bit für Rot, 3 Bit für Grün, zwei Bit für Blau), dann verwendet Ihr Bild immer noch 76800 Bytes und das passt wahrscheinlich auch nicht in einen durchschnittlichen PIC (ich habe nie studiert PIC-Datenblätter, aber in der Nähe von 100 kB RAM für einen einfachen Mikrocontroller klingt für mich unwahrscheinlich).

Antworten (2)

Es ist plausibel, dass ein PIC32 diese Aufgabe übernehmen kann, aber es hängt enorm von den Details Ihres Erkennungsalgorithmus ab. Hier sind einige mögliche Algorithmen, die Sie möglicherweise implementieren möchten:

  • Erkennen Sie einen leuchtend roten Pfeil, der immer dieselbe Größe hat, in einer gut beleuchteten Szene mit vollständig nicht roten Objekten.
  • Erkennen Sie einen hellroten Pfeil, der unterschiedlich groß sein kann, in einer gut beleuchteten Szene mit vollständig nicht roten Objekten.
  • Erkennen Sie einen rötlichen Pfeil, der unterschiedlich groß sein kann, in einer schlecht beleuchteten Szene mit Objekten, von denen viele ebenfalls rot sein können und bei denen der Hintergrund ebenfalls rot sein kann.

Der erste wäre ein viel einfacherer Algorithmus als der letzte.

Was auch immer Sie tun, Sie müssen bei der Verwendung von Speicher- und Verarbeitungsressourcen ziemlich vorsichtig sein. Die PIC32s haben maximal 128k Speicher, was ausreichen sollte, um das Bild zu speichern:

320x240 = 75kB.

...solange Sie nur die Farbtonkomponente speichern. Alternativ können Sie auch ein Bild mit niedrigerer Auflösung und 24-Bit-Farbe speichern.

160*120 = 56kB.

Wenn Sie uns einige Einzelheiten zur genauen Art der Erkennung und des Algorithmus mitteilen können, können wir Ihnen möglicherweise weiterhelfen:

  • Hast du das schon auf einem PC implementiert?
  • Ist der Pfeil immer viel röter als der Hintergrund?
  • Wird der Pfeil auf dem Bild immer gleich groß sein?
  • Wird es immer derselbe Pfeil sein? Oder könnte es ein handgezeichneter Pfeil sein?
Danke für deine Antwort. Der Pfeil ist immer röter als der Hintergrund. Der Pfeil ist nicht immer gleich groß. Sie können davon ausgehen, dass der Pfeil in meinem Fall (x1 i + y1 j) das Ende und (x2 i + y2 j) die Spitze ist. x1, x2,y1,y2 werden jedes Mal auf einem Bild geändert. Es ist kein handgezeichneter Pfeil
@Superhero - Kannst du ein Beispielbild posten?
Eigentlich werde ich mein System verwenden, um die Ausrichtung von zwei Metallplatten zu erkennen. Die Idee ist eine rote Linie am oberen Rand einer Metallplatte. Die 2. Platte wird auf der 1. Platte sein. Wenn alles perfekt ausgerichtet ist, deckt die 2. Platte die rote Linie auf der 1. Platte vollständig ab. Wenn sich einer der beiden verschiebt, wird die rote Linie sichtbar, dann muss ich sagen, in welchem ​​Winkel die rote Linie von der Kamera gesehen wird, damit in dieser Situation eine Anpassung vorgenommen werden kann.
@Superhero - Hast du darüber nachgedacht, einfach einen Raspberry Pi oder so etwas zu verwenden?
Muss ich ein Betriebssystem auf dem Raspberry Pi installieren? Ich habe überhaupt keine Erfahrung mit Raspberry Pi
Ich unterstütze den Raspberry Pi.
Danke für Ihren Vorschlag. Ich würde an dieser Stelle gerne PIC verwenden, da ich ein wenig Erfahrung mit PIC habe. Ich bin nicht schlau genug, um in 3 Wochen etwas über Raspberry Pi zu lernen. Ich würde jedoch definitiv ab heute anfangen, mich mit Raspberry Pi zu beschäftigen.
@Superhero - Sie werden vielleicht feststellen, dass das RPi eigentlich sehr einfach zu bedienen ist. Vergessen Sie nicht, dass es speziell entwickelt wurde, um Menschen beim Erlernen des Programmierens zu helfen. Möglicherweise stellen Sie auch fest, dass es billiger ist als Ihre PIC-Lösung.

Ich würde auch den Raspberry Pi vorschlagen. Es ist mit einem Linux-basierten Betriebssystem vorinstalliert, aber es wird viel gehackt, um ihm zusätzlich zu dem, was Sie aus der Box erhalten, eine enorme Funktionalität zu verleihen. Die Leute haben Android darauf laufen lassen, aber hilfreicher (wenn Sie neu darin sind) wäre das, was Adafruit gerade veröffentlicht hat: Adafruit Raspberry Pi Educational Linux Distro . Es ist eine brandneue Linux-Distribution speziell für den Raspberry Pi, die viele Dinge viel einfacher macht. Ich denke, eine große Menge an Komplexität wird aus Ihrem Projekt entfernt, wenn Sie etwas anderes als eine MCU verwenden.

Im Moment hat Raspberry PI eine lange Lieferzeit und in begrenzten Abnahmemengen. Zum Beispiel können Sie nicht 10000 Stück bestellen. Das könnte es in vielen kommerziellen Projekten eliminieren, wahrscheinlich auch in diesem.
@avra Ich glaube nicht, dass er erwähnt hat, dass er so viele machen muss, aber ich verstehe deinen Standpunkt. Obwohl ich denke, dass sie das Limit für die Anzahl, die Sie kaufen können, aufgehoben haben - denke ich.