-
ALLGEMEINER STAND DER TECHNIK
-
Die digitale Fotografie macht es möglich, hunderte oder sogar tausende von digitalen Fotos aufzunehmen, ohne die Zeit und Kosten des Entwickelns von Negativen und Abzügen von einem Film. Daraufhin nimmt man heutzutage gewöhnlich mehrere Fotos von demselben Motiv auf, wobei einige der Fotos aus diversen Gründen, wie etwa Über- oder Unterbelichtung, verschwommenes Foto, oder Personen mit geschlossenen Augen, besser als andere sind. Die Benutzer müssen die digitalen Fotos manuell durchgehen, die weniger wünschenswerten löschen, die besseren Fotos in Verzeichnisse ziehen oder die Fotos anderweitig markieren, um die „guten” von den „schlechten” zu trennen. In Zusammenhang mit hunderten oder tausenden von Fotos bedeutet dies viel Arbeit, die häufig unvollendet bleibt, wenn sie manuell erfolgen soll.
-
Das programmmäßige Ausführen dieser Prozesse durch eine Software in einem Computer liegt nicht auf der Hand.
-
Es wird ein System benötigt, das programmmäßig identifizieren kann, welche Fotos das gleiche oder ein ähnliches Motiv betreffen, und das dann die Fotos des ähnlichen Motivs auswählen kann, welche die Kriterien erfüllen, die „besseren” Fotos entsprechen.
-
KURZDARSTELLUNG
-
Es wird eine Software-Routine offenbart, die bestimmt, welche Fotos in einer Sammlung ähnlich sind, die ähnlichen Fotos gruppiert, und die dann bestimmt, welche Fotos innerhalb einer Gruppe die Kriterien von „besseren” Fotos erfüllen.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Es zeigen:
-
1 ein Diagramm eines Netzwerks mit Vorrichtungen, das beispielhafte Rechenvorrichtungen abbildet, die gemäß den hier offenbarten Ausführungsformen konfiguriert sind.
-
2 ein Ablaufschema, das einen Überblick über einen Prozess abbildet, um programmmäßig Fotos innerhalb jeder Gruppe gemäß der Ähnlichkeit zu gruppieren und zu identifizieren, welche die Kriterien erfüllen, die ausgelegt sind, um die besten Fotos in jeder Gruppe zu identifizieren.
-
3 ein Ablaufschema, das ein Detail eines Prozesses abbildet, der in 2 abgebildet ist, bei dem die Ähnlichkeitsgruppen bestimmt werden.
-
4 ist ein Ablaufschema, das ein Detail eines Prozesses abbildet, der in 2 abgebildet ist, bei dem die besten Bilder innerhalb jeder Gruppe ausgewählt werden, und bei dem die nicht ausgewählten Fotos innerhalb jeder Gruppe maskiert werden.
-
5 ein Ablaufschema, das ein Detail eines Prozesses abbildet, der in 4 abgebildet ist, bei dem Fotos auf Über- und Unterbelichtung beurteilt werden.
-
6 ein Ablaufschema, das ein Detail eines Prozesses abbildet, der in 3 abgebildet ist, bei dem Fotos verarbeitet werden, bevor ein Wert „Earth Mover's Distance” bestimmt wird.
-
7 ein Ablaufschema, das ein Detail eines Prozesses abbildet, der in 3 abgebildet ist, bei dem die dominante Farbe in einem Foto bestimmt wird.
-
8 ein rechteckiges Foto mit einem großen Quadrat, das in vier Teilquadrate unterteilt ist, und mit einem zusätzlichen Teilquadrat, das in dem großen Quadrat zentriert ist.
-
9 ein Funktionsblockdiagramm einer beispielhaften Server-Rechenvorrichtung („GS-Server”) und einigen Datenstrukturen und/oder Komponenten derselben.
-
10 ein Funktionsblockdiagramm eines Datenbestands in der Rechenvorrichtung aus 9.
-
11 ein Funktionsblockdiagramm einer beispielhaften Client-Rechenvorrichtung („Client-Vorrichtung”) und einigen Datenstrukturen und/oder Komponenten derselben.
-
12 ein Funktionsblockdiagramm eines Datenbestands in der Rechenvorrichtung aus 11 und 13.
-
13 ein Funktionsblockdiagramm einer beispielhaften mobilen Client-Rechenvorrichtung und einigen Datenstrukturen und/oder Komponenten derselben.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die nachstehende Beschreibung stellt spezifische Einzelheiten zum Verständnis diverser Beispiele der Technik bereit. Der Fachmann wird verstehen, dass die Technik ohne viele dieser Details in die Praxis umgesetzt werden kann. In manchen Fällen wurden Strukturen und Funktionen nicht gezeigt oder nicht ausführlich oder gar nicht beschrieben, um eine unnötige Verschleierung der Beschreibung der Beispiele der Technik zu vermeiden. Es wird beabsichtigt, dass die Wortwahl, die in der Beschreibung verwendet wird, die nachstehend vorgelegt wird, im weitesten Sinne auszulegen ist, obwohl sie in Verbindung mit einer ausführlichen Beschreibung bestimmter Beispiele der Technik verwendet wird. Obwohl bestimmte Begriffe nachstehend hervorgehoben werden können, werden alle Termini, die dazu gedacht sind, im engeren Sinne ausgelegt zu werden, in dem vorliegenden Abschnitt der ausführlichen Beschreibung ausdrücklich und spezifisch als solche definiert.
-
Soweit es der Kontext nicht deutlich anderweitig erfordert, sind in der gesamten Beschreibung und den Ansprüchen die Wörter „umfassen”, „umfassend” und dergleichen in einem einschließenden Sinne im Gegensatz zu einem ausschließenden oder erschöpfenden Sinne auszulegen; d.h. im Sinne von „umfassend ohne Einschränkung”. Wie er hier verwendet wird, bedeutet der Begriff „verbunden”, „gekoppelt” oder beliebige Varianten davon eine beliebige, direkte oder indirekte Verbindung oder Kopplung zwischen zwei oder mehreren Elementen; wobei die Kopplung oder Verbindung zwischen den Elementen physisch, logisch oder eine Kombination davon sein kann. Zusätzlich beziehen sich die Wörter „hier”, „vorstehend”, „nachstehend” und ähnlich lautende Wörter, wenn sie in der vorliegenden Anmeldung verwendet werden, auf die Anmeldung als Ganzes und nicht auf bestimmte Abschnitte dieser Anmeldung. Wenn es der Zusammenhang erlaubt, können Wörter im Singular auch den Plural umfassen, während Wörter im Plural auch den Singular umfassen können. Das Wort „oder” mit Bezug auf eine Liste von zwei oder mehreren Elementen deckt alle der folgenden Auslegungen des Wortes ab: eines der Elemente der Liste, alle der Elemente der Liste und eine beliebige Kombination von einem oder mehreren der Elemente in der Liste.
-
Gewisse Elemente erscheinen in verschiedenen Figuren mit dem gleichen großgeschriebenen Elementtext jedoch mit einer anderen Elementnummer. Wenn sie hier mit dem großgeschriebenen Elementtext aber ohne Elementnummer erwähnt werden, sind diese Referenzen als weitgehend gleichwertig und sich auf ein beliebiges der Elemente mit dem gleichen großgeschriebenen Elementtext beziehend anzusehen, wenn auch eventuell mit Unterschieden basierend auf der Rechenvorrichtung, in welcher die diversen Ausführungsformen des Elements erscheinen.
-
1 ist ein Diagramm eines Netzwerks mit Vorrichtungen, das beispielhafte Rechenvorrichtungen abbildet, die gemäß den hier offenbarten Ausführungsformen konfiguriert sind. In 1 ist ein Computer einer Client-Vorrichtung 1100 an ein Netzwerk 150, wie etwa das Internet, angeschlossen. Das Netzwerk 150 umfasst Computer, Netzwerkverbindungen zwischen den Computern und Software-Routinen, um die Kommunikation zwischen den Computern über die Netzwerkverbindungen zu ermöglichen.
-
In 1 ist auch ein Computer einer mobilen Client-Vorrichtung 1300 abgebildet, der an das Netzwerk 150 und die Client-Vorrichtung 1100 angeschlossen ist. Die Client-Vorrichtung 1100 und die mobile Client-Vorrichtung 1300 werden hier beide als „Client-Vorrichtung” ohne Elementnummer bezeichnet und sind hier als gegebenenfalls gleichwertige Rechenvorrichtungen darstellend zu verstehen; sie sind in 1 beide als getrennte Vorrichtungen abgebildet, um zu veranschaulichen, dass ein Benutzer eine mobile Client-Vorrichtung 1300 verwenden kann, um Fotos aufzunehmen, wie etwa die Fotos 1205, und dass der Benutzer die Fotos 1205 an die Client-Vorrichtung 1100 über die direkte Verbindung zwischen der Client-Vorrichtung 1100 und der mobilen Client-Vorrichtung 1300 und/oder über das Netzwerk 150 übertragen kann. Die mobile Client-Vorrichtung 1300 (und die Client-Vorrichtung 1100) können auch die Fotos 1205 an den GS-Server 900 und/oder den Fremd-Server 140 übertragen (nachstehend ausführlicher besprochen).
-
1 bildet einen GS-Server 900 ab, wie er an das Netzwerk 150 angeschlossen ist. 9 und 10 bilden den GS-Server 900 ab, wie er einen Datenbestand 1000 umfasst; ähnlich bildet 11 die Client-Vorrichtung ab, wie sie einen Datenbestand 1200 umfasst. Die vorliegende Druckschrift bespricht Komponenten, die einerseits an den GS-Server 900 oder an die Client-Vorrichtung oder andererseits an den Datenbestand 1000 oder den Datenbestand 1200 angeschlossen sind; es versteht sich, dass diese Anschlüsse an, durch oder über die anderen der beiden Komponenten erfolgen können (beispielsweise versteht sich eine Aussage, dass eine Rechenvorrichtung an den GS-Server 900 angeschlossen ist oder Daten an diesen sendet, dahingehend, dass die Rechenvorrichtung an den GS-Server 900 und/oder den Datenbestand 1000 angeschlossen werden kann oder diesem Daten senden kann). Beziehungen auf eine „Datenbank” sind hier als gleichwertig mit einem „Datenbestand” anzusehen. Obwohl sie in 9 und 11 als Komponenten abgebildet sind, die in eine einzige physische Einheit integriert sind, können die Server und Datenbanken durch gemeinsame (oder getrennte) physische Hardware und gemeinsame (oder getrennte) logische Prozessoren und Speicherkomponenten bereitgestellt werden. Der GS-Server 900 und der Datenbestand 1000 können auch Komponenten von oder in einer Client-Vorrichtung sein, statt wie abgebildet getrennte Vorrichtungen zu sein.
-
Der GS-Server 900 und die Client-Vorrichtungen sind hier als gleichwertige Rechenvorrichtungen anzusehen. Der GS-Server 900 ist als eine von den Client-Vorrichtungen getrennte Vorrichtung abgebildet, um zu veranschaulichen, dass das System und das Verfahren, die hier besprochen werden, in einer Client-Server-Architektur ausgeführt werden können, in der eine Client-Vorrichtung oder ein Fremd-Server 140 Fotos an den GS-Server 900 überträgt, wobei dieser GS-Server 900 Gruppen erstellt und Fotos als Fotogruppen 1010 auswählt, wobei die Fotogruppen dann an eine Client-Vorrichtung oder einen Fremd-Server 140 (wie beispielsweise die Fotogruppen 1210) übertragen werden und/oder von diesen wiedergegeben werden.
-
Ebenfalls in 1 abgebildet ist ein Fremd-Server 140, der an das Netzwerk 150 angeschlossen ist. Der Fremd-Server 140 stellt beispielsweise Online-Dienste dar, wie etwa einen Dienst, der Fotos speichert und ordnet, wie etwa der Dienst PICASA® von Google Inc. oder der Dienst FACEBOOK® von Facebook Inc., und Dienste, die beispielsweise eine Gesichtsanalyse ausführen und das Ergebnis einer derartigen Gesichtsanalyse beispielsweise an den GS-Server 900 als Gesichtsdaten 1055 zurückgeben. Derartige Dienste werden hier als „Online-Dienste” bezeichnet. Die Fotos 1005 können an den GS-Server 900 von einer Client-Vorrichtung und/oder von dem Fremd-Server 140 übertragen werden. Das Übertragen der Fotos 1005 an den GS-Server 900 kann einen Prozess bedingen, bei dem der Fremd-Server 140 oder eine Client-Vorrichtung den GS-Server 900 darüber benachrichtigt, dass Fotos verfügbar sind, woraufhin der GS-Server den Fremd-Server 140 kontaktiert, Anmeldeinformationen vorlegt, um den GS-Server 900 zu authentifizieren und zu autorisieren, und dann die Fotos 1005 herunterlädt. Die Übertragung der Fotos an den GS-Server 900 durch eine Client-Vorrichtung wird nachstehend ausführlicher besprochen. Die Fotos, Fotogruppen und Fotometadaten werden besprochen, wie sie zwischen dem GS-Server 900 und den Client-Vorrichtungen übertragen werden; es versteht sich, dass der Fremd-Server 140 eine Aufgabe haben kann, die derjenigen der Client-Vorrichtungen entspricht, und dass der GS-Server 900 anstelle von oder zusätzlich zu dem Kommunizieren mit den Client-Vorrichtungen mit dem Fremd-Server 140 kommunizieren kann.
-
Die Computer aus 1 sind in 9 und 11 (und 10 und 12) abgebildet, wie sie Datengruppen für Routinen und Anwendungen umfassen, wie etwa eine Fotoanwendung 1140 und eine Gruppier- und Auswahlvorrichtung 200. Zusätzliche Datengruppen für Routinen, wie etwa für einen Web-Server und einen Web-Browser, können ebenfalls auf diesen Vorrichtungen vorliegen und von diesen ausgeführt werden. Die Computer in 1 sind in 9 und 11 (und 10 und 12) abgebildet, wie sie Datengruppen umfassen, die von Routinen verwendet werden, wie etwa (ohne eine erschöpfende Liste aller Elemente bereitzustellen) Fotos (1005 und 1205), Fotogruppen (1010 und 1210) und Fotometadaten (1015 und 1300). Die Datengruppen, die von Routinen verwendet werden, können durch eine Zelle in einer Spalte oder einen Wert, der von anderen Werten getrennt ist, in einer definierten Struktur in einem digitalen Dokument oder einer Datei dargestellt werden. Obwohl sie hier als einzelne Aufzeichnungen oder Einträge bezeichnet werden, können die Aufzeichnungen mehr als einen Datenbankeintrag umfassen. Die Datenbankeinträge können Zahlen, numerische Operatoren, Binärwerte, logische Werte, Text, Kettenverarbeitungsbefehle, Verbunde, Bedingungslogik, Tests und dergleichen darstellen oder codieren. Die Browser-Routinen können eine Schnittstelle bereitstellen, um beispielsweise mit dem GS-Server 900 über eine Web-Server-Routine (die Daten und Informationen in Form von Web-Seiten anbieten kann) zu interagieren. Die Browser und Web-Server sind dazu gedacht, eine Benutzerschnittstelle und Routinen zum Ermöglichen von Benutzerschnittstellen allgemein zu veranschaulichen und können durch gleichwertige Routinen zum Anbieten und Wiedergeben von Informationen an und in einer Benutzerschnittstelle in einer Client-Vorrichtung ersetzt werden. Anmeldeinformationen und lokale Instanzen von Benutzerprofilen können in den Client-Vorrichtungen, dem GS-Server 900 und dem Fremd-Server 140 gespeichert werden oder für diese zugänglich sein.
-
Bei einer Umsetzung kann der eine oder andere der Computer eventuell einige der Datengruppen nicht aufweisen; falls beispielsweise die mobile Client-Vorrichtung 1300 eine digitale Kamera mit relativ einfachen Funktionen ist (statt einer Rechenvorrichtung mit allgemeineren Funktionen), kann es sein, dass sie keine Datengruppen zum Beispiel für Fotogruppen aufweist, und/oder dass die Fotoanwendung in der mobilen Client-Vorrichtung 1300 vielleicht nicht alle Funktionen aufweist, die in der Fotoanwendung zu finden sind, die in einer (nicht mobilen) Client-Vorrichtung 1100 umgesetzt sind.
-
Die Gruppier- und Auswahlvorrichtung (200) ist eine Software-Routine, die Fotos gemäß ihrer Ähnlichkeit zu Fotogruppen gruppiert und die Fotos, welche die Kriterien erfüllen, die dazu ausgelegt sind, um die besten Fotos in den Fotogruppen zu identifizieren, innerhalb der Fotogruppen auswählt; die Gruppier- und Auswahlvorrichtung wird mit Bezug auf 2 und 3 (und den anschließenden Figuren, die Einzelheiten dieser Figuren abbilden) näher besprochen.
-
Die Fotoanwendungen können Anwendungen zum Importieren, Speichern und Ordnen von Fotos, wie etwa Fotografien, sein. Beispiele von Fotoanwendungen umfassen IPHOTO® von Apple Inc. und PICASA® von Google Inc.
-
Die Fotos sind digital codierte Fotos und können beispielsweise Datenbankeinträge umfassen, die Fotos umfassen, die in einem digitalen Format codiert sind, wie etwa in einer „unbearbeiteten” Bilddatei, in TIFF, JPEG, GIF, BMP, PNG, RGBE, IFF-RGFX, CGM, Gerber Format, SVG und anderen digitalen Bildformaten. Fotos können in der Datenbank mit Fotogruppen verknüpft sein und können Metadaten umfassen oder damit verknüpft sein.
-
Metadaten können Datenbankeinträge umfassen, die Kameraeinstellungen, Uhrzeit und Datum (hier zusammen als „Zeitstempel” bezeichnet, der in 10 und 12 als Zeit 1025 und 1400 dargestellt ist), Verschlusszeit (Verschlusszeit 0 und 1230), Belichtung (wie etwa Blendenzahl), Bildgröße (in Pixeln, Abstandseinheiten oder Datenmenge), Bildorientierung (wie etwa hoch oder quer), Vergrößerung, Brennweite (Brennweite 1020 und 1220), Kompression, Kamerabezeichnung, Kameratyp, Bildtexte oder andere Texte, die mit dem Foto verknüpft sind, und Standort (wie etwa Breiten- und Längengrad und andere Informationen, die bei Geo-Tagging-Vorgängen verwendet werden) umfassen. Die Metadaten können gemäß einem Standard formatiert sein, wie beispielsweise dem Informationsaustauschmodell des IPTC („International Press Telecommunications Council), dem IPTIC-Kernschema für XMP, XMP („Extensible Metadata Platform”), dem austauschbaren Bilddateiformat („Exif”), der Dublin-Kernmetadaten-Initiative oder dem universellen Bildlizenzierungssystem. Gewisse Metadateneinträge werden getrennt von den Metadaten in 10 und 12 abgebildet, können jedoch Teil der Metadaten sein oder darin zu finden sein, wie beispielsweise Uhrzeit und Verschlusszeit.
-
Die in 10 und 12 abgebildeten Fotogruppen sind Datenbankeinträge, die Gruppen von Fotos darstellen, die von der Gruppier- und Auswahlvorrichtung bezeichnet werden. Die Datenbankeinträge der Fotogruppe können aufzeichnen, welche Fotos sich in der Fotogruppe befinden, die Reihenfolge der Fotos in der Fotogruppe, einen Namen, den die Fotogruppe erhalten haben kann (wobei es sich um eine oder mehrere dominante Farben, die in den Fotos in der Fotogruppe zu finden ist bzw. sind, einen Zeitstempel oder Zeitstempelbereich, der mit den Fotos in der Fotogruppe verknüpft ist, oder dergleichen handeln kann), und ob Fotos in der Fotogruppe die Auswahlkriterien erfüllen, wie sie von der Gruppier- und Auswahlvorrichtung bestimmt werden. Die Fotogruppen können ferner als „Alben” oder „Verzeichnisse” beispielsweise von der Fotoanwendung geordnet, dargestellt oder wiedergegeben werden.
-
Die Software-Routinen und Datengruppen, die von den Software-Routinen verwendet werden, können mit Bezug auf einen der Computer beispielsweise durch Anwendungsvirtualisierung entfernt gespeichert und/oder ausgeführt werden.
-
Die in 1 abgebildeten Computer werden mit Bezug auf 9, 10, 11 und 12 näher beschrieben.
-
2 ist ein Ablaufschema, das einen Überblick über einen Prozess abbildet, um programmmäßig Fotos innerhalb jeder Gruppe gemäß der Ähnlichkeit zu gruppieren und zu identifizieren, welche die Kriterien erfüllen, die ausgelegt sind, um die besten Fotos in jeder Gruppe zu identifizieren.
-
In Schritt 205 startet die Gruppier- und Auswahl-Routine oder fährt ansonsten mit der Ausführung fort. In Schritt 210 empfängt die Gruppier- und Auswahlvorrichtung Fotos, wie etwa das Foto 1005. In Schritt 300 gruppiert die Gruppier- und Auswahlvorrichtung die Fotos in Gruppen, wie etwa in Fotogruppen, gemäß ihrer Ähnlichkeit und den dominanten Farben. Ein Beispiel eines Prozesses dafür wird in 3 und den anschließenden Figuren, auf die 3 Bezug nimmt, näher erläutert.
-
In Schritt 400 identifiziert die Gruppier- und Auswahlvorrichtung die besten Fotos in den Fotogruppen gemäß den Auswahlkriterien. Ein Beispiel eines Prozesses dafür wird in 4 und den anschließenden Figuren, auf die 4 Bezug nimmt, näher erläutert. In Schritt 230 maskiert die Gruppier- und Auswahlvorrichtung in jeder Fotogruppe die Fotos, welche die Auswahlkriterien nicht erfüllen.
-
In Schritt 235 werden die Fotogruppen ausgegeben. Das Ausgeben der Fotogruppen kann das Übertragen der Fotogruppen auf eine Client-Vorrichtung und/oder den Fremd-Server umfassen, wobei die Empfangsvorrichtung die Fotogruppen beispielsweise unter Verwendung der Fotoanwendung wiedergeben kann. Die Fotogruppen können dadurch ausgegeben werden, dass die Fotos an die Empfangsvorrichtung zusammen mit Datenaufzeichnungen übertragen werden, wie etwa Fotogruppen und/oder Metadaten, wobei diese Datenaufzeichnungen die Fotos als zu den Fotogruppen gehörend identifizieren, und/oder wobei diese Datenaufzeichnungen identifizieren, welche Fotos zu maskieren sind (entweder in den Fotogruppen oder in den Verzeichnissen oder Alben, die von der Fotoanwendung verwendet werden). Falls die Empfangsvorrichtung bereits über die Fotos verfügt, kann der GS-Server 900 nur die Datenaufzeichnungen, die soeben erwähnt wurden, an die Empfangsvorrichtung übertragen.
-
3 ist ein Ablaufschema, das ein Detail eines Prozesses abbildet, der in 2 abgebildet ist, bei dem die Ähnlichkeitsgruppen bestimmt werden. Die Schritte 305 und 365 bilden einen Prozess ab, der mit Bezug auf einzelne Fotos ausgeführt wird. In Schritt 310 kann eine Bestimmung erfolgen, ob ein Foto eine exakte Kopie eines Fotos ist, das beispielsweise bereits in dem Datenbestand 1000 (oder 1200) vorliegt. Die Bestimmung, ob ein Foto eine exakte Kopie eines vorhergehenden Fotos ist, kann beispielsweise darauf basieren, ob ein Hash oder eine Signatur oder eine Datengruppe von oder in dem Foto wie ein Hash-Code oder eine Signatur oder eine Datengruppe von oder in den vorhergehenden Fotos ist. Das Löschen von exakten Kopien kann das Ausführen eines Dialogs mit einem Benutzer bedingen, um den Löschvorgang zu bestätigen.
-
In Schritt 600 können Prozesse einer Vor-EMD-(„Earth Mover's Distance”)-Funktion oder einer anderen Vor-Abstandsfunktion mit Bezug auf jedes einzelne Foto ausgeführt werden. Ein Beispiel davon ist ferner in 6 abgebildet. Im Allgemeinen bedingt die EMD- oder andere Abstandsfunktion (nachstehend ausführlicher besprochen) das Vergleichen von zwei oder mehreren Fotos, um den „Abstand” zwischen den Fotos zu bestimmen. Die EMD- oder andere Abstandsfunktion kann mit Bezug auf einen Aspekt eines ersten Fotos ausgeführt werden, das getrennt von anderen Fotos berechnet werden kann, mit denen das erste Foto verglichen wird. Schritt 600 führt diese Vor-EMD-(oder andere Vor-Abstandsfunktions-)Prozesse aus. Die Ausgabe dieses Vor-EMD-Prozesses kann gespeichert werden, so dass sie später nicht erneut berechnet werden muss.
-
Mit Bezug auf 6 als Beispiel von Vor-EMD-Prozessen erzielt die Gruppier- und Auswahlvorrichtung in Schritt 610 einen Abschnitt eines Fotos, wie etwa ein Quadrat, wobei dieses Quadrat ein mittleres Quadrat in einem Foto sein kann (der Abschnitt des Fotos muss kein Quadrat sein, und das Quadrat oder der andere Abschnitt muss sich nicht in der Mitte des Fotos befinden). Ein Beispiel eines derartigen Abschnitts ist in 8 abgebildet, wobei das rechteckige Foto 801 ein Quadrat 805 umfasst. Der Abschnitt kann in Teilabschnitte unterteilt werden. Wie in 8 abgebildet, ist das Quadrat 805 in vier Teilquadrate 810, 815, 820 und 825 unterteilt (die Teilabschnitte müssen keine Quadrate sein und können weniger als den ganzen Abschnitt umfassen, den sie unterteilen). Ein zusätzlicher Teilabschnitt kann enthalten sein, wie etwa das Teilquadrat 830 (in 8 in Quadrat 805 zentriert und in der gleichen Größe wie die anderen vier Teilquadrate gezeigt). In Schritt 615 werden Farbhistogramme für die Abschnitte bestimmt. Obwohl 8 ein Beispiel abbildet, ist zu erkennen, dass weder diese Anzahl von Abschnitten noch Abschnitte mit diesen Abmessungen notwendig sind. Im Allgemeinen ist es notwendig, dass ein Histogramm von einigen oder allen Fotos erstellt wird, vorausgesetzt der Abschnitt ist in den Fotos einheitlich. Die Identifizierung eines einheitlichen Abschnitts kann, wie abgebildet, mit Bezug auf absolute geometrische Koordinaten in den Fotos erfolgen, oder sie kann mit Bezug auf einen Abschnitt mit Bezug auf eine interessierende Fläche innerhalb eines Fotos, wie etwa ein identifiziertes Gesicht (das sich von Foto zu Foto bewegen kann), erfolgen.
-
In Schritt 320 wird eine EMD oder eine andere Abstandsfunktion mit Bezug auf jedes Foto und andere Fotos in dem Zeitbereich X ausgeführt (der beispielsweise zwischen 5 und 15 Minuten liegen kann). Der Zeitbereich X kann sich auf jedes Foto beziehen, oder die Fotos können nach Zeitstempel zusammengestellt werden, wobei die EMD- oder andere Abstandsfunktion in den Fotos in jeder Zusammenstellung ausgeführt wird. Statt mit Bezug auf den Zeitbereich X kann die EMD- oder andere Abstandsfunktion mit Bezug auf eine andere Gruppierung von Fotos erfolgen, wie etwa Fotos in einem Verzeichnis oder Album in einer Fotoanwendung.
-
Die EMD- oder andere Abstandsfunktion wird mit Bezug auf das oder die Histogramme oder eine andere Vor-EMD-Prozessausgabe, die in Schritt 600 erstellt wird, ausgeführt. Eine EMD-Funktion ist ein Beispiel einer Abstandsfunktion, die den „Abstand” zwischen zwei Wahrscheinlichkeitsverteilungen auf einen Bereich misst. EMD-Funktionen sind eine Art von Wasserstein-Metrik. Mit anderen Worten bestimmt die EMD- oder andere Abstandsfunktion die minimalen „Kosten”, um ein erstes Element in ein zweites Element umzuwandeln. Da das oder die Histogramme, das bzw. die in Schritt 600 erstellt wird bzw. werden, das Foto als Grafik von Pixeln und Frequenzen darstellen (es können andere Histogramme verwendet werden, wie etwa ein einfarbiges Histogramm, das Pixel und Intensität darstellt), ist es möglich, die Histogramme der beiden Fotos zu vergleichen und zu bestimmen, ob es einen großen oder kleinen Abstand zwischen den beiden Histogrammen gibt. Falls es ein kleiner Abstand ist, weisen die Fotos höchstwahrscheinlich das gleiche Motiv auf, selbst wenn einige Unterschiede vorhanden sind. Die Unterschiede zwischen zwei Fotos mit dem gleichen Motiv können beispielsweise von verschiedenen Auflösungen, Fehlerdiffusion, Unschärfe, lokalen Verformungen oder einer Verschiebung im Einzelbild mit Bezug auf das Motiv herrühren. Bei dem in 6 (und 8) abgebildeten Beispiel wurden fünf Farbhistogramme von fünf verschiedenen Quadraten in jedem Foto in Schritt 600 erstellt. Die EMD- oder andere Abstandsfunktion aus Schritt 320 kann mit Bezug auf jedes der fünf Farbhistogramme ausgeführt werden, das von den beiden Fotos erstellt wurden, wobei die Ausgabe der EMD-Funktion für jedes der fünf Farbhistogramme (über die beiden Fotos) beispielsweise gemittelt wird. Der Wert der EMD- oder anderen Abstandsfunktion jedes Fotos mit Bezug auf andere Fotos in dem Zeitbereich X kann beispielsweise als EMD-Wert (5 und 1235) gespeichert werden.
-
In Schritt 325 kann eine Bestimmung erfolgen, ob der Wert der EMD- oder anderen Abstandsfunktion über oder unter einer Schwelle „T” liegt. Die Schwelle kann beispielsweise von der Art der verwendeten Abstandsfunktion, der Art des verwendeten Histogramms, den verwendeten Einheiten, der Toleranz für eine Falsch-Positiv-Rate (zum Finden der Ähnlichkeit zwischen den Fotos) und dergleichen abhängen. Bei dem hier gezeigten Beispiel hat sich eine Schwelle von 50 als wirksam erwiesen. Es können mehrere Schwellen verwendet werden, zum Beispiel um die Fotos danach zu gruppieren, ob sie identisch sind, nahezu exakte Kopien sind und ein ähnliches Thema betreffen (beispielsweise verschneite Winterszenen, blauen Himmel über dem Gras darunter usw.).
-
Falls die Bestimmung in Schritt 325 bedeutet, dass der Wert der EMD- oder anderen Abstandsfunktion mit Bezug auf andere Fotos in dem Zeitbereich X derart ist, dass der Wert der EMD- oder anderen Abstandsfunktion zwischen dem Foto und anderen Fotos unter der Schwelle T liegt (was bedeutet, dass die Fotos ähnlich sind), dann kann in Schritt 330 eine Bestimmung erfolgen, ob die anderen ähnlichen Fotos Teil einer einzigen Ähnlichkeitsgruppe oder Teil von mehr als einer Ähnlichkeitsgruppe sind. In Schritt 335 war die Bestimmung in Schritt 330 affirmativ, und das Foto wird zu der identifizierten Gruppe, wie etwa zur Fotogruppe 1010, hinzugefügt. In Schritt 340 war die Bestimmung in Schritt 330 negativ, und eine neue Gruppe, wie etwa eine neue Fotogruppe 1010, wird für das Foto angelegt. Falls in Schritt 325 die Bestimmung derart war, dass der Wert der EMD- oder anderen Abstandsfunktion zwischen dem Foto und anderen Fotos über der Schwelle T liegt (was bedeutet, dass die Fotos nicht ähnlich sind), dann wird in Schritt 345 eine neue Gruppe, wie etwa eine neue Fotogruppe 1010, für das Foto angelegt. In Schritt 350 werden die Ähnlichkeitsgruppen, wie etwa in den Fotogruppen 1010, gespeichert. Nachdem die Ähnlichkeitsgruppen gespeichert wurden, können die EMD-Werte 113 verworfen werden oder zur späteren Verwendung behalten werden.
-
In Schritt 700 werden die dominanten Farben in jedem Foto bestimmt. Ein Beispiel eines Prozesses zum Bestimmen der dominanten Farben in einem Foto ist in 7 abgebildet. Mit Bezug auf 7 werden Farbhistogramme für jedes Foto in Schritt 705 erzielt. Die Farbhistogramme können von einem gewissen Abschnitt oder von dem ganzen Foto stammen. Die Farbhistogramme können Farbhistogramme sein, die beispielsweise in Schritt 600 erstellt werden. In Schritt 710 kann eine maximale Farbzählung erzielt werden. Die maximale Farbzählung kann eine statische Zahl sein und kann ein fester Bestandteil der Software-Routine sein, welche diese Funktion ausführt, wie etwa die Gruppier- und Auswahlvorrichtung. Bei diesem Beispiel kann die maximale Farbzählung gleich 10 sein. In Schritt 715 wird eine Umsetzung des lloydschen Algorithmus am RGB-Farbwürfel für das Foto ausgeführt, um ein Voronoi-Diagramm anzulegen. Ein Voronoi-Diagramm ist eine Möglichkeit, einen Raum in eine gewisse Anzahl von Bereichen zu unterteilen. Der lloydsche Algorithmus in diesem Beispiel verwendet als Eingabe das Farbhistogramm aus Schritt 705 und die maximale Farbzählung aus Schritt 710. Der lloydsche Algorithmus dieses Beispiels unterteilt die Eingabepunkte, die Pixelfrequenzen aus dem Farbhistogramm aus Schritt 705, in k anfängliche Sätze, die maximale Farbzählung von Schritt 710. Der Algorithmus berechnet dann den Durchschnittspunkt bzw. das Zentrum jedes Satzes, wie etwa gemäß den durchschnittlichen Dimensionen im euklidischen Raum, wobei der ursprüngliche Standort jedes Zentrums im Allgemeinen an einer zufälligen Stelle beginnt. Der Algorithmus baut eine neue Zerlegung auf, indem er jeden Punkt mit dem nächstgelegenen Zentrum verknüpft, wie etwa unter Verwendung der euklidischen Abstandsfunktion. Dann werden die Zentren für die neuen Zusammenstellungen neu berechnet und der Algorithmus iteriert bis zur Konvergenz, bis eine feste Anzahl von Iterationen ausgeführt wurde, bis die Punkte nicht mehr die Zusammenstellung wechseln, oder bis sich die Zentren nicht mehr ändern. Die Ausgabe dieses Schritts ist eine geordnete gewichtete Liste, wobei die Gewichtung jeweils durch die Anzahl von Pixeln, die mit jeder Zusammenstellung verknüpft sind, bestimmt wird.
-
In Schritt 720 werden die dominanten Farben aus der Ausgabe von Schritt 715 ausgewählt, wie etwa die obere Farbe oder die ersten bis dritten oberen Farben. In Schritt 725 können die ausgewählten oberen Farben aus Schritt 720 mit Farbnamen korreliert werden. Zurück zu 3 kann in Schritt 360 die Ausgabe von Schritt 700 (beispielsweise Schritt 725) beispielsweise als dominante Farben 1040 gespeichert werden.
-
In Schritt 370 können die dominanten Farben, die in Schritt 360 gespeichert wurden, für alle Fotos erzielt werden, und in Schritt 375 können die Fotos nach dominanten Farben gruppiert werden. Das Gruppieren nach dominanter Farbe kann unabhängig vom Gruppieren nach Ähnlichkeit erfolgen. In Schritt 380 können die Farbgruppen beispielsweise als Teil der Fotogruppen 1010 (oder in einer getrennten Gruppierung) gespeichert werden.
-
Wie zuvor besprochen, ist 4 ein Ablaufschema, das ein Detail eines Prozesses abbildet, der in 2 abgebildet ist, bei dem die besten Bilder in jeder Gruppe ausgewählt werden und bei dem die nicht ausgewählten Fotos innerhalb jeder Gruppe maskiert werden. Der in 4 abgebildete Prozess kann beispielsweise durch die Gruppier- und Auswahlroutine ausgeführt werden. In 4 werden die Schritte 405 bis 455 mit Bezug auf jedes Foto ausgeführt.
-
In Schritt 410 kann die Unschärfesicherheit, „BC”, und/oder das Unschärfeausmaß, „BE”, beispielsweise an einer einfarbigen Version der Fotos bestimmt werden. Die BC ist im Allgemeinen ein Verhältnis, das misst, ob das Foto insgesamt unscharf ist, während das BE ein Verhältnis ist, das misst, wie viel von dem Foto gegebenenfalls unscharf ist (BE betrachtet die Kantenpunkte in dem Foto und bestimmt das Verhältnis von unscharfen Kanten zu scharfen Kanten). Es gibt zahlreiche Möglichkeiten, BC und BE abzuleiten; ein Beispiel wird in „Blur Detection for Digital Images Using Wavelet Transform” gezeigt, wobei dieser Artikel in einer Informationsoffenlegungserklärung eingereicht wird, die mit den vorliegenden Unterlagen verknüpft ist. Eine Kurzdarstellung dieses Beispiels besteht darin, dass drei Iterationen der Haar-Wavelet-Transformation an den skalaren Helligkeitswerten der Pixel in einem Bild ausgeführt werden, wie etwa aus einer einfarbigen Version eines Fotos, um Pixel mit hoher Energie in drei verschiedenen Maßstäben zu finden und ihnen Werte zuzuteilen. Diese Werte werden verwendet, um Pixel als Kantenpunkte oder Nicht-Kantenpunkte einzustufen. Dann wird ein zweiter Testsatz verwendet, um die Kantenpunkte als Bestandteil einer unscharfen Kante oder einer scharfen Kante einzustufen. Die Verhältnisse von diversen Kategorien bestimmen die Ausgabewerte. Die BC- und/oder BE-Werte können beispielsweise als BC-BE 1045 in dem Datenbestand 1000 gespeichert werden.
-
In Schritt 415 werden der Wert der Anpassungsfaktoren, wie etwa Brennweite, Tageszeit und Verschlusszeit, wie etwa aus den Fotometadaten erzielt (in den Figuren ebenfalls als Brennweite, Verschlusszeit und Zeit abgebildet). Die Anpassungsfaktoren können das Vorkommen von Unschärfe in Fotos beeinflussen und können eine menschliche Toleranz für Unschärfe in einem Foto betreffen. In Schritt 420 können die Anpassungsfaktoren verwendet werden, um die BC- und/oder BE-Werte zu gewichten. Beispielsweise kann ein Foto mit einer kurzen Brennweite eine Makroaufnahme einer Blume sein. Viele Abschnitte des Fotos können unscharf sein, doch ein kleiner Abschnitt, beispielsweise die Staubgefäße der Blume, können scharf eingestellt sein. Das Foto kann sehr schön anzusehen sein. Die kurze Brennweite kann beispielsweise in einen Zahlenwert von weniger als eins umgewandelt werden, wobei der Zahlenwert dann mit dem BC- und/oder BE-Wert multipliziert wird, um das Ergebnis zu verringern (oder der Anpassungsfaktor kann anderweitig umgesetzt werden, um eine größere Unschärfetoleranz auf Grund der Brennweite auszugleichen). Ähnlich können Fotos, die bei Nacht aufgenommen werden, eine größere Unschärfe aufweisen, weil die Blendenöffnung weit ist und/oder weil die Verschlusszeit gering ist; Fotos, die bei Nacht aufgenommen werden, können interessant sein oder wichtige Informationen enthalten, unabhängig davon, dass sie unschärfer sind, was zu einer größeren Toleranz für Unschärfe bei Nachtaufnahmen führt. Folglich kann die Tageszeit beispielsweise in einen Zahlenwert von weniger als eins umgewandelt werden, für die Tageszeiten, die nach Sonnenuntergang und vor Sonnenaufgang liegen, wobei der Zahlenwert mit dem BC- und/oder BE-Wert multipliziert wird, um das Ergebnis zu verringern (oder der Anpassungsfaktor kann anderweitig umgesetzt werden, um eine größere Unschärfetoleranz auf Grund der Tageszeit, zu der das Foto aufgenommen wurde, auszugleichen). Der Anpassungsfaktor für die Tageszeit kann die Länge des Tages an der Örtlichkeit berücksichtigen, an der das Foto aufgenommen wurde.
-
In Schritt 425 kann eine Bestimmung erfolgen, ob der oder die angepasste(n) BC- und/oder BE-Wert(e) über oder unter einer Schwelle liegt bzw. liegen. Wenn der oder die Wert(e) über der Schwelle liegt bzw. liegen, dann kann das Foto in Schritt 430 maskiert werden. Das Maskieren eines Fotos kann dadurch erfolgen, dass ein Wert in den Fotometadaten oder in der Fotogruppe eingestellt wird, wobei dieser Wert beispielsweise von der Fotoanwendung erkannt wird und bewirkt, dass das Foto nicht mehr in einem Album oder Verzeichnis innerhalb der Benutzerschnittstelle der Fotoanwendung gezeigt wird, oder bewirkt, dass das Foto nicht als Bestandteil der Fotogruppe gezeigt wird, wenn die Fotogruppe wiedergegeben wird. Unabhängig davon, dass das Foto maskiert sein kann, kann es in anderen Ansichten der Fotos sichtbar gemacht werden, wie etwa in einer Ansicht, die alle Fotos zeigt. Wenn der oder die Wert(e) in Schritt 425 nicht über der Schwelle liegt bzw. liegen, dann kann das Foto nicht maskiert werden.
-
In Schritt 500 können rO und rU bestimmt werden; wobei rO im Allgemeinen ein Faktor ist, der beschreibt, ob ein Foto überbelichtet ist, wobei rU im Allgemeinen ein Faktor ist, der beschreibt, ob ein Foto unterbelichtet ist. Ein Beispiel eines Prozesses zum Bestimmen von rO und rU ist in 5 abgebildet. Mit Bezug auf 5 kann in Schritt 510 die Gesamtanzahl von Pixeln in einem Foto erzielt werden. In Schritt 515 wird die Anzahl von einfarbigen Pixeln mit einem Luminanzwert, der größer als eine Schwelle, T2, ist, erzielt. T2 wird ausgewählt, um in der Nähe des maximalen Luminanzwertes eines Pixels zu liegen. In Schritt 520 wird die in Schritt 515 erzielte Zahl durch die Zahl geteilt, die in Schritt 510 erzielt wurde, um rO zu ergeben. In Schritt 525 wird die Anzahl von einfarbigen Pixeln mit einem Luminanzwert, der kleiner als eine Schwelle, T3, ist, erzielt. T3 wird ausgewählt, um in der Nähe des minimalen Luminanzwertes eines Pixels zu liegen. In Schritt 530 wird die in Schritt 535 erzielte Zahl durch die Zahl geteilt, die in Schritt 510 erzielt wurde, um rU zu ergeben.
-
Zurück zu 4 kann in Schritt 440 die Tageszeit, zu der das Foto aufgenommen wurde, wie etwa die Tageszeit 115, erzielt werden. Die Tageszeit, zu der das Foto aufgenommen wurde, kann ein Anpassungsfaktor sein, der mit Bezug auf rO und rU verwendet wird. Ähnlich wie die Anpassungsfaktoren, die mit Bezug auf BE und BC verwendet werden, können Menschen für unterbelichtete Fotos, die bei Nacht aufgenommen wurden, und für überbelichtete Fotos, die bei Tag aufgenommen wurden, toleranter sein. Die Tageszeit, die gegebenenfalls um die Tageslichtmenge auf dem Breitengrad, wo das Foto aufgenommen wurde (falls bekannt), korrigiert wurde, kann in einen Zahlenwert umgewandelt werden, wobei dieser Zahlenwert mit rO und/oder rU multipliziert wird, um den Wert von rO und/oder rU zu erhöhen oder zu verringern. In Schritt 445 können die Werte von rO und/oder rU mit den soeben besprochenen Anpassungsfaktoren angepasst werden.
-
In Schritt 450 kann eine Gesichtsanalyse an dem Foto ausgeführt werden. Die Gesichtsanalyse kann Werte wiedergeben, die angeben, ob ein Gesicht in dem Foto ermittelt wurde, ob offene oder geschlossene Augen ermittelt wurden, ob das Gesicht zur Kamera gewandt ist, ob eine Brille, Gesichtshaar und ähnliches in dem Foto ermittelt werden. Die Ergebnisse der Gesichtsanalyse können beispielsweise in dem Datenbestand 1000 als Gesichtsdaten 1055 gespeichert werden.
-
Die Schritte 460 bis 490 sind Schritte, die von der Gruppier- und Auswahlvorrichtung mit Bezug auf alle Fotos innerhalb der getrennten Ähnlichkeitsgruppen, wie etwa der Fotogruppen (die Fotos in einer Fotogruppe wurden von der Gruppier- und Auswahlvorrichtung als ähnliches Motiv bestimmt), ausgeführt werden. In Schritt 465 kann die Gruppier- und Auswahlvorrichtung das Foto auswählen, das den besten BE- und/oder BC-Wert aufweist (bei diesem Beispiel das Foto mit dem niedrigsten BE- und/oder BC-Wert). In Schritt 470 kann die Gruppier- und Auswahlvorrichtung das Foto auswählen, das den besten rO- und/oder rU-Wert aufweist.
-
In Schritt 475 kann basierend auf den Gesichtsdaten 1055 eine Bestimmung erfolgen, ob es sich in den Fotos in der beurteilten Fotogruppe um ein Gesicht handelt oder nicht. Falls in den Fotos in der gerade aktuellen Fotogruppe, die beurteilt wird, ein Gesicht vorhanden war, dann kann in Schritt 480 die Gruppier- und Auswahlvorrichtung das oder die Foto(s) auswählen (es kann mehr als ein Foto ausgewählt werden), das bzw. die offene Augen, ein Lächeln aufweist bzw. aufweisen, und/oder das bzw. die der Kamera deutlicher zugewandt ist bzw. sind.
-
In Schritt 485 kann die Gruppier- und Auswahlvorrichtung die nicht ausgewählten Fotos maskieren. Wie in Schritt 430, kann das Maskieren eines Fotos dadurch erfolgen, dass ein Wert in den Fotometadaten oder in der Fotogruppe eingestellt wird, wobei dieser Wert beispielsweise von der Fotoanwendung erkannt wird und bewirkt, dass das Foto nicht mehr in einem Album oder Verzeichnis innerhalb der Benutzerschnittstelle der Fotoanwendung gezeigt wird, oder bewirkt, dass das Foto nicht als Bestandteil der Fotogruppe gezeigt wird, wenn die Fotogruppe wiedergegeben wird. Unabhängig davon, dass das Foto maskiert ist, kann es in anderen Ansichten der Fotos sichtbar gemacht werden, wie etwa in einer Ansicht, die alle Fotos zeigt.
-
9 ist ein Funktionsblockdiagramm einer beispielhaften Server-Rechenvorrichtung („GS-Server”) und einigen Datenstrukturen und/oder Komponenten derselben. Bei einigen Ausführungsformen kann die Rechenvorrichtung 900 eine viel größere Anzahl von Komponenten umfassen, als in 9 gezeigt. Es ist jedoch nicht notwendig, dass alle diese im Allgemeinen herkömmlichen Komponenten gezeigt werden, um eine beispielhafte Ausführungsform zu offenbaren. Wie in 9 gezeigt, umfasst die Rechenvorrichtung 900 eine Netzwerkschnittstelle 905 zum Anschluss an das Netzwerk 150.
-
Die Rechenvorrichtung 900 umfasst auch mindestens eine Verarbeitungseinheit 945, einen Speicher 925 und eine optionale Anzeige 910, die alle zusammen mit der Netzwerkschnittstelle 905 über einen Bus 920 zusammengeschaltet sind. Der Speicher 925 umfasst im Allgemeinen einen Arbeitsspeicher („RAM”), einen Festspeicher („ROM”) und eine permanente Massenspeichervorrichtung, wie etwa eine Festplatte oder einen SDRAM (synchronen dynamischen Arbeitsspeicher). Der Speicher 925 speichert Programmcode für Software-Routinen, wie beispielsweise die Gruppier- und Auswahlroutine 200, einen Web-Server, einen Browser sowie E-Mail-Server, Client-Anwendungen und Datenbankanwendungen. Zusätzlich speichert der Speicher 925 auch ein Betriebssystem 930. Diese Software-Komponenten können von einem nicht vorübergehenden computerlesbaren Medium 940 in den Speicher 925 der Rechenvorrichtung 900 unter Verwendung eines Laufwerkmechanismus (nicht gezeigt) geladen werden, der mit einem nicht vorübergehenden computerlesbaren Speichermedium 940 verknüpft ist, wie etwa mit einer Diskette, einem Band, einem DVD/CD-ROM-Laufwerk, einer Speicherkarte oder einem anderen ähnlichen Speichermedium. Bei einigen Ausführungsformen können die Software-Komponenten auch oder stattdessen über einen anderen Mechanismus als einen Laufwerkmechanismus und ein computerlesbares Speichermedium 940 geladen werden (z.B. über eine Netzwerkschnittstelle 905).
-
Die Rechenvorrichtung 900 kann auch Hardware umfassen, die optionale Eingabemöglichkeiten unterstützt, optionale Eingabe 915, wie beispielsweise einen Berührungsbildschirm, eine Tastatur, eine Maus, eine Rollkugel, einen Stift, ein Mikrofon und eine Kamera.
-
Die Rechenvorrichtung 900 umfasst oder kommuniziert auch über einen Bus 920 mit dem Datenbestand 1000, der in 10 ausführlicher abgebildet ist. Bei diversen Ausführungsformen kann der Bus 920 ein Speichernetzwerk („SAN”), einen schnellen seriellen Bus und/oder eine andere geeignete Kommunikationstechnik umfassen. Bei einigen Ausführungsformen kann die Rechenvorrichtung 900 mit dem Datenbestand 1000 über eine Netzwerkschnittstelle 905 kommunizieren.
-
10 ist ein Funktionsblockdiagramm eines Datenbestands in der Rechenvorrichtung aus 9. Diese Figur bildet Datengruppen ab, die von Routinen verwendet werden; diese Datengruppen wurden zuvor besprochen.
-
11 ist ein Funktionsblockdiagramm einer beispielhaften Client-Rechenvorrichtung („Client-Vorrichtung”) und einigen Datenstrukturen und/oder Komponenten derselben. Die Elemente von 11 sind im Allgemeinen die gleichen wie die ähnlich bezeichneten Elemente in 2 (wenn man in dem obigen Text „9” durch „11” ersetzt). Zusätzlich umfasst die in 11 abgebildete Client-Vorrichtung eine Fotoanwendung 1140 (wobei die „Fotoanwendungs-”Routine zuvor besprochen wurde).
-
12 ist ein Funktionsblockdiagramm eines Datenbestands in der Rechenvorrichtung aus 11 und 13. Diese Figur bildet Datengruppen ab, die von Routinen verwendet werden; diese Datengruppen wurden zuvor besprochen.
-
13 ist ein Funktionsblockdiagramm einer beispielhaften mobilen Client-Rechenvorrichtung und einigen Datenstrukturen und/oder Komponenten derselben. Die Elemente von 13 sind im Allgemeinen die gleichen wie die ähnlich bezeichneten Elemente in 9 und 11 (wenn man in dem obigen Text „9” und „11” durch „13” ersetzt). Zusätzlich umfasst die mobile Client-Vorrichtung, die in 13 abgebildet ist, eine Kamera 1350. Obwohl der GS-Server mit einer optionalen Eingabe 915 abgebildet ist, die eine Kamera umfassen kann, ist die mobile Client-Vorrichtung 1300 mit einer Kamera 1350 zusätzlich zur Eingabe 1315 abgebildet.
-
Die obige ausführliche Beschreibung der Ausführungsformen ist nicht dazu gedacht, vollständig zu sein, oder die Offenbarung auf die zuvor offenbarte genaue Form einzuschränken. Obwohl spezifische Ausführungsformen und Beispiele zuvor zur Erläuterung beschrieben wurden, sind diverse gleichwertige Änderungen im Umfang des Systems möglich, wie es der Fachmann verstehen wird. Obwohl beispielsweise Prozesse oder Blöcke in einer bestimmten Reihenfolge dargestellt werden, können alternative Ausführungsformen Routinen, die Operationen aufweisen oder Systeme verwenden, die Blöcke aufweisen, in einer anderen Reihenfolge ausführen, und bestimmte Prozesse oder Blöcke können gelöscht, verschoben, hinzugefügt, unterteilt, kombiniert und/oder geändert werden. Obwohl die Prozesse oder Blöcke manchmal gezeigt werden, wie sie der Reihe nach ausgeführt werden, können diese Prozesse oder Blöcke stattdessen zu verschiedenen Zeiten ausgeführt werden. Ferner sind alle spezifischen Zahlen, die hier erwähnt werden, rein beispielhaft; alternative Umsetzungen können andere Werte oder Bereiche verwenden.