-
Hintergrund
-
Bei Bildbearbeitungsanwendungen ist das Auswählen eines Abschnittes eines Bildes zur Bearbeitung ein grundlegender Vorgang. Möchte ein Nutzer beispielsweise ein bestimmtes Objekt in einem Bild bearbeiten, so muss er eine Auswahl um jenes Objekt herum zeichnen. Es kann bei einem komplizierten Objekt beträchtliche Zeit in Anspruch nehmen, die Auswahl korrekt zu zeichnen, wobei sich diese Zeit noch vervielfältigt, wenn mehrere ähnliche Objekte auszuwählen sind. Benötigt wird eine Vorgehensweise beim Identifizieren eines nutzerseitig ausgewählten Objektes und Bereitstellen der Fähigkeit, andere, ähnliche Objekte innerhalb des Bildes automatisch auszuwählen.
-
Zusammenfassung
-
Verschiedene Aspekte der vorliegenden Erfindung betreffen eine Rechenvorrichtung, die ähnliche Objekte zur Modifizierung innerhalb eines oder mehrerer Bilder automatisch auswählt. Zu diesem Zweck empfängt die Rechenvorrichtung über eine Eingabevorrichtung einer Eingabe zum Spezifizieren einer ersten Auswahl eines ersten Objektes in einem Bild, das an einer Nutzerschnittstelle der Rechenvorrichtung angezeigt wird. Die Rechenvorrichtung erzeugt einen ersten Satz von Merkmalsdeskriptoren, die eine Form beschreiben, die von Kanten des ersten Objektes gebildet wird.
-
Andere Kanten in dem Bild werden identifiziert, und es wird ein zweiter Satz von Merkmalsdeskriptoren zum Beschreiben von Formen, die von den anderen Kanten gebildet werden, erzeugt. Bei einigen Implementierungen stammen die anderen Kanten aus dem verbleibenden Abschnitt des Bildes, der das erste Objekt ausschließt. Die Rechenvorrichtung bestimmt ein oder mehrere Kantenobjekte in dem Bild, die der Form nach ähnlich zu dem ersten Objekt sind, durch Identifizieren einer jeden Gruppierung der anderen Kanten, die Merkmalsdeskriptoren des zweiten Satzes von Merkmalsdeskriptoren aufweist, die eine Form beschreiben, die innerhalb einer Ähnlichkeitsschwelle zu der Form ist, die von dem ersten Satz von Merkmalsdeskriptoren beschrieben wird. Pixel in dem Bild des ersten Objektes und eines jeden ähnlichen Kantenobjektes des Bildes werden von der Rechenvorrichtung auf Grundlage einer nutzerseitig spezifizierten Funktion modifiziert.
-
Kurzbeschreibung der Zeichnung
-
Viele Aspekte der vorliegenden Offenbarung erschließen sich besser anhand der nachfolgenden Zeichnung. Die Komponenten in der Zeichnung sind nicht notwendigerweise maßstabsgetreu, da mehr Gewicht auf eine klare Darstellung der Prinzipien der Offenbarung gelegt worden ist. Zudem bezeichnen gleiche Bezugszeichen in der Zeichnung entsprechende Teile in verschiedenen Figuren.
-
1 und 2 sind Diagramme einer exemplarischen Nutzerschnittstelle, die von einer Rechenvorrichtung entsprechend verschiedenen Ausführungsformen der vorliegenden Offenbarung wiedergegeben wird.
-
3 ist ein Diagramm einer vernetzten Umgebung entsprechend verschiedenen Ausführungsformen der vorliegenden Offenbarung.
-
4 ist ein Diagramm einer weiteren exemplarischen Nutzerschnittstelle, die von einer Rechenvorrichtung entsprechend verschiedenen Ausführungsformen der vorliegenden Offenbarung wiedergegeben wird.
-
5 bis 7 sind exemplarische Diagramme für Zwischenbilder, die von einer Rechenvorrichtung entsprechend verschiedenen Ausführungsformen der vorliegenden Offenbarung erstellt werden können.
-
8 ist ein Diagramm einer weiteren exemplarischen Nutzerschnittstelle, die von einer Rechenvorrichtung entsprechend verschiedenen Ausführungsformen der vorliegenden Offenbarung wiedergegeben wird.
-
9 ist ein Flussdiagramm zur Darstellung eines Beispiels für eine Funktionalität, die als Teile eines in einer Rechenvorrichtung ausgeführten Verfahrens entsprechend verschiedenen Ausführungsformen der vorliegenden Offenbarung implementiert ist.
-
10 ist ein schematisches Blockdiagramm zur Bereitstellung einer exemplarischen Darstellung einer in der vernetzten Umgebung von 3 eingesetzten Rechenumgebung entsprechend verschiedenen Ausführungsformen der vorliegenden Offenbarung.
-
Detailbeschreibung
-
Offenbart werden hier verschiedene Ausführungsformen eines Systems und eines Verfahrens zum automatischen Auswählen und Manipulieren von Objekten innerhalb eines Bildes, die ähnlich zu einem vorab nutzerseitig ausgewählten Objekt sind, unter Verwendung von Merkmalsdeskriptoren, die die Form, die von Kanten gebildet wird, die in dem vorher ausgewählten Objekt detektiert werden, und die Formen, die von Kanten gebildet werden, die in dem verbleibenden Abschnitt des Bildes detektiert werden, beschreiben. Merkmalsdeskriptoren, die für das vorher ausgewählte Objekt erzeugt worden sind, werden mit den Merkmalsdeskriptoren, die für den verbleibenden Abschnitt des Bildes erzeugt werden, verglichen, um andere Objekte in dem Bild mit Kanten, die ähnlich zu dem vorher ausgewählten Objekt sind, zu identifizieren. Die Pixel des nutzerseitig ausgewählten Objektes und die automatisch ausgewählten Objekte können sodann entsprechend einer nutzerseitig spezifizierten Funktion (beispielsweise einer Funktion zum Ändern von Farbe, Musterung, Helligkeit, Kontrast und dergleichen mehr oder zum Löschen oder auf andere Weise erfolgenden Modifizieren aller ausgewählten Objekte) modifiziert werden.
-
Die Darstellungen von 1 und 2 stellen einen Fall der exemplarischen Nutzung für die hier offenbarten Techniken dar, während die verbleibenden Figuren eine detailliertere Beschreibung der Techniken bereitstellen. Wie in der Darstellung von 1 gezeigt ist, verwendet eine Mobilvorrichtung 100, die eine Bildbearbeitungsanwendung ausführt, eine berührungsempfindliche Anzeige 101 zum Präsentieren eines Bildes 102, das verschiedene Objekte 105a–g beinhaltet. Unter Verwendung der berührungsempfindlichen Anzeige 101 und/oder anderer möglicher Eingabevorrichtungen kann ein Nutzer eine Auswahl um ein oder mehrere Objekte 105a–g zeichnen, so beispielsweise die Auswahl 107a, die um das Objekt 105a herum erzeugt ist.
-
Sobald eine Auswahl 107a erzeugt ist, kann der Nutzer die Mobilvorrichtung 100 anweisen, andere Objekte in dem Bild 102 und/oder innerhalb anderer Bilder (nicht gezeigt), die im Vergleich zu dem vorher ausgewählten Objekt 105a ähnlich geformt sind, durch Antippen der Schaltfläche 109 in der Nutzerschnittstelle oder durch eine andere mögliche Eingabe automatisch auszuwählen. Im Anschluss hieran bewertet die Mobilvorrichtung 100 die Formen der verschiedenen anderen Objekte 105b–g in dem Bild 102 zur Bestimmung dessen, ob bestimmte von ihnen ähnlich zu dem ausgewählten Objekt 105a geformt sind. Die Bewertung wird auf Grundlage der Formen, die von den Kanten der Objekte 105 gebildet werden, durchgeführt, wodurch ein Objekt ohne Rücksicht auf seine Skalierung (das heißt Größe), Orientierung, Farbe oder Textur bzw. Oberflächenbeschaffenheit als „ähnlich” zu einem anderen Objekt bestimmt werden kann.
-
Da die Form, die von den Kanten des ausgewählten Objektes 105a gebildet wird, im vorliegenden Beispiel ein Dreieck ist, identifiziert die Mobilvorrichtung 100 andere Objekte mit dreieckig geformtem Kanten, so beispielsweise das Objekt 105b, obwohl es eine andere Größe und Orientierung aufweist, und das Objekt 105c, obwohl es eine andere Farbe, Größe und Orientierung aufweist. Wie in 2 gezeigt ist, erzeugt die Mobilvorrichtung 100 sodann eine Auswahl des Umfanges eines jeden der ähnlichen Objekte, so beispielsweise die Auswahl 107b für das Objekt 105b und die Auswahl 107c für das Objekt 105c. Im Anschluss an die automatische Auswahl der ähnlichen Objekte 105b–c kann die Nutzerschnittstelle der Mobilvorrichtung 100 Steuerungen bzw. Regelungen (nicht gezeigt) für den Nutzer bereitstellen, um eine oder mehrere der erzeugten Auswahlen 107 aufzuheben und/oder anzupassen.
-
Ist der Nutzer mit den Auswahlen 107 zufrieden, so kann der Nutzer eine Eingabe für die Mobilvorrichtung 100 zum Auswählen einer Funktion der Bildbearbeitungsanwendung bereitstellen, um die Pixel der ausgewählten Objekte 105a–c zu modifizieren. Der Nutzer kann das Anwenden eines Filters, der die Farbe, die Musterung und dergleichen der Objekte 105a–c ändert, wählen. Alternativ kann der Nutzer das Entfernen der Objekte 105a–c aus dem Bild 102 wählen. Anschließend werden das Bild 102 und die daran vorgenommenen Modifizierungen von der Mobilvorrichtung 100 als modifizierte Bilddatei gespeichert. Mit Blick auf andere Verbesserungen bei der automatischen Auswahl von ähnlichen Objekten ermöglicht ein einziges Beispiel für eine Bildbearbeitungsanwendung, dass der Nutzer eine beträchtliche Zeitmenge im Vergleich zu dem längeren und fehleranfälligen Prozess des manuellen Auswählens eines jeden ähnlichen Objektes, das in einem oder mehreren Bildern gegebenenfalls vorhanden ist, einspart. Dies bietet nicht nur bessere Nutzbarkeit und mehr Komfort für den Nutzer, sondern kann auch den Verbrauch von Rechenressourcen, so beispielsweise von Speicherplatz, von Prozessornutzungs- und/oder Netzwerkbandbreite, verringern. Bei der nachfolgenden Diskussion wird eine allgemeine Beschreibung des Systems und seiner Komponenten, gefolgt von einer Diskussion des Betriebs derselben gegeben.
-
Im Sinne des Vorliegenden bezeichnet der Ausdruck „unveränderlich gegenüber gleichmäßiger Skalierung” die Eigenschaft der Unabhängigkeit von der Größe eines Objektes. Das Beschreiben der Form eines Objektes in einem Bild mit Merkmalsdeskriptoren, die gegenüber einer gleichmäßigen Skalierung unveränderlich sind, bedeutet beispielsweise, dass die Form des Objektes auf eine Weise beschrieben wird, die von der Größe des Objektes unabhängig ist. Wird die Größe des Objektes gleichmäßig vergrößert oder verkleinert, so sind die Merkmalsdeskriptoren für das Objekt dieselben.
-
Im Sinne des Vorliegenden bezeichnet der Ausdruck „unveränderlich gegenüber Orientierung” die Eigenschaft der Unabhängigkeit von der Orientierung oder Drehung eines Objektes. Das Beschreiben der Form eines Objektes in einem Bild mit Merkmalsdeskriptoren, die gegenüber einer Orientierung unveränderlich sind, bedeutet beispielsweise, dass die Form des Objektes auf eine Weise beschrieben wird, die unabhängig von der Art ist, wie ein Objekt in dem Bild gedreht ist. Ist das Objekt daher in dem Bild (beispielsweise um 180°) gedreht, so sind die Merkmalsdeskriptoren für das Objekt dieselben.
-
In 3 ist eine vernetzte Umgebung 300 entsprechend verschiedenen Ausführungsformen gezeigt. Die vernetzte Umgebung 300 beinhaltet eine Rechenumgebung 303 und eine Clientvorrichtung 306, die miteinander über ein Netzwerk 309 in Datenverbindung sind. Das Netzwerk 309 beinhaltet beispielsweise das Internet, Intranets, Extranets, Großbereichsnetzwerke (WANs), Ortsbereichsnetzwerke (LANs), Drahtnetzwerke, Drahtlosnetzwerke oder andere geeignete Netzwerke und dergleichen oder eine beliebige Kombination aus zwei oder mehr derartigen Netzwerken. Derartige Netzwerke können Satellitennetzwerke, Kabelnetzwerke, Ethernet-Netzwerke sowie andere Arten von Netzwerken umfassen. Obwohl die hier beschriebene Funktionalität im Kontext der vernetzten Umgebung 300 gezeigt ist, sind auch andere Implementierungen möglich, so beispielsweise die Implementierung der Funktionalität auf einer einzigen Rechenvorrichtung (beispielsweise einem Desktopcomputer oder einer Mobilvorrichtung), als Plugin- oder Hilfsmerkmal eines anderen Dienstes, der auf einer Rechenvorrichtung ausgeführt wird, und/oder bei Anordnungen von Rechenvorrichtungen, die nicht die in 3 gezeigten sind.
-
Die Rechenumgebung 303 kann beispielsweise einen Servercomputer oder ein beliebiges anderes System zur Bereitstellung von Rechenfähigkeiten umfassen. Alternativ kann die Rechenumgebung 303 eine Mehrzahl von Rechenvorrichtungen einsetzen, die beispielsweise in einer oder mehreren Serverfarmen oder Computerfarmen oder auch in anderen Anordnungen angeordnet sein können. Derartige Rechenvorrichtungen können in einer einzigen Installation gegeben oder auch über viele verschiedene geographische Orte verteilt sein. Beinhalten kann die Rechenumgebung 303 beispielsweise eine Mehrzahl von Rechenvorrichtungen, die gemeinsam eine gehostete Rechenressource, eine Grid-Rechenressource und/oder eine beliebige andere verteilte Rechenumgebung umfasst. In einigen Fällen kann die Rechenumgebung 303 einer elastischen Rechenressource entsprechen, bei der die zugeordnete Kapazität der Verarbeitung, Vernetzung und Speicherung und dergleichen anderer rechenbezogener Ressourcen mit der Zeit variieren kann.
-
Verschiedene Anwendungen und/oder eine andere Funktionalität können in der Rechenvorrichtung 303 entsprechend verschiedenen Ausführungsformen ausgeführt werden. Zudem sind verschiedene Daten in einem Datenspeicher 312 gespeichert, der für die Rechenumgebung 303 zugänglich ist. Der Datenspeicher 312 kann selbstredend auch eine Mehrzahl von Datenspeichern 312 darstellen. Die in dem Datenspeicher 312 gespeicherten Daten sind beispielsweise dem Betrieb der verschiedenen Anwendungen und/oder funktionalen Entitäten, die nachstehend noch beschrieben werden, zugeordnet.
-
Die in der Rechenumgebung 303 ausgeführten Komponenten beinhalten beispielsweise eine Bildbearbeitungsengine 321 sowie andere Anwendungen, Dienste, Prozesse, Systeme, Engines oder auch Funktionalitäten, die hier nicht detailliert beschrieben werden. Wie hier im Detail beschrieben wird, wird die Bildmanipulationsengine 321 ausgeführt, um eine Bildbearbeitung einschließlich eines Detektierens und Manipulierens von Objekten in einem oder mehreren Bildern, die zu einem nutzerseitig ausgewählten Objekt in einem Bild ähnlich sind, zu vereinfachen.
-
Die in dem Datenspeicher 312 gespeicherten Daten beinhalten beispielsweise Nutzerkonten 330, Bilddaten 336 und gegebenenfalls andere Daten. Die Bilddaten 336 beinhalten Daten und Metadaten, die für verschiedene Bilder in verschiedenen möglichen Formaten gespeichert werden können, so beispielsweise JPEG (Joint Photographic Expert Group), PNG (Portable Network Graphics), GIF (Graphics Interchange Format) und/oder selbstredend weitere mögliche Bildformate. Die Metadaten können die Größe des Bildes, Pixelkoordinaten von Objekten und/oder erzeugten Auswahlen, die Auflösung, den geographischen Ort („geolocation”), Einstellungen der Kamera, die zum Aufnehmen des Bildes verwendet worden ist, und/oder andere mögliche Information beinhalten. Die Bilddaten 336 können zudem verschiedene Attribute und Autorisierungen im Zusammenhang mit Nutzerkonten 330 zum Erstellen, Modifizieren und/oder Löschen von Bildern und/oder Zugreifen auf selbige beinhalten. Zusätzlich können die Bilddaten 336 das Speichern einer oder mehrerer Versionen eines Bildes beinhalten, so beispielsweise einer Version, die vor einer Modifizierung gespeichert worden ist, und einer zweiten Version des Bildes, die nach der Modifizierung gespeichert worden ist. Bei einigen Ausführungsformen können die in dem Datenspeicher 312 gespeicherten Bilder als Dateien gespeichert werden.
-
Die einzelnen Nutzerkonten 330 können Nutzerkontendaten 341, eine Interaktionshistorie 344 und andere mögliche Daten beinhalten. Die Nutzerkontendaten 341 können Nutzerkennungen, Nutzergruppenkennungen, Berechtigungsnachweise (credentials), Autorisierungen, zugehörige Clientvorrichtungen 306 und dergleichen mehr beinhalten. Die Interaktionshistorie 344 beinhaltet ein Protokoll der verschiedenen nutzerseitig modifizierten Bilder, Kennungen und/oder Metadaten für Objekte in den ausgewählten und/oder identifizierten Bildern, die mögliche Aufhebung der Auswahl oder die nutzerseitig angepasste Auswahl eines automatisch ausgewählten Objektes sowie gegebenenfalls weitere Information.
-
Der Client 306 stellt verschiedene mögliche Clientvorrichtungen, die mit dem Netzwerk 309 gekoppelt sind, dar. Der Client 306 kann beispielsweise ein prozessorbasiertes System, so beispielsweise ein Computersystem, beinhalten. Ein derartiges Computersystem kann in Form eines Tabletcomputers, eines Smartphones, eines Desktopcomputers, eines Laptopcomputers, eines zellenbasierten Telefons, einer Set-Top-Box oder durch andere Vorrichtungen mit gleichen Fähigkeiten verkörpert sein. Der Client 306 kann eine Konnektivität mit einer Anzeige 361 beinhalten. Die Anzeige 361 kann beispielsweise eine oder mehrere Vorrichtungen beinhalten, so beispielsweise LCD-Anzeigen (Flüssigkristallanzeige LCD), gas-plasma-basierte Flachschirmanzeigen, OLED-Anzeigen (organische Licht emittierende Diode OLED), E-Ink-Anzeigen (elektrophoretische Tinte bzw. Farbe E ink), LCD-Projektoren oder andere Typen von Anzeigevorrichtungen und dergleichen mehr. Bei einigen Implementierungen ist die Anzeige 361 berührungsempfindlich.
-
Der Client 306 kann dafür ausgelegt sein, verschiedene Anwendungen auszuführen, so beispielsweise eine Clientanwendung 363 und/oder andere Anwendungen. Die Clientanwendung 363 kann beispielsweise in dem Client 306 ausgeführt werden, um auf einen Netzwerkinhalt zuzugreifen, der von der Rechenumgebung 303 und/oder anderen Servern bereitgestellt wird, wodurch eine Nutzerschnittstelle 365, so beispielsweise eine grafische Nutzerschnittstelle (GUI), in der Anzeige 361 wiedergegeben wird. Zu diesem Zweck kann die Clientanwendung 363 beispielsweise einen Browser, eine eigens vorgesehene Anwendung und dergleichen mehr beinhalten, wobei die Nutzerschnittstelle 365 eine Netzwerkseite, einen Anwendungsschirm und dergleichen mehr umfassen kann. Der Client 306 kann dafür ausgelegt sein, Anwendungen über die Clientanwendung 363 hinausgehend auszuführen, so beispielsweise E-Mail-Anwendungen, Social-Networking-Anwendungen, Textverarbeitungsprogramme, Tabellenverarbeitungsprogramme und/oder andere Anwendungen.
-
Als Nächstes folgt eine allgemeine Beschreibung des Betriebes der verschiedenen Komponenten der vernetzten Umgebung 300. Zu Beginn setzt ein den Client 306 bedienender Nutzer die Clientanwendung 363 ein, um eine Kommunikationssitzung mit der Bildmanipulationsengine 321 zu eröffnen. Die Kommunikationssitzung kann unter Verwendung von verschiedenen Protokollen ausgeführt werden, so beispielsweise HTTP (Hypertexttransferprotokoll), SOAP (Simple Object Access Protocol), REST (REpresentational State Transfer), UDP (User Datagram Protocol), TCP (Transmission Control Protocol) und/oder andere Protokolle zum Kommunizieren von Daten über das Netzwerk 309. Bei einigen Implementierungen wird der Nutzer für die Bildbearbeitungsengine 321 unter Verwendung eines oder mehrerer Nutzerberechtigungsnachweise (user credentials) autorisiert.
-
Der Nutzer wählt sodann an der Nutzerschnittstelle 365 ein zu bearbeitendes Bild aus, indem er beispielsweise Objekte zur Modifizierung innerhalb des Bildes auswählt. Wie bei dem Beispiel von 4 dargestellt ist, kann das Bild 401 an einer berührungsempfindlichen Anzeige 361 einer Clientvorrichtung 306 oder einer anderen Rechenvorrichtung dargestellt werden. Unter den verschiedenen Objekten in dem angezeigten Inhalt des Bildes 401 sind die Objekte 405a–g, die Fingernägel darstellen. Unter Verwendung der berührungsempfindlichen Anzeige 361 kann ein Nutzer eine Auswahl um eines oder mehrere der Objekte 405a–g herum zeichnen, so beispielsweise die um das Objekt 405a herum erzeugte Auswahl 407a. Man beachte, dass ungeachtet dessen, dass die Eingabe zum Auswählen der Auswahl 407a in der Darstellung von 4 mit der berührungsempfindlichen Anzeige 361 gemacht wird, auch andere Eingabevorrichtungen zum Erzeugen einer Auswahl anstelle von oder zusätzlich zu einer berührungsempfindlichen Anzeige verwendet werden können, so beispielsweise eine Maus, ein Trackpad, eine Tastatur und dergleichen mehr.
-
Sobald eine Auswahl 407a erzeugt worden ist, kann der Nutzer die Clientvorrichtung 306 anweisen, automatisch Objekte in dem Bild 401 auszuwählen, die ähnlich wie das vorher ausgewählte Objekt 405a geformt sind, indem er die Schaltfläche 409 in der Anzeige 361 antippt oder eine andere mögliche Eingabe bereitstellt. Bei einigen Implementierungen kann der Nutzer über die Nutzerschnittstelle 365 spezifizieren, dass die zusätzlichen Bilder, auf die seitens der Rechenumgebung 303 und/oder der Clientvorrichtung 306 zugegriffen werden kann, als Teil der Prozedur zum Identifizieren und Auswählen von Objekten, die zu dem ausgewählten Objekt 405a ähnlich sind, untersucht werden sollen. Im Anschluss hieran beginnt die Bildmanipulationsengine 321 mit dem Bewerten der Form des Objektes 405a als Basis für einen Vergleich mit anderen Objekten in dem Bild 401. Zur Untersuchung der Form wird die Auswahl 407a, die das Objekt 405a einschließt, auf ihre Komponentenkanten (auch als „Kantenkarte” bezeichnet) reduziert, indem mehrere Punkte in der Auswahl 407a unter Verwendung von Bézier-Kurvengleichungen kombiniert werden. Bei einigen Implementierungen wird die Kantenkarte anstelle dessen aus der Auswahl 407a unter Verwendung eines Canny-Kantendetektors oder eines ähnlichen Kantendetektionsalgorithmus erzeugt. In 5 ist eine exemplarische Ausgabe des Kantendetektionsalgorithmus als Objektkantenkarte 501, die die Kanten des Objektes 405a darstellt, gezeigt.
-
Die von den verschiedenen Kanten der Objektkantenkarte 501 gebildete Form wird sodann unter Verwendung eines Merkmalsbeschreibungsalgorithmus beschrieben, wobei die Beschreibung als Satz von Merkmalsdeskriptoren („Objektmerkmalsdeskriptoren”) gespeichert wird, die für jedes Merkmal einen Vektor zum Beschreiben des Merkmals wie auch eine Position des Merkmals in dem Bild 401 beinhalten. Man beachte, dass ungeachtet dessen, dass die Abmessungen der Kantenkarte 501 der Form der Auswahl 407a folgen können, die Objektmerkmalsdeskriptoren die Form, die von den innerhalb der Auswahl 407a vorhandenen Kanten gebildet wird, ohne Rücksicht auf die Form der Auswahl selbst beschreiben. Verschiedene Merkmalsbeschreibungsalgorithmen sind verfügbar und können verwendet werden, so beispielsweise SIFT (Scale-Invariant Feature Transform), ORB (Oriented FAST und Rotated BRIEF) und andere mögliche Algorithmen. Diese und andere Kantendetektions- und Merkmalsbeschreibungsalgorithmen sind beispielsweise in der OpenCV-Bibliothek (Open Source Computer Vision) verfügbar, die von OpenCV.org betrieben wird und unter http://opencv.org/ bereitsteht.
-
Zusätzlich zur Bestimmung der Objektmerkmalsdeskriptoren zur Darstellung des Objektes 405a in der Objektkantenkarte 501 bestimmt die Bildmanipulationsengine 321 Merkmalsdeskriptoren für alle Kanten, die in dem Bild 401 automatisch detektiert werden. Obwohl die nachfolgende Beschreibung die Bearbeitung des gesamten Bildes 401 betrifft, werden die Merkmalsdeskriptoren bei einigen Implementierungen nicht für alle Kanten in dem Gesamtbild 401, sondern nur in demjenigen Abschnitt des Bildes 401, der außerhalb des Objektes 405a in der Auswahl 407a ist, bestimmt. Zu diesem Zweck wird eine Kantenkarte für das Bild 401 unter Verwendung eines Canny-Kantendetektors oder eines ähnlichen Kantendetektionsalgorithmus erstellt. Bei verschiedenen Implementierungen werden die adaptive Hystereselokalisierung und Schwellenbildung (adaptive hysteresis localization and thresholding) verwendet, um das Rauschen in dem Bild 401 zu verringern, wodurch die Wahrscheinlichkeit der Erzeugung von falschen Kanten verringert wird. Eine exemplarische Ausgabe des Kantendetektionsalgorithmus ist in 6 als Bildkantenkarte 601 gezeigt, die die Kanten des Bildes 401 darstellt.
-
Die Formen, die von den verschiedenen Kanten der Bildkantenkarte 601 gebildet werden, werden sodann unter Verwendung eines Merkmalsbeschreibungsalgorithmus beschrieben, wobei die Beschreibung als Satz von Merkmalsdeskriptoren („Bildmerkmalsdeskriptoren”) gespeichert wird, die für jedes Merkmal einen Vektor zum Beschreiben des Merkmals wie auch eine Position des Merkmals in dem Bild 401 beinhalten. Verschiedene Merkmalsbeschreibungsalgorithmen stehen zur Verfügung und können verwendet werden, so beispielsweise SIFT, ORB und andere mögliche Algorithmen.
-
Im Anschluss hieran sucht die Bildmanipulationsengine 321 nach dem Vorhandensein von weiteren Objekten, deren Formen innerhalb einer „Ähnlichkeitsschwelle” zu der Form des Objektes 405a innerhalb des Bildes 401 sind, indem zunächst die Merkmalsdeskriptoren für die Objektkantenkarte 501 mit den Merkmalsdeskriptoren für die Bildkantenkarte 601 verglichen werden. Der Merkmalsdeskriptorvergleich kann unter Verwendung eines Klassifizierungsalgorithmus, so beispielsweise des k-NN-Algorithmus (k-Nearest Neighbors, k nächste Nachbarn), ausgeführt werden, wodurch jeder Merkmalsdeskriptor aus dem Satz von Objektmerkmalsdeskriptoren mit jedem der Bildmerkmalsdeskriptoren verglichen wird. Insbesondere versucht k-NN, einen Merkmalsdeskriptor unter den Bildmerkmalsdeskriptoren ausfindig zu machen, der denselben Vektor wie der Merkmalsdeskriptor unter den Objektmerkmalsdeskriptoren aufweist und so möglichst nahe an der Position (das heißt den Pixelkoordinaten) des Merkmals in dem Objekt 405a ist. Für den k-NN-Algorithmus können verschiedene k-NN-Klassifiziererwerte (das heißt die Anzahlen der in Betracht kommenden Nachbarn) verwendet werden, obwohl experimentelle Ergebnisse zeigen, dass k-NN-Klassifiziererwerte von 2 oder mehr wünschenswerte Ergebnisse bringen. Sobald die Iteration des k-NN-Algorithmus vollständig ist, werden diejenigen (so vorhanden) der Bildmerkmalsdeskriptoren, die zu den Objektmerkmalsdeskriptoren passen, wie auch der Abstand zwischen diesen passenden Merkmalen in dem Bild 401 ausfindig gemacht.
-
Zusätzlich zu den vorgenannten Schritten des Suchens nach Objektmerkmalsdeskriptoren, die innerhalb der Bildmerkmalsdeskriptoren vorhanden sind, sucht die Bildmanipulationsengine 321 auch nach Bildmerkmalsdeskriptoren, die denselben Vektor wie die Objektmerkmalsdeskriptoren aufweisen (auch als „bidirektionale Klassifizierung” bezeichnet). Wie vorstehend erläutert worden ist, kann der k-NN-Algorithmus zum Durchführen der Suche verwendet werden, wodurch jeder Merkmalsdeskriptor unter den Bildmerkmalsdeskriptoren mit den Bildmerkmalsdeskriptoren verglichen wird. Sobald die vorliegende Iteration des k-NN-Algorithmus vollständig ist, werden beliebige Objektmerkmalsdeskriptoren, die zu den Bildmerkmalsdeskriptoren passen, wie auch der Abstand zwischen diesen passenden Merkmalen in dem Bild 401 ausfindig gemacht. Anschließend identifiziert die Bildmanipulationsengine 321 diejenigen Paare von Merkmalsdeskriptoren, die bei beiden Iterationen des k-NN-Algorithmus als passend identifiziert worden sind. Das Paar von Merkmalsdeskriptoren Ii und Oi für das Bild 401 beziehungsweise das Objekt 405a ist beispielsweise nur dann beinhaltet, wenn diese bei beiden Iterationen des k-NN-Algorithmus als passend identifiziert werden.
-
Die Bildmanipulationsengine 321 führt sodann einen Verhältnistest zur weiteren Bewertung dessen aus, dass die identifizierten passenden Bildmerkmalsdeskriptoren ähnlich geformten Objekten in dem Bild 401 entsprechen. Die Bildmerkmalsdeskriptoren I1, I2 und I3 sind beispielsweise gegebenenfalls als Treffer bezüglich der Objektmerkmalsdeskriptoren O1, O2 beziehungsweise O3 identifiziert worden. Der Verhältnistest kommt sodann zu der Bewertung, dass das Verhältnis des Abstandes zwischen Paaren von Positionen (das heißt von Pixelkoordinaten) von (I1, I2), (I2, I3), (I3, I1) innerhalb einer Ähnlichkeitsschwelle des Verhältnisses des Abstandes zwischen den entsprechenden Paarpositionen von (O1, O2), (O2, O3), (O3, O1) ist. Dies bedeutet, dass dann, wenn eine Sammlung von Merkmalen eines ausgewählten Objektes tatsächlich einer Sammlung von Merkmalen eines weiteren Objektes in einem Bild entspricht, auch das Verhältnis der Abstände zwischen jenen Merkmalen an den jeweiligen Objekten ähnlich sein sollte. Im Ergebnis verbessert der Verhältnistest des Weiteren die Genauigkeit der identifizierten Merkmalsdeskriptortreffer durch Verifizieren dessen, dass die passenden Merkmale aus der Bildkantenkarte 601 ähnlich zu den entsprechenden Merkmalen des Objektes 405a aus der Objektkantenkarte 501 angeordnet sind. Die Merkmalsdeskriptoren, die von dem Verhältnistest erfolgreich bewertet worden sind, werden sodann zusammengeführt (coalesce) und bilden Gruppen von Merkmalsdeskriptoren zur Beschreibung der Formen und Pixelkoordinaten von anderen Objekten in der Bildkantenkarte 601, die ähnlich wie das Objekt 405a geformt sind. Diese Objekte innerhalb der Bildkantenkarte 601 können hier als „Kantenobjekte” bezeichnet werden.
-
Um die ähnlich geformten „Kantenobjekte”, die in der Bildkantenkarte 601 identifiziert sind, auf ähnliche Abschnitte der entsprechenden Objekte 405b–g in dem Bild 401 zu übertragen, unterteilt die Bildmanipulationsengine 321 zunächst eine Darstellung des Bildes 401 in Superpixelbereiche, wie beispielsweise in dem Superpixelbild 701 von 4 gezeigt ist. Innerhalb eines jeden Superpixelbereiches ist die Farbe eines jeden Pixels (bisweilen als „Pixelintensität” bezeichnet) identisch oder wenigstens innerhalb einer differenziellen Schwelle in Bezug auf jedes andere Pixel in dem Superpixelbereich befindlich. Das Superpixelbild 701 kann durch beliebiges Wählen von verteilten „Saatpixeln” (seed pixels) aus dem Bild 401 erstellt werden. Hinsichtlich der Saatpixel können benachbarte Pixel ausgewählt werden. Ist das benachbarte Pixel von derselben Farbe (oder innerhalb der differenziellen Schwelle), so wird es zu dem Superpixelbereich des Saatpixels hinzugefügt, wohingegen dann, wenn die Farbe verschieden ist (oder die differenzielle Schwelle überschritten wird), die benachbarten Pixel einen separaten Superpixelbereich beginnen.
-
Im Anschluss hieran identifiziert die Bildmanipulationsengine 321 die Gruppierungen der Superpixelbereiche, die die Pixelkoordinaten der vorher identifizierten Kantenobjekte beinhalten, so beispielsweise den exemplarischen Bereich 707, der durch die Pixelkoordinaten eines von einem Kantenobjekt definiert ist. Der Umfang einer jeden Gruppe von Superpixelbereichen definiert Koordinaten für eine Auswahl 407a–g eines entsprechenden Objektes 405a–g in dem Bild 401, wie in 8 gezeigt ist. Bei einigen Implementierungen beseitigt die Bildmanipulationsengine 321 Inkonsistenzen zwischen der Form des Umfanges einer Gruppe von Superpixelbereichen und der Form des dem Objekt 405a zu eigenen Bildes, indem zuerst ein Satz von Merkmalsdeskriptoren für die Kanten der Superpixelbereiche („Superpixelmerkmalsdeskriptoren”) des Superpixelbildes 701 bestimmt wird (7). Bei diesen Implementierungen werden die Superpixelbereiche, die in jeder Gruppierung der Superpixelbereiche beinhaltet sind, angepasst, bis die Superpixelmerkmalsdeskriptoren und die Objektmerkmalsdeskriptoren bestätigen, dass die Form, die vom Umfang der Gruppierungen der Superpixelbereiche gebildet wird, der Form des Objektes 405a entspricht. Bei anderen Implementierungen ermöglicht die Nutzerschnittstelle 365, dass ein Nutzer eine Eingabe zum Aufheben einer Auswahl und/oder zum Anpassen der Auswahlen 407a–g bereitstellt.
-
Anschließend modifiziert die Bildmanipulationsengine 321 die Pixel der ausgewählten Objekte 405a–g (4) entsprechend einer spezifizierten Funktion. Die Funktion kann beispielsweise die Farbe oder Textur bzw. Oberflächenbeschaffenheit der Objekte 405a–g anpassen, die Objekte 405a–g aus dem Bild 401 „schneiden” und/oder selbstredend auch andere mögliche Funktionen wahrnehmen.
-
In 9 ist ein Flussdiagramm gezeigt, das ein Beispiel für den Betrieb eines Teiles der Bildmanipulationsengine 321 entsprechend verschiedenen Ausführungsformen darstellt. Es sollte einsichtig sein, dass das Flussdiagramm von 9 lediglich ein Beispiel für viele verschiedene Typen von Funktionsanordnungen bereitstellt, die eingesetzt werden können, um den Betrieb des Teiles der Bildmanipulationsengine 321 im vorliegenden Sinne zu implementieren. Bei einer Alternative kann das Flussdiagramm von 9 auch derart betrachtet werden, dass es ein Beispiel für Elemente eines Verfahrens 900 darstellt, das in der Rechenumgebung 303 (3) entsprechend einer oder mehreren Ausführungsformen implementiert ist. Dieser Teil des Verfahrens 900 kann in Reaktion darauf implementiert werden, dass ein Nutzer ein Bild auf einer Rechenvorrichtung unter Verwendung der Bildmanipulationsengine 321 öffnet und anzeigt.
-
Beginnend mit Block 903 empfängt die Bildmanipulationsengine 321 eine Eingabe zum Spezifizieren einer Auswahl eines ersten Objektes, das in einem Bild angezeigt wird. Ein Nutzer kann beispielsweise eine Maus, eine berührungsempfindliche Anzeige oder eine beliebige andere Eingabevorrichtung einer Rechenvorrichtung verwenden, um eine Auswahl um das erste Objekt herum in dem Bild, das an der Anzeigevorrichtung angezeigt wird, zu zeichnen oder auf andere Weise zu definieren. Anschließend bestimmt bei Block 906 die Bildmanipulationsengine 321, ob andere ähnliche Objekte identifiziert werden sollen. Der Nutzer kann die Rechenvorrichtung anweisen, andere Objekte in dem Bild, die ähnlich wie das vorher ausgewählte Objekt geformt sind, dadurch automatisch auszuwählen, dass eine Eingabe für die Nutzerschnittstelle oder eine beliebige andere mögliche Eingabe bereitgestellt wird. Bei einigen Implementierungen kann der Nutzer über die Nutzerschnittstelle spezifizieren, dass zusätzliche Bilder, die für die Rechenvorrichtung zusätzlich sind, ebenfalls als Teil der Prozedur zum Identifizieren und Auswählen von Objekten, die ähnlich zu dem ausgewählten Objekt sind, untersucht werden sollen. Wählt der Nutzer hingegen derart, dass andere ähnliche Objekte nicht automatisch identifiziert werden sollen, so kehrt der Betrieb der Bildmanipulationsengine 321 zu Block 903 zurück.
-
Alternativ beginnt, wenn der Nutzer derart wählt, dass andere ähnliche Objekte automatisch identifiziert werden sollen, bei Block 909 die Bildmanipulationsengine 321 mit den Prozeduren zum Erzeugen eines ersten Satzes von Merkmalsdeskriptoren zum Beschreiben der Form, die von Kanten des ersten Objektes gebildet wird („Objektmerkmalsdeskriptoren”). Bei einigen Implementierungen beinhalten die Prozeduren das Verkleinern der von dem Nutzer erzeugten Auswahl einschließlich des Objektes auf seine Komponentenkanten oder eine „Kantenkarte” unter Verwendung eines Canny-Kantendetektoralgorithmus, durch Kombinieren von mehreren Punkten in der Auswahl unter Verwendung von Bézier-Kurvengleichungen oder unter Verwendung eines anderen Kantendetektionsalgorithmus. Die verschiedenen Kanten der Kantenkarte für das erste Objekt („Objektkantenkarte”) werden sodann unter Verwendung eines Merkmalsbeschreibungsalgorithmus beschrieben, wobei die Beschreibung als Satz von Merkmalsdeskriptoren gespeichert wird, die für jedes Merkmal einen Vektor zum Beschreiben des Merkmals wie auch eine Position des Merkmals in dem Bild beinhalten. Verschiedene Merkmalsbeschreibungsalgorithmen sind verfügbar und können verwendet werden, so beispielsweise SIFT, ORB oder andere mögliche Algorithmen.
-
Als Nächstes beginnt bei Block 912 die Bildmanipulationsengine 321 mit Prozeduren zum Erzeugen eines zweiten Satzes von Merkmalsdeskriptoren zum Beschreiben von Formen, die von den in dem Bild detektierten anderen Kanten gebildet werden („Bildmerkmalsdeskriptoren”). Obwohl die nachfolgende Beschreibung die Verarbeitung des gesamten Bildes betrifft, werden bei einigen Implementierungen die Merkmalsdeskriptoren nicht für alle Kanten in dem gesamten Bild, sondern nur in dem Abschnitt des Bildes bestimmt, der bezüglich des ersten Objektes in der Auswahl außenherum ist. Zu diesem Zweck wird eine Kantenkarte für das Bild unter Verwendung eines Canny-Kantendetektors oder eines ähnlichen Kantendetektionsalgorithmus erzeugt. Bei verschiedenen Implementierungen werden zudem die adaptive Hystereselokalisierung und Schwellenbildung (adaptive hysteresis localization and thresholding) verwendet, um das Rauschen in dem Bild zu verringern, wodurch die Wahrscheinlichkeit der Erzeugung von falschen Kanten verringert wird. Die Formen, die von den verschiedenen Kanten der Kantenkarte für das Bild gebildet werden („Bildkantenkarte”), werden sodann unter Verwendung eines Merkmalsbeschreibungsalgorithmus beschrieben, wobei die Beschreibung in Form von Bildmerkmalsdeskriptoren gespeichert wird, die für jedes Merkmal einen Vektor zur Beschreibung des Merkmals wie auch eine Position des Merkmals in dem Bild beinhalten.
-
Sodann bestimmt bei Block 915 die Bildmanipulationsengine 321 ein oder mehrere Kantenobjekte in der Bildkantenkarte, die innerhalb einer Ähnlichkeitsschwelle zu der Form des durch die Objektmerkmalsdeskriptoren beschriebenen Objektes sind. Zu diesem Zweck vergleicht bei einigen Implementierungen die Bildmanipulationsengine 321 zunächst die Objektmerkmalsdeskriptoren und die Bildmerkmalsdeskriptoren. Der Merkmalsdeskriptorvergleich kann unter Verwendung eines Klassifizierungsalgorithmus, so beispielsweise des k-NN-Algorithmus, ausgeführt werden, durch den jeder Merkmalsdeskriptor aus dem Satz von Objektmerkmalsdeskriptoren mit den Bildmerkmalsdeskriptoren verglichen wird. Insbesondere versucht k-NN, einen Merkmalsdeskriptor unter den Bildmerkmalsdeskriptoren ausfindig zu machen, der denselben Vektor wie der Merkmalsdeskriptor unter den Objektmerkmalsdeskriptoren aufweist und so nahe als möglich an der Position (das heißt den Pixelkoordinaten) des Merkmals in dem ersten Objekt ist. Sobald die Iteration des k-NN-Algorithmus vollständig ist, werden diejenigen (so vorhanden) der Bildmerkmalsdeskriptoren, die zu den Objektmerkmalsdeskriptoren passen, wie auch der Abstand zwischen diesen passenden Merkmalen in dem Bild ausfindig gemacht.
-
Zusätzlich zu den vorgenannten Schritten des Suchens nach Objektmerkmalsdeskriptoren, die innerhalb der Bildmerkmalsdeskriptoren vorhanden sind, sucht die Bildmanipulationsengine 321 auch nach Bildmerkmalsdeskriptoren, die innerhalb der Objektmerkmalsdeskriptoren vorhanden sind (auch als „bidirektionale Klassifizierung” bezeichnet). Wie vorstehend beschrieben worden ist, kann der k-NN-Algorithmus verwendet werden, um die Suche durchzuführen, wodurch jeder Merkmalsdeskriptor unter den Bildmerkmalsdeskriptoren mit den Objektmerkmalsdeskriptoren verglichen wird. Sobald diese Iteration des k-NN-Algorithmus vollständig ist, werden die Objektmerkmalsdeskriptoren, die zu den Bildmerkmalsdeskriptoren passen, wie auch der Abstand zwischen diesen passenden Merkmalen in dem Bild ausfindig gemacht. Anschließend identifiziert die Bildmanipulationsengine 321 diejenigen Paare der Merkmalsdeskriptoren, die bei beiden Iterationen des k-NN-Algorithmus als passend identifiziert worden sind.
-
Die Bildmanipulationsengine 321 führt sodann einen Verhältnistest zur weiteren Bewertung dessen aus, dass die identifizierten passenden Bildmerkmalsdeskriptoren ähnlich geformten Objekten in dem Bild entsprechen. Die Bildmerkmalsdeskriptoren I1, I2 und I3 sind beispielsweise als Treffer bezüglich der Objektmerkmalsdeskriptoren O1, O2 beziehungsweise O3 identifiziert worden. Der Verhältnistest nimmt sodann eine Bewertung vor, dass das Verhältnis des Abstandes zwischen Paaren von Positionen (das heißt von Pixelkoordinaten) von (I1, I2), (I2, I3), (I3, I1) innerhalb einer Ähnlichkeitsschwelle des Verhältnisses des Abstandes zwischen den entsprechenden Paarpositionen von (O1, O2), (O2, O3), (O3, O1) ist. Dies bedeutet, dass dann, wenn eine Sammlung von Merkmalen des ersten Objektes tatsächlich einer Sammlung von anderen Merkmalen aus einem anderen Objekt entspricht, das Verhältnis der Abstände zwischen jenen Merkmalen an den jeweiligen Objekten auch ähnlich sein sollte. Im Ergebnis verbessert der Verhältnistest die Genauigkeit der identifizierten Merkmalsdeskriptortreffer weiter, indem verifiziert wird, dass die passenden Merkmale aus der Bildkantenkarte ähnlich zu den entsprechenden Merkmalen des ersten Objektes aus der Objektkantenkarte angeordnet sind. Die Merkmalsdeskriptoren, die von dem Verhältnistest erfolgreich validiert worden sind, werden sodann zusammengeführt und bilden Gruppen von Merkmalsdeskriptoren zur Beschreibung der Formen und Pixelkoordinaten von anderen Objekten in der Bildkantenkarte, die ähnlich wie das erste Objekt geformt sind. Diese Objekte innerhalb der Bildkantenkarte 601 können als „Kantenobjekte” bezeichnet werden.
-
Als Nächstes modifiziert bei Block 924 die Bildmanipulationsengine 321 die Pixel in dem Bild des ersten Objektes und eines jeden ähnlichen Kantenobjektes entsprechend einer spezifizierten Funktion. Die Funktion kann beispielsweise die Farbe oder Textur bzw. Oberflächenbeschaffenheit der Objekte anpassen, die Objekte aus dem Bild „schneiden” und/oder selbstredend auch andere mögliche Funktionen wahrnehmen. Bei einigen Implementierungen verfeinert die Bildmanipulationsengine 321 die Genauigkeit der innerhalb des Bildes identifizierten Objekte vor dem Modifizieren von Pixeln durch Identifizieren einer Gruppierung von Superpixelbereichen für jedes Kantenobjekt, wobei die Gruppierung die Pixel des jeweiligen Kantenobjektes beinhaltet. Um die in der Bildkantenkarte identifizierten ähnlich geformten „Kantenobjekte” auf ausgewählte Abschnitte der entsprechenden Objekte in dem Bild zu übertragen, unterteilt die Bildmanipulationsengine 321 zunächst die Darstellung des Bildes in Superpixelbereiche, was dann als Superpixelbild bezeichnet wird. Innerhalb eines jeden Superpixelbereiches ist die Farbe eines jeden Pixels (bisweilen auch als „Pixelintensität” bezeichnet) identisch oder wenigstens innerhalb einer differenziellen Schwelle in Bezug auf jedes andere Pixel in dem Superpixelbereich befindlich. Das Superpixelbild kann dadurch erstellt werden, dass beliebig verteilte „Saatpixel” aus dem Bild gewählt werden. Unter den Saatpixeln können benachbarte Pixel ausgewählt werden. Ist das benachbarte Pixel von derselben Farbe (oder innerhalb der differenziellen Schwelle), so wird es zum Superpixelbereich des Saatpixels hinzugefügt, während dann, wenn die Farbe verschieden ist (oder die differenzielle Schwelle überschritten wird), die benachbarten Pixel einen separaten Superpixelbereich beginnen. Im Anschluss hieran identifiziert die Bildmanipulationsengine 321 die Gruppierungen von Superpixelbereichen, die die Pixelkoordinaten der vorher identifizierten Kantenobjekte beinhalten. Die Koordinaten für ein Objekt in dem Bild sind durch den Umfang einer entsprechenden Gruppe von Superpixelbereichen definiert. Die Koordinaten können von der Bildmanipulationsengine 321 verwendet werden, um die Pixel zur Modifizierung bei Schritt 924 genauer zu identifizieren, und/oder können zum Definieren einer Auswahl für jedes von einem Nutzer anpassbare Kantenobjekt vor der Modifizierung von Schritt 924 verwendet werden.
-
Bei verschiedenen Implementierungen kann die Bildmanipulationsengine 321 Inkonsistenzen zwischen der Form des Umfanges einer Gruppe von Superpixelbereichen und der Form des ersten Objektes beseitigen, indem zunächst ein Satz von Merkmalsdeskriptoren für die Kanten der Superpixelbereiche („Superpixelmerkmalsdeskriptoren”) des Superpixelbildes bestimmt wird. Die Superpixelbereiche, die in jeder Gruppierung von Superpixelbereichen beinhaltet sind, werden angepasst, bis die Superpixelmerkmalsdeskriptoren und die Objektmerkmalsdeskriptoren bestätigen, dass die Form, die vom Umfang der Gruppierungen der Superpixelbereiche gebildet wird, der Form des ersten Objektes entspricht. Anschließend endet dieser Teil der Bildmanipulationsengine 321, wie gezeigt ist.
-
In 10 ist ein schematisches Blockdiagramm der Rechenumgebung 303 entsprechend einer Ausführungsform der vorliegenden Offenbarung gezeigt. Die Rechenumgebung 303 beinhaltet eine oder mehrere Rechenvorrichtungen 1000. Jede Rechenvorrichtung 1000 beinhaltet wenigstens eine Prozessorschaltung, die beispielsweise einen Prozessor 1002, einen Speicher 1004, eine I/O-Schnittstelle 1008 und eine Netzwerkschnittstelle 1010 aufweist, die alle mit einer lokalen Schnittstelle 1012 gekoppelt sind. Zu diesem Zweck kann jede Rechenvorrichtung 1000 beispielsweise wenigstens einen Servercomputer oder eine derartige Vorrichtung umfassen. Die I/O-Schnittstelle 1008 kann eine Schnittstelle zu verschiedenen Vorrichtungen, die sowohl lokal als auch entfernt angeordnet sind, bilden, um Daten zu empfangen und zu übertragen, so beispielsweise Anzeigen (einschließlich berührungsempfindlicher Anzeigen), Kameras, Mikrofone, Keyboards, Mausvorrichtungen und dergleichen mehr. Die lokale Schnittstelle 1012 kann beispielsweise einen Datenbus mit einem zugehörigen Adressierungs-/Steuer- bzw. Regelbus oder selbstredend auch eine andere Busstruktur umfassen.
-
In dem Speicher 1004 sind sowohl Daten wie auch einige Komponenten, die von dem Prozessor 1002 ausführbar sind, gespeichert. In dem Speicher 1004 gespeichert und von dem Prozessor 1002 ausführbar sind insbesondere die Bildmanipulationsengine 321 und gegebenenfalls andere Anwendungen. In dem Speicher 1004 können ein Datenspeicher und andere Daten gespeichert sein. Darüber hinaus kann ein Betriebssystem in dem Speicher 1004 gespeichert und von dem Prozessor 1002 ausführbar sein.
-
Es sollte einsichtig sein, dass andere Anwendungen, die in dem Speicher 1004 gespeichert sind und von dem Prozessor 1002 ausführbar sind, selbstredend auch vorhanden sein können. Ist eine beliebige der hier diskutierten Komponenten in Form von Software implementiert, so kann eine beliebige aus einer Anzahl von Programmiersprachen eingesetzt werden, so beispielsweise C, C++, C#, Objective C, Java®, JavaScript®, Perl, PHP, Visual Basic®, Python®, Ruby, Flash® oder andere Programmiersprachen.
-
Es ist eine Anzahl von Softwarekomponenten in dem Speicher 1004 gespeichert und von dem Prozessor 1002 ausführbar. In diesem Zusammenhang bezeichnet der Begriff „ausführbar” eine Programmdatei, die in einer Form vorliegt, in der sie letztlich von dem Prozessor 1002 betrieben werden kann. Beispiele für ausführbare Programme können beispielsweise sein: ein kompiliertes Programm, das in einem Format in Maschinencode übertragen werden kann, der in einen wahlfreien Zugriff aufweisenden Abschnitt des Speichers 1004 geladen und von dem Prozessor 1002 ausgeführt werden kann, Sourcecode, der in einem geeigneten Format, so beispielsweise Objektcode, ausgedrückt werden kann, das in einen wahlfreien Zugriff aufweisenden Abschnitt des Speichers 1004 geladen und von dem Prozessor 1002 ausgeführt werden kann, oder Sourcecode, der von einem anderen ausführbaren Programm interpretiert werden kann, um Anweisungen in einem wahlfreien Zugriff aufweisenden Abschnitt des Speichers 1004 zur Ausführung durch den Prozessor 1002 zu erzeugen, und dergleichen mehr. Ein ausführbares Programm kann in einem beliebigen Abschnitt oder in einer beliebigen Komponente des Speichers 1004 gespeichert sein, darunter ein Speicher mit wahlfreiem Zugriff (RAM), ein Nur-Lese-Speicher (ROM), eine Festplatte, ein Solid-State-Laufwerk, ein USB-Flash, eine Speicherkarte, eine optische Platte, so beispielsweise eine Compact Disc (CD) oder DVD, ein Magnetband oder andere Speicherkomponenten.
-
Der Speicher 1004 ist hierbei derart definiert, dass er sowohl flüchtige wie auch nichtflüchtige Speicher und Datenablagekomponenten umfasst. Flüchtige Komponenten sind diejenigen, die bei einem Stromausfall keine Werte erhalten. Nichtflüchtige Komponenten sind diejenigen, die bei Stromausfall Werte erhalten. Daher kann der Speicher 1004 beispielsweise einen Speicher mit wahlfreiem Zugriff (RAM), einen Nur-Lese-Speicher (ROM), Festplattenlaufwerke, Solid-State-Laufwerke, USB-Flash-Laufwerke, Speicherkarten, auf die über einen Speicherkartenleser zugegriffen wird, Floppydisks, auf die über eine zugehöriges Floppydisklaufwerk zugegriffen wird, optische Platten, auf die über ein Laufwerk für optische Platten zugegriffen wird, Magnetbänder, auf die über ein geeignetes Bandlaufwerk zugegriffen wird, und/oder andere Speicherkomponenten oder eine Kombination von zweien oder mehreren dieser Speicherkomponenten umfassen. Beinhalten kann der RAM darüber hinaus beispielsweise einen statischen Speicher mit wahlfreiem Zugriff (SRAM), einen dynamischen Speicher mit wahlfreiem Zugriff (DRAM) oder einen magnetischen Speicher mit wahlfreiem Zugriff (MRAM) oder andere derartige Vorrichtungen. Der ROM kann beispielsweise einen programmierbaren Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM), einen elektrisch löschbaren, programmierbaren Nur-Lese-Speicher (EEPROM) oder andere entsprechende Speichervorrichtungen beinhalten.
-
Der Prozessor 1002 kann mehrere Prozessoren 1002 und/oder mehrere Prozessorkerne darstellen, und der Speicher 1004 kann mehrere Speicher 1004 darstellen, die jeweils in parallelen Verarbeitungsschaltungen betrieben werden. In einem derartigen Fall kann die lokale Schnittstelle 1012 ein geeignetes Netzwerk sein, das eine Kommunikation zwischen zwei beliebigen von den mehreren Prozessoren 1002, zwischen einem beliebigen Prozessor 1002 und einem beliebigen Speicher 1004 oder zwischen einem beliebigen Speicher 1004 und dergleichen mehr vereinfacht. Die lokale Schnittstelle 1012 kann zusätzliche Systeme beinhalten, die diese Kommunikation koordinieren, darunter beispielsweise das Durchführen eines Lastausgleichs. Der Prozessor 1002 kann elektrisch sein oder einen beliebigen anderen Aufbau aufweisen.
-
Obwohl die Bildmanipulationsengine 321 und verschiedene andere hier beschriebene Systeme in Software oder Code zur Ausführung durch Allzweckhardware, wie vorstehend beschrieben worden ist, verkörpert sein können, kann dies bei einer Alternative auch in einer eigens vorgesehenen Hardware oder in einer Kombination aus Software/Allzweckhardware und eigens vorgesehener Hardware verkörpert sein. Bei einer Verkörperung in eigens vorgesehener Hardware kann diese jeweils als Schaltung oder Zustandsmaschine implementiert sein, die eine beliebige Technologie oder eine Kombination aus einer Mehrzahl von Technologien einsetzt. Diese Technologien können unter anderem diskrete logische Schaltungen mit logischen Gates zum Implementieren von verschiedenen logischen Funktionen bei Anwendung eines oder mehrerer Datensignale, anwendungsspezifische integrierte Schaltungen (ASICs) mit geeigneten logischen Gates, feldprogrammierbare Gatearrays (FPGAs) oder andere Komponenten und dergleichen mehr beinhalten. Derartige Technologien sind einem Fachmann auf dem einschlägigen Gebiet bekannt und werden daher nicht weiter beschrieben.
-
Das Flussdiagramm von 9 zeigt die Funktionalität und den Betrieb einer Implementierung von Teilen des Verfahrens 900. Bei Verkörperung in Software kann jeder Block ein Modul, ein Segment oder einen Codeabschnitt repräsentieren, die Programmanweisungen zum Implementieren der spezifischen logischen Funktion/der spezifischen logischen Funktionen aufweisen. Die Programmanweisungen können in Form von Sourcecode verkörpert sein, der von Menschen lesbare Mitteilungen, die in einer Programmiersprache geschrieben sind, oder Maschinencode, der nummerische Anweisungen umfasst, die von einem geeigneten Ausführungssystem, so beispielsweise einem Prozessor 1002 in einem Computersystem oder einem anderen System verarbeitbar sind, umfasst. Der Maschinencode kann beispielsweise aus dem Sourcecode und dergleichen heraus umgewandelt werden. Bei Verkörperung in Hardware kann jeder Block eine Schaltung oder eine Anzahl von wechselseitig verbundenen Schaltungen darstellen, die die spezifische logische Funktion/die spezifischen logischen Funktionen implementieren.
-
Obwohl das Flussdiagramm von 9 eine spezifische Reihenfolge der Ausführung darstellt, sollte einsichtig sein, dass die Reihenfolge der Ausführung vom Dargestellten abweichen kann. Die Reihenfolge der Ausführung von zwei oder mehr Blöcken kann im Vergleich zur dargestellten Reihenfolge anders angeordnet sein. Zwei oder mehr Blöcke, die in 9 aufeinanderfolgend gezeigt sind, können auch gleichzeitig oder teilweise gleichzeitig ausgeführt werden. Bei einigen Ausführungsformen können ein oder mehrere der in 9 gezeigten Blöcke übersprungen oder ausgelassen werden. Zusätzlich kann eine beliebige Anzahl von Zählern, Zustandsvariablen, Warnampeln oder Mitteilungen zu dem hier beschriebenen logischen Ablauf hinzugefügt werden, und zwar zu Zwecken einer verbesserten Nutzbarkeit, einer Bestandsverwaltung (accounting), einer Leistungsmessung oder zur Bereitstellung von Hilfen zur Problembehebung und dergleichen mehr. Es sollte einsichtig sein, dass all diese Abwandlungen im Umfang der vorliegenden Offenbarung beinhaltet sind.
-
Zudem kann eine beliebige hier beschriebene Logik oder Anwendung einschließlich der Bildmanipulationsengine 321, die Software oder Code umfasst, auf einem beliebigen nichttemporären computerlesbaren Medium zur Verwendung durch oder in Verbindung mit einem Anweisungsausführungssystem, so beispielsweise dem Prozessor 1002 in einem Computersystem oder einem anderen System, verkörpert sein. In diesem Sinne kann die Logik beispielsweise Aussagen umfassen, die Anweisungen und Erklärungen beinhalten, die von dem computerlesbaren Medium abgerufen und von dem Anweisungsausführungssystem ausgeführt werden können. Im Zusammenhang mit der vorliegenden Offenbarung kann ein „computerlesbares Medium” ein beliebiges Medium sein, das die hier beschriebene Logik oder Anwendung zur Verwendung durch oder in Verbindung mit dem Anweisungsausführungssystem enthalten, speichern oder vorhalten kann.
-
Das computerlesbare Medium kann ein beliebiges von vielen physischen Medien beinhalten, beispielsweise magnetische, optische oder Halbleitermedien. Spezifischere Beispiele für ein geeignetes computerlesbares Medium beinhalten unter anderem Magnetbänder, magnetische Festplattenlaufwerke, Speicherkarten, Solid-State-Laufwerke, USB-Flash-Laufwerke oder optische Platten. Zudem kann das computerlesbare Medium ein Speicher mit wahlfreiem Zugriff (RAM) sein, darunter beispielsweise ein statischer Speicher mit wahlfreiem Zugriff (SRAM), ein dynamischer Speicher mit wahlfreiem Zugriff (DRAM) oder ein magnetischer Speicher mit wahlfreiem Zugriff (MRAM). Das computerlesbare Medium kann zudem ein Nur-Lese-Speicher (ROM), ein programmierbarer Nur-Lese-Speicher (PROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM), ein elektrisch löschbarer, programmierbarer Nur-Lese-Speicher (EEPROM) oder eine andere Art von Speichervorrichtung sein.
-
Des Weiteren kann eine beliebige hier beschriebene Logik oder Anwendung einschließlich der Bildmanipulationsengine 321 auf eine Vielzahl von Arten implementiert und strukturiert sein. Eine oder mehrere der hier beschriebenen Anwendungen können beispielsweise als Module oder Komponenten einer einzigen Anwendung implementiert sein. Des Weiteren können eine oder mehrere der hier beschriebenen Anwendungen auf gemeinsam genutzten oder getrennten Rechenvorrichtungen oder einer Kombination hieraus ausgeführt werden. Eine Mehrzahl der hier beschriebenen Anwendungen kann beispielsweise auf derselben Rechenvorrichtung 1000 oder auch auf mehreren Rechenvorrichtungen in derselben Rechenumgebung 303 ausgeführt werden. Es sollte zudem einsichtig sein, dass Begriffe wie „Anwendung”, „Service bzw. Dienst”, „System”, „Engine”, „Modul” und dergleichen mehr austauschbar und nicht beschränkend sein sollen.
-
Disjunktive Sprache wie beispielsweise in dem Ausdruck „wenigstens eines von X, Y oder Z” soll, außer dies ist explizit anders angegeben, ansonsten in dem Zusammenhang verstanden werden, in dem es gemeinhin verwendet wird, um anzugeben, dass ein Objekt, Ausdruck und dergleichen mehr entweder X, Y oder Z oder eine beliebige Kombination hieraus (beispielsweise X, Y und/oder Z) sein kann. Eine derartige disjunktive Sprache soll im Allgemeinen nicht implizieren, dass bei bestimmten Ausführungsformen das jeweilige Vorhandensein von wenigstens einem von X, wenigstens einem von Y oder wenigstens einem von Z nötig ist.
-
Es sei hervorgehoben, dass die vorbeschriebenen Ausführungsformen der vorliegenden Offenbarung lediglich mögliche Beispiele für Implementierungen sind, die für ein eingehendes Verständnis der Prinzipien der Offenbarung aufgeführt sind. Viele Abwandlungen und Modifizierungen können an der vorbeschriebenen Ausführungsform/den vorbeschriebenen Ausführungsformen vorgenommen werden, ohne wesentlich vom Kern und den Prinzipien der Offenbarung abzugehen. All diese Modifizierungen und Abwandlungen sollen im Umfang der Offenbarung beinhaltet und von den nachfolgenden Ansprüchen geschützt sein.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- http://opencv.org/ [0030]