Komponenten für das Design von Bildverarbeitungssystemen

Erstellt: August 13, 2021
Aktualisiert am: Juli 1, 2024

 

Smart-Kameras, Computer Vision, Machine Vision… egal, wie man es nennt, Vision-Anwendungen finden ihren Weg in immer mehr Produkte. Die klassische Anwendung, mit der die meisten PCB-Designer vertraut sind, ist die Fertigung und neuerdings die Gesichtserkennung auf Ihrem Smartphone. Die Designer, die regelmäßig mit Machine-Vision-Designs und -Systemen arbeiten, sehen viele einzigartige Anwendungen in der Medizin, Automobilindustrie, Robotik, Luft- und Raumfahrt, Sicherheit und sicherlich auch in anderen Bereichen.

 

Ein interessantes Phänomen in der Elektronikindustrie ist die Leichtigkeit, mit der neue Technologien in neue Systeme integriert werden können, während sie weiter verbreitet werden. Machine Vision hat definitiv den Punkt überschritten, an dem Standardisierung, Entwicklerunterstützung und eine Fülle von Komponenten für Designer verfügbar sind, die in diesem Bereich innovativ sein wollen. Heute gibt es mehrere beliebte Hardware-Plattformen, die eine Einstiegsoption für neuere Designer darstellen. Wenn Sie über das Prototyping hinaus sind und produktionsreife Hardware vorbereiten, ermöglichen neuere Prozessoren hochintegrierte Systeme, die fortschrittliche Technologien wie maschinelles Lernen nutzen.

 

In diesem Leitfaden werden wir einige der Komponenten untersuchen, die zum Aufbau von Machine-Vision-Systemen benötigt werden, und die Ressourcen, die für Embedded-Entwickler verfügbar sind. Machine-Vision-Systeme haben ein wichtiges Hardware- und Maschinenbau-Element, da wir es mit Kameras und Optiken zu tun haben. Die Entwicklung dieser Systeme ist sehr reichhaltig, mit Aufgaben, die mehrere Disziplinen umfassen. Glücklicherweise haben Komponentenhersteller und Open-Source-Entwickler Zugang zu vielen Ressourcen, um das Hardware-Design und die Systementwicklung zu beschleunigen, und interessierte Entwickler werden ermutigt, sich einige der Beispiele anzusehen, die wir hier zeigen, um zu beginnen.

Architektur von Machine-Vision-Systemen

Im Hinblick auf die Elektronik haben Machine-Vision-Systeme eine eher generische Architektur im Vergleich zu anderen Systemen. Das unten gezeigte Blockdiagramm veranschaulicht eine generische High-Level-Architektur, die in Machine-Vision-Systemen implementiert wird. Diese Systeme können unterschiedliche Integrationsniveaus und Formfaktoren aufweisen, wobei einige der unten gezeigten Blöcke möglicherweise in einen leistungsfähigeren Prozessor integriert sind.

 

High-Level-Architektur eines Machine-Vision-Systems

Es gibt kein quintessentielles Machine-Vision-System, das als Referenz für andere Designs dienen kann, da Machine Vision eine Fähigkeit ist, kein Produkt oder spezifischer Design-Typ. Machine-Vision-Systeme haben gemeinsame Merkmale, wie im obigen Blockdiagramm gezeigt, aber sie werden mit unterschiedlichen Komponentensätzen implementiert. Anstatt Listen von Komponenten für Machine-Vision-Systeme auszugeben, müssen wir auf der Prozessorebene beginnen, um zu sehen, wie Bildverarbeitungsalgorithmen effizient implementiert werden können.

FPGA, MPU oder GPU?

MCUs oder auf MCUs basierende SoCs waren schon immer beliebt, auch für Systeme, die Fähigkeiten zur Maschinensehung implementieren. MCUs mit standardisierten digitalen Schnittstellen können sich mit spezialisierteren ASICs für die Bildverarbeitung verbinden, während FPGAs groß genug sein können, um die Erfassung von Bildern in Echtzeit, DSP-Funktionen und andere systemweite Verarbeitungen zu implementieren. GPUs können einen dedizierten externen Vision-Prozessor bereitstellen, der Daten zurück an den Host-Controller liefert.

 

 

 

Im Hinblick auf den Grad der Fortschrittlichkeit sind die MPU + FPGA oder MPU + GPU Architekturen für nahezu Echtzeit-Maschinensehung bevorzugt. Sie sind auch für die Verarbeitung von Bildern mit höherer Auflösung bevorzugt, da das FPGA/GPU eine Parallelisierung implementieren kann, was die Verarbeitungszeit bei der Verarbeitung von hochauflösenden Bildern/Bildern mit hoher Farbtiefe reduziert. Dies ist der große Vorteil von FPGA, da die Logik flexibel ist, jedoch die Verwaltung und Algorithmen für fortgeschrittene Verarbeitung ohne vorherige Erfahrung schwieriger zu entwickeln sind.

 

All dies bedeutet nicht, dass MCUs und MPUs nicht als Host-Controller in Anwendungen zur Maschinensehung verwendet werden können. Zum Beispiel verwenden Ihr Telefon und Computer diese nicht und sie können einige einfachere Bildverarbeitungsaufgaben aus Videos mit niedriger Bildrate und statischen Bildern durchführen. Um fair zu sein, tendiert der CPU/SoC in diesen Geräten dazu, viel mehr Rechenleistung als ein hochwertiges MPU zu haben. Ein MCU könnte für niedrigere Auflösung, niedrigere Bildrate, geringere Farbtiefe oder monochrome Bildverarbeitung verwendet werden, und wenn Sie mehr Rechenleistung hinzufügen, können Sie detailliertere Bilder verarbeiten. MPUs sind eine bessere Option in der Produktion, da Sie möglicherweise auf externen Hochgeschwindigkeitsspeicher zugreifen müssen, was bedeutet, dass Sie eine DDR-RAM-Schnittstelle und möglicherweise PCIe für einige Peripheriegeräte benötigen, etwas, das Sie typischerweise nicht auf einem langsameren MCU finden.

Anwendungsspezifisch vs. Generalisiert

Wenn Sie fortgeschrittenere Algorithmen zur Bilderkennung und -segmentierung in Ihrem System implementieren möchten, könnten Sie sich für ein SOM, COM oder Einplatinencomputer als Hauptcontroller für Ihre Anwendung zur Maschinensehung entscheiden. Wenn ein Prozessor genügend On-Chip-Speicher und externen RAM hat, kann er typischerweise die meisten Erfassungs- und Verarbeitungsaufgaben implementieren und gleichzeitig eine Anwendung ausführen, um den Rest Ihres Systems zu steuern. Diese Architekturen werden oft für auf Schwellenwerten basierende Bildsegmentierung und Objekterkennungsaufgaben in sehr spezifischen Anwendungen von Daten mit niedriger bis moderater Bildrate verwendet.

Herausforderungen im Design von Maschinensehungssystemen

Wie viele andere Designs, die im Wesentlichen mit analogen Niedrigpegelsignalen arbeiten, haben Maschinensehungssysteme und -designs ihre eigenen elektrischen Herausforderungen, die berücksichtigt werden müssen. Einige der Lösungen liegen auf der Ebene der Bildverarbeitung, andere sind systemweit und beziehen sich auf die Auswahl der Komponenten. Hier sind einige der wichtigsten Herausforderungen, die Designer bei der Gestaltung von Maschinensehungssystemen berücksichtigen müssen:

 

  • Wärmemanagement: Auf Platinen montierte Hochauflösungskameras in kompakteren Systemen können während des Betriebs viel Wärme aufnehmen, was möglicherweise eine Wärmeableitung oder Luftströmung durch das Gehäuse erfordert, um kühl zu bleiben. Systeme mit kleineren Prozessoren und größeren Platinen können in der Regel von selbst kühl bleiben, aber kleinere Platinen mit schnelleren Prozessoren könnten ein Interface-Material benötigen, das an das Gehäuse gebunden ist, um Wärme abzuleiten.

  • EMI/EMC: Da Maschinensehsysteme im Allgemeinen Mischsignal-Systeme sind, erfordern sie ein ordnungsgemäßes Layout, um Interferenzen zwischen digitalen Komponenten und dem Ausgang eines CMOS-Sensors oder CCD zu verhindern. CMOS könnte eine bessere Option sein, da die Datenkonvertierung auf Chip-Ebene erfolgt. Um eine genaue Bildwiederherstellung in kompakten Systemen mit schneller Verarbeitung zu gewährleisten, stellen Sie sicher, dass Sie einige Best Practices zur EMI-Unterdrückung implementieren.

  • Stromintegrität: Sehsysteme und HMI-Systeme können Probleme mit der Stromintegrität erfahren, wenn das Layout nicht ordnungsgemäß konstruiert ist, selbst wenn das Design nicht mit Hochgeschwindigkeitskomponenten oder -protokollen läuft. Dies mag wie ein Problem klingen, das weggefiltert werden kann, aber das ist nicht der Fall. Stattdessen kann die Lösung so einfach sein, wie sicherzustellen, dass eine Masseebene für das Routing aller digitalen Signale, die auf die Hauptplatine kommen, platziert wird.

  • Montage der Optik: Sehsysteme benötigen Optiken, um Objekt- und Bildebenen zu definieren und klare Bilder auf dem Bildsensor zu formen, damit die Datenerfassung stattfinden kann. Moderne Maschinensehsysteme benötigen eine stabile Montage mit geringer Hysterese und möglicherweise automatischer Fokussierung mit integrierter Motorsteuerung. Dies ist eine mechanische Designherausforderung sowie eine elektrische Designherausforderung, wobei letztere den Stromverbrauch in einem Motorsteuerungs- und Timing-Schaltkreis betrifft.

 

Komponenten, die Sie benötigen werden

Natürlich können wir nicht jede mögliche Komponente in diesem Artikel zeigen, da er einfach zu lang wäre. Was wir tun können, ist Ihnen eine gute Liste von Komponenten zu geben, mit denen Sie den Bau verschiedener Teile Ihres Systems beginnen können. In der untenstehenden Liste habe ich einige Beispielkomponenten aus jedem Teil eines neuen Systems aufgeführt, mit denen Sie beginnen können:

 

  • MCUs wie STM32 und MSP430 sind eine großartige Option für den Betrieb eines leichtgewichtigen maschinellen Sehsystems und die Implementierung einiger einfacherer KI-Inferenzaufgaben.

  • Für etwas mit deutlich mehr Rechenleistung ist die Zynq FPGA-Plattform eine großartige Option für maschinelle Sehsysteme. Xilinx bietet auch viel Entwicklerunterstützung für auf Zynq basierende maschinelle Sehsysteme.

  • CMOS-Bildsensoren und CCD-Sensoren können entweder monochrom oder farbig sein und sie kommen in einer Reihe von Auflösungen. Etwas wie der MT9P031I12STC-DR1 von ON Semiconductor ist ein gutes Beispiel für einen farbigen CMOS-Sensor für hochauflösende maschinelle Sehanwendungen.

  • Für die Entwicklung einer High-Level-Anwendung ist OpenCV ein ausgezeichnetes Set von Open-Source-Bibliotheken, das viele der Standardbildverarbeitungsfunktionen umfasst, die in maschinellen Sehsystemen verwendet werden. Es gibt auch andere Open-Source-Bibliotheken online, die für die Entwicklung spezialisierterer Anwendungen genutzt werden können.

 

Ich würde für allgemeinere Aufgaben wie Bilderkennung, Segmentierung und Objektidentifikation mit Tracking in Videodaten ohne anwendungsspezifische Vorverarbeitung (d.h. von Rohbildern) eine GPU oder FPGA empfehlen. Ich erwähne dies hier, weil wir berücksichtigen müssen, wie wir mit dem Bildsensor interagieren, und der Sensor muss auf den Prozessor abgestimmt sein. In einem FPGA können die Erfassungslogik und die nachfolgende Verarbeitung parallel neben der restlichen Logik für die Anwendung implementiert werden.

 

Eine beliebte Open-Hardware-Plattform, die für die Systementwicklung verwendet werden kann, ist OpenMV. Diese Kameramodule integrieren Logik für die Bildakquisition, Hardware für die Montage optischer Elemente und eine PCB für die Sicherstellung von EMI/EMC und SI/PI. Sie sind auch kompatibel mit STM32 MCUs und anderen Plattformen. Dies ist ein gutes System für Anwendungsentwickler, die einen externen Prozessor als Host-Controller für eine größere Anwendung im System verwenden möchten, ohne sich in der Hardwareentwicklung und dem Debugging zu verlieren.

 

M7-Kameramodul (links) und FLIR Lepton Adaptermodul (rechts).

 

Integration von maschinellen Sehsystemen mit der Cloud

Die maschinelle Bildverarbeitung ist in all ihren Formen äußerst nützlich, und es sollte uns nicht überraschen, dass fortgeschrittene MCU-, MPU- oder FPGA-basierte Lösungen mit der Cloud integriert werden sollten. Je nachdem, wie Cloud-Computing genutzt wird, könnte es besser sein, die Verarbeitung ins Rechenzentrum auszulagern, anstatt sie am Edge durchzuführen, sodass ein MCU oder ein leichtgewichtiger MPU verwendet werden könnte. Wenn eine schnelle Verarbeitung im Feld erforderlich ist, sollten Verarbeitungsaufgaben im Feld mit einem leistungsfähigeren Host-Controller (FPGA, MPU + FPGA oder MPU + GPU) durchgeführt werden. Auch hier hängt die Wahl von der Menge der Vorverarbeitung ab, die Sie auf dem Gerät durchführen, um Bilder zu bereinigen und zu komprimieren, bevor sie zur Verarbeitung in die Cloud gesendet werden.

 

Für KI/ML-Anwendungen, die maschinelle Bildverarbeitung beinhalten, bieten einige Unternehmen SoCs und ASICs als Ergänzung zu langsameren Prozessoren oder als Add-on-Module für SBCs an. Google Coral ist eine dieser Optionen und fungiert als dedizierter Prozessor für das Ausführen von TensorFlow Lite-Modellen, die Inferenz aus Bilddaten beinhalten. Andere Optionen kommen von Startups auf den Markt, die auf KI-Inferenz für mehrere Videostreams abzielen und idealerweise GPUs durch kleinere Pakete ersetzen.

 

Systeme der maschinellen Bildverarbeitung müssen viel mehr tun als nur Bilder zu erfassen und zu verarbeiten. Die heutigen Systeme sind vernetzt, sie interagieren mit mehreren Sensoren, Einige andere Komponenten, die Sie für Ihr System der maschinellen Bildverarbeitung benötigen könnten, umfassen:

 

 

Das Design von Systemen der maschinellen Bildverarbeitung erfordert Expertise in mehreren Bereichen und die Zusammenarbeit mit einem Team, aber die Auswahl der Komponenten für diese Systeme sollte nicht schwierig sein. Wenn Sie Komponenten für Ihre Anwendung der maschinellen Bildverarbeitung finden müssen, nutzen Sie die fortgeschrittenen Such- und Filterfunktionen in Octopart. Wenn Sie die Elektronik-Suchmaschine von Octopart verwenden, haben Sie Zugang zu aktuellen Distributorenpreisdaten, Teilebeständen und Teilespezifikationen, und das alles ist frei zugänglich in einer benutzerfreundlichen Schnittstelle. Werfen Sie einen Blick auf unsere Seite mit integrierten Schaltkreisen, um die Komponenten zu finden, die Sie benötigen.

Bleiben Sie auf dem Laufenden mit unseren neuesten Artikeln, indem Sie sich für unseren Newsletter anmelden.

Ähnliche Resourcen

Zur Startseite
Thank you, you are now subscribed to updates.