-
Technisches Gebiet
-
Die vorliegende Offenbarung bezieht sich allgemein auf Verfahren und Systeme zum Schätzen von Tiefe innerhalb digitaler Bilder und bezieht sich genauer auf Schätzen von Tiefe innerhalb digitaler Bilder, die mit Hilfe einer herkömmlichen Digitalkamera erfasst wurden.
-
Urheberrechtsvermerk
-
Ein Teil der Offenbarung dieses Patentdokuments enthält Material, welches urheberrechtlichem Schutz unterliegt. Der Inhaber der Verwertungsrechte hat keine Einwände gegen die originalgetreue Wiedergabe durch jedermann des Patentdokuments oder der Patentoffenbarung, wie es bzw. wie sie in der Patentakte oder den Aufzeichnungen des Patent- und Markenamtes erscheint, behält sich aber alle anderen Verwertungsrechte jeder Art vor.
-
Hintergrund
-
Digitalkameras, einschließlich digitaler Spiegelreflexkameras (DSLR) und Digitalkameras, die in Mobilgeräte integriert sind, haben oftmals hochentwickelte Hardware und Software, die es einem Benutzer ermöglicht, digitale Bilder zu erfassen unter Verwendung einer Kombination unterschiedlicher benutzerdefinierter und kameradefinierter Konfigurationseinstellungen. Ein digitales Bild stellt eine digitale Repräsentation einer bestimmten Szene bereit. Ein digitales Bild kann im Nachgang bearbeitet werden, für sich allein oder in Kombination mit anderen Bildern, um aus dem Bild zusätzliche Information abzuleiten. Zum Beispiel kann ein oder können mehrere Bilder verarbeitet werden, um die Tiefe der Objekte zu schätzen, die innerhalb der Szene dargestellt sind, das heißt, die Entfernung jedes Objekts von einem Ort, an dem die Aufnahme aufgenommen wurde. Die Tiefenschätzungen für jedes Objekt in einer Szene, oder möglicher Weise für jedes Pixel innerhalb eines Bildes, sind in einer Datei enthalten, die als eine „Tiefenkarte” bezeichnet wird. Unter anderem können Tiefenkarten verwendet werden, um bestehende Bildeditiertechniken (zum Beispiel Schneiden, Füllen von Löchern, Kopieren in Schichten eines Bildes und so weiter) zu verbessern.
-
Herkömmliche Techniken der Tiefenschätzung beinhalten Rechenmodelle, die auf „Vor-Bilder” angewiesen sind, um die Tiefenkarten-Erzeugung zu leiten. Ein „Vor-Bild” bzw. „image prior” ist ein statistisches Modell, das verwendet wird, um bestimmten Annahmen über den Inhalt oder die Eigenschaften einer Szene Rechnung zu tragen, und wird verwendet, um Tiefenzweideutigkeit aufzulösen, die auftreten kann, wenn ein Bild analysiert wird. Zum Beispiel kann ein Vor-Bild entworfen werden basierend auf der Annahme, dass sich die Tiefe sich über ein Alles-im-Fokus-Bild glatt bzw. gleichmäßig ändert, mit Ausnahme der Stellen, an denen es eine Diskontinuität der Tiefe gibt (zum Beispiel an der Kante oder an dem Umriss eines Objekts innerhalb der Szene). Im Bildbereich kann diese Art von Vor-Bild ausgedrückt werden in Begriffen einer erwarteten Gradientenverteilung über ein Bild. Im Fourier Bereich kann ein vergleichbares Vor-Bild so definiert werden, dass der Betrag an Energie an einer bestimmten jeweiligen Frequenz proportional ist zu dieser Frequenz, potenziert mit einem Exponenten. Die Verwendung eines solchen Typs von Vor-Bild in der Tiefenschätzung kann in einigen Fällen zu guten Ergebnissen führen, wird dabei aber versagen, wenn Diskontinuitäten der Tiefe zwischen Vordergrundobjekten und Hintergrundobjekten nicht innerhalb der Bilddaten eingefangen werden. Die Verwendung generischer Vor-Bilder bei der Tiefenkarten-Erzeugung führt daher zu unpräzisen Tiefenschätzungen, da die zugrunde liegenden Annahmen auf Verallgemeinerungen basieren und nicht notwendiger Weise für alle Bilder zutreffen (zum Beispiel wird die tatsächliche Textur aller Szenen nicht gut übereinstimmen mit dem definierten Vor-Bild).
-
Einige herkömmliche Techniken zum Schätzen von Tiefe innerhalb eines digitalen Bildes erfordern auch die Eingabe von Trainingsdaten, genommen von einem oder von mehreren Bildern unterschiedlicher Szenen, um akkurat eine Tiefenkarte zu erzeugen. Einige Techniken erfordern, dass das Bild, für das die Tiefenkarte erzeugt werden soll, mit einer vordefinierten Blendeneinstellung und einer vordefinierten Fokuseinstellung erfasst wird. Andere Techniken beinhalten einen Vergleich der Eigenschaften mehrerer Bilder, welche von derselben Szene aufgenommen wurden, und können erfordern, dass die mehreren Bilder in einer bestimmten Reihenfolge oder in Übereinstimmung mit vorbestimmten Kombinationen von Blende, Fokus und/oder anderen Kamerakonfigurationseinstellungen erfasst werden. Einige Modelle erfordern auch eine dichte Menge von Bildern, die in Übereinstimmung mit einer vordefinierten Kombination von Einstellungen der Blende, des Fokus und/oder anderer Konfigurationseinstellungen zu erfassen sind, oder mit einer zufällig ausgewählten Kombination von Einstellungen der Blende, des Fokus und/oder anderer Konfigurationseinstellungen.
-
Herkömmliche Techniken der Tiefenschätzung, welche Eigenschaften mehrerer Bilder vergleichen, welche von derselben Szene aufgenommen wurden, vergleichen im Allgemeinen Bildflicken mit „Unschärfe-Kerneln”, um die Tiefe der Bildflicken zu schätzen. Ein Unschärfe-Kernel ist eine Approximation von Außer-Fokus-Unschärfe innerhalb eines Bildes. Herkömmliche Modelle tendieren jedoch oftmals dazu, Unschärfe-Kernel mit größeren Unschärfewerten auszuwählen, insbesondere wenn innerhalb des Bildflickens Rauschen vorhanden ist (das heißt, Information, die von dem Modell nicht berücksichtigt wird). Wenn Unschärfe-Kernel ausgewählt werden, die keine enge Approximation der Unschärfe des Bildflickens darstellen, wird dies zu unpräzisen Tiefenschätzungen führen.
-
Die gegenwärtigen Techniken der Tiefenschätzung können daher unpräzise, ressourcenintensiv, zeitintensiv, kompliziert und unvorhersehbar sein. Dementsprechend ist es wünschenswert, verbesserte Lösungen zum Schätzen der Entfernung von Objekten innerhalb von Bildern, die mit herkömmlichen Digitalkameras aufgenommen wurden, bereitzustellen.
-
Zusammenfassung
-
Es werden Systeme und Verfahren zum Erzeugen von Tiefenkarten aus einer Mehrzahl von Bildern bereitgestellt, die mit Hilfe einer herkömmlichen Digitalkamera erfasst wurden. Die hierin beschriebenen Techniken der Tiefenschätzung beinhalten ein Rechenmodell, das auf einem flachen Vor-Bild (auch als ein „flat prior” bezeichnet) basiert. Die Verwendung eines flachen Vor-Bilds bedeutet tatsächlich, dass keine vorherigen Annahmen über den Inhalt oder die Eigenschaften der Szene getroffen werden. Ein flaches Vor-Bild wird in das Rechenmodell inkorporiert, indem der Beitrag eines Alles-im-Fokus Bildes (das heißt, wie das Bild aussehen würde, wenn es in Gänze im Fokus wäre), das in herkömmlichen Rechenmodellen enthalten ist, ausgeklammert oder marginalisiert wird.
-
Ohne vorherige Annahmen darüber, wie die Szene aussehen sollte, berechnen die hierin beschriebenen Techniken der Tiefenschätzung iterativ eine Tiefenwahrscheinlichkeit für einen Bildflicken über einen diskreten Bereich von Tiefenhypothesen (das heißt, möglichen Tiefen). Nachdem alle Tiefenhypothesen evaluiert wurden, wird die Tiefenhypothese, welche die größte Tiefenwahrscheinlichkeit ergibt, als die geschätzte Tiefe des Bildflickens ausgewählt. Das Evaluieren der Tiefenwahrscheinlichkeit unter Verwendung eines flachen Vor-Bilds wie hierin beschrieben liefert eine verbesserte Präzision, da die Tiefen-Likelihood-Funktion darauf beruht, wie die in den Bilddaten repräsentierte Szene tatsächlich aussieht, anstatt auf Annahmen darüber zu beruhen, wie die Szene aussehen sollte. Die iterative Evaluierung wird für alle Bildflicken des Bildes wiederholt, bis eine vollständige Tiefenkarte für das Bild erzeugt ist. Auf diese Weise wird die Tiefe jedes Bildflickens unabhängig von allen anderen Bildflicken desselben Bildes evaluiert. Als ein Ergebnis ist die Tiefenschätzung für jeden gegebenen Bildflicken präziser, wenn verglichen mit herkömmlichen Techniken, da sie nicht durch dessen umgebende Bildflicken beeinflusst wird.
-
Die hierin beschriebenen Techniken der Tiefenschätzung beinhalten auch Normalisierungsverfahren, die verwendet werden, um Faktoren wie Rauschen zu berücksichtigen, die eine Tendenz zu Unschärfe-Kerneln mit größeren Unschärfewerten erzeugen könnten. Dies führt zu einem robusteren Verfahren, um akkurate Schätzungen der Tiefe zu finden, selbst in der Gegenwart von Rauschen. Die hierin beschriebenen Techniken der Tiefenschätzung können auch angepasst werden, um Veränderungen von Beleuchtungsbedingungen und Szenendynamiken zu berücksichtigen. Solche Techniken ermöglichen die Erzeugung präziserer Tiefenschätzungen in Tiefenkarten.
-
Die hierin beschriebenen Techniken der Tiefenschätzung basieren auf Kalibrierungsdaten für die Digitalkamera, die verwendet wird, um die Bilder zu erfassen. Die Kalibrierungsdaten werden verwendet, um eine Zuordnung von Kalibrierungseinstellungen (zum Beispiel Blendeneinstellungen und Fokuseinstellungen) zu Unschärfe-Kerneln zu bestimmen. Unschärfe-Kernel repräsentieren eine Approximation von Unschärfe in einem Bild. Insbesondere evaluieren die hierin beschriebenen Techniken der Tiefenschätzung iterativ die Tiefe eines Bildflickens über eine diskrete Menge von Tiefenhypothesen unter Verwendung von entsprechenden Unschärfe-Kerneln, die durch die Kalibrierungs-basierte Zuordnung bestimmt werden.
-
Die hierin beschriebenen Techniken der Tiefenschätzung werden verwendet, um Mengen von Bildern zu analysieren, die von dem selben Standpunkt aus unter Verwendung unterschiedlicher Kamerakonfigurationseinstellungen erfasst wurden, wie einer Blendeneinstellung und einer Fokuseinstellung, die durch den Bediener willkürlich ausgewählt sein mögen. Der Prozess des Erfassens der Bilder ist daher keinen Beschränkungen unterworfen, indem kein Muster oder keine Kombination von Bildern oder Kamerakonfigurationseinstellungen erforderlich ist. Ein Minimum von zwei solchen Bildern wird gemäß den hierin beschriebenen Techniken der Tiefenschätzung verarbeitet, um eine Tiefenkarte zu erzeugen, die eine größere Präzision bietet als sie durch die herkömmlichen Techniken geboten wird.
-
Diese illustrativen Beispiele werden nicht angegeben, um die Offenbarung zu beschränken oder zu definieren, sondern um Beispiele zu geben, welche dem Verständnis derselben dienlich sind. Zusätzliche Beispiele werden in der detaillierten Beschreibung angegeben und diskutiert, und eine nähere Beschreibung ist dort gegeben.
-
Kurze Beschreibung der Figuren
-
Die Akte des Patents oder der Anmeldung umfasst zumindest eine Zeichnung, die farbig ausgeführt ist. Kopien der Veröffentlichungsschrift dieses Patents oder der Patentanmeldung mit farbigen Zeichnungen werden auf Anforderung durch das Amt und gegen Entrichtung einer gegebenenfalls notwendigen Gebühr bereitgestellt.
-
Diese und andere oben beschriebenen Merkmale, Beispiele und Vorteile der vorliegenden Offenbarung werden besser verstanden werden beim Lesen der folgenden detaillierten Beschreibung mit Bezug auf die beigefügten Zeichnungen, in denen:
-
1 ein Blockdiagramm ist, das ein Beispiel einer Tiefenerzeugungsfunktionseinheit zum Implementieren von Techniken, die sich auf das Schätzen von Tiefe innerhalb digitaler Bilder beziehen, gemäß zumindest einer Ausführungsform zeigt;
-
2 ein Diagramm ist, das eine beispielhafte Umgebung zum Implementieren von Techniken, die sich auf das Schätzen von Tiefe innerhalb digitaler Bilder beziehen, gemäß zumindest einer Ausführungsform zeigt;
-
3 ein Diagramm ist, das eine beispielhafte Implementierung bestimmter Techniken, die sich auf das Schätzen von Tiefe innerhalb digitaler Bilder beziehen, gemäß zumindest einer Ausführungsform zeigt;
-
4 ein Flussdiagramm ist, das ein beispielhaftes Verfahren zum Implementieren von Techniken, die sich auf das Schätzen von Tiefe innerhalb digitaler Bilder beziehen, gemäß zumindest einer Ausführungsform zeigt;
-
5 ein Flussdiagramm ist, das ein beispielhaftes Verfahren zum Implementieren von Techniken, die sich auf das Schätzen von Tiefe innerhalb digitaler Bilder beziehen, gemäß zumindest einer Ausführungsform zeigt; und
-
6 ein Diagramm ist, das eine beispielhafte Netzwerkumgebung zum Implementieren von Techniken, die sich auf das Schätzen von Tiefe innerhalb digitaler Bilder beziehen, gemäß zumindest einer Ausführungsform zeigt.
-
Detaillierte Beschreibung
-
Es werde computerimplementierte Systeme und Verfahren zum Schätzen von Tiefe innerhalb von digitalen Bildern offenbart. Insbesondere wird eine Tiefenkarte aus einer Mehrzahl von Bildern erzeugt, die mit einer herkömmlichen Digitalkamera erfasst wurden, wie einer digitalen Spiegelreflexkamera, einer Digitalkamera, die in eine mobile Rechenvorrichtung integriert ist, oder irgendeiner anderen Digitalkamera oder Abbildungsvorrichtung. Es werden mindestens zwei Bilder aufgenommen von im Wesentlichen demselben Standort, aber diese unterscheiden sich voneinander, da sie mit unterschiedlichen Kombinationen von Blendeneinstellungen und Fokuseinstellungen aufgenommen werden. In einigen Beispielen können die Blendeneinstellungen und Fokuseinstellungen durch den Bediener willkürlich ausgewählt werden, wie beschrieben werden wird. Die Differenzen im Niveau der Unschärfe über die Bilder hinweg, die von der unterschiedlichen Kombination von Blenden- und Fokuseinstellungen verursacht werden, werden analysiert, um die Tiefenkarte zu bestimmen.
-
Die erfinderischen Techniken der Techniken der Tiefenschätzung beinhalten eine Tiefen-Likelihood-Funktion, die verwendet wird, um die Tiefe eines Bildflickens unter Verwendung von Unschärfe-Kerneln zu analysieren. Die Unschärfe-Kernel für ein partikuläres Bild werden aus einer Zuordnung von Kalibrierungseinstellungen (zum Beispiel Blende und Fokus) und Tiefe zu Unschärfe-Kerneln identifiziert. Die Zuordnung wird abgeleitet aus einer Kalibrierung der partikulären Kamera, die verwendet wurde, um das zu analysierende Bild zu erfassen. Die Unschärfe-Kernel sind eine Approximation von Unschärfe innerhalb des Bildes. Die Tiefen-Likelihood-Funktion verwendet Unschärfe-Kernel, um entsprechende Bildflicken aus der Menge von eingegebenen Bildern unter Verwendung eines flachen Vor-Bilds im Frequenzbereich zu analysieren, was bedeutet, dass der Beitrag eines Alles-im-Fokus Bildes effektiv ausgeklammert wird, indem eine Varianz des Frequenzinhalts von unendlich angenommen wird. Diese Likelihood-Funktion erlaubt daher, dass die Tiefen von Bildflicken geschätzt werden, ohne ein Alles-im-Fokus Bild zu berücksichtigen, ohne auf bestimmte Annahmen über andere ähnliche Szenen, die aus Trainingsdaten abgeleitet werden, angewiesen zu sein, und ohne Berücksichtigung, wie die Tiefe der Szene räumlich variiert.
-
Für einen gegebenen Bildflicken wird die Tiefen-Likelihood-Funktion iterativ über einen diskreten Bereich von Tiefenhypothesen (das heißt, mögliche Tiefen) evaluiert, um eine Tiefenwahrscheinlichkeit für den Bildflicken zu bestimmen. Wie hierin verwendet, bezieht sich „iteratives” Evaluieren auf ein sequentielles Evaluieren und/oder ein paralleles Evaluieren. Die Tiefenhypothese, welche die größte Tiefenwahrscheinlichkeit liefert, wird bestimmt, die geschätzte Tiefe für den Bildflicken zu sein. Beim Evaluieren jedes Bildflickens eines ersten Bildes wird ein entsprechender Bildflicken eines zweiten Bildes identifiziert. Als Teil der Evaluierung wird der Unschärfe-Kernel für das erste Bild mit dem Bildflicken aus dem zweiten Bild gefaltet, und der Unschärfe-Kernel für das zweite Bild wird mit einem entsprechenden Bildflicken aus dem ersten Bild gefaltet. Das Ergebnis der Evaluierung ist eine Tiefenwahrscheinlichkeit aus dem Bildflicken. Die Tiefen-Likelihood-Funktion wird verwendet, um alle entsprechenden Bildflicken innerhalb der eingegebenen Bilder zu evaluieren, bis eine Tiefenschätzung für jedes entsprechende Pixel jedes Bildes bestimmt wurde. Da die Tiefen-Likelihood-Funktion verwendet wird, um Tiefenhypothesen für jeden Bildflicken unabhängig von anderen Bildflicken zu evaluieren, wird die Tiefenschätzung für einen betreffenden Bildflicken nicht durch die diesen umgebenden Bildflicken beeinflusst.
-
Die hierin beschriebenen Techniken der Tiefenschätzung beinhalten einen Normalisierungsschritt, der verwendet wird, um Faktoren Rechnung zu tragen, die eine Tendenz hin zu Unschärfe-Kerneln mit großen Unschärfe-Werten erzeugen könnten. Ein allgegenwärtiger Faktor ist Rauschen und der Einfluss von Rauschen auf die Auswahl von Unschärfe-Kerneln wird durch das Normalisieren vermindert. Dies macht es möglich, dass die Tiefen-Likelihood-Funktion unter Verwendung von Unschärfe-Kerneln mit Tiefenwerten evaluiert wird, die am geeignetsten sind für die Tiefenhypothesen für einen partikulären Flicken. Dies führt zu einem robusteren Verfahren, um akkurate Schätzungen der Tiefe zu finden, selbst wenn Rauschen vorhanden ist.
-
Die hierin beschriebenen Techniken der Tiefenschätzung können auch angepasst werden, um Veränderungen von Beleuchtungsbedingungen und Änderungen in Szenedynamik über mehrere entsprechende Bilder hinweg zu berücksichtigen. Diese Änderungen können berücksichtigt werden, indem ein Bias und eine Verstärkung eines zweiten Bildflickens angepasst werden im Vergleich zu einem ersten Bildflicken. Dies kann erreicht werden, indem Veränderungen von Beleuchtungsbedingungen als eine lokale Kontraständerung und als ein Helligkeitsoffset für den geänderten Bildflicken modelliert werden. Die Tiefen-Likelihood-Funktion kann dann angepasst werden, um derart modellierte Veränderungen von Beleuchtungsbedingungen miteinzubeziehen. Auf eine ähnliche Weise können Bewegungen von Objekten innerhalb einer Szene berücksichtigt werden, indem eine Technik des optischen Flusses verwendet wird, um eine neue Stelle von Pixeln in einem zweiten Bild zu schätzen im Vergleich mit einer Stelle der entsprechenden Pixel in einem ersten Bild. Derartige Techniken beinhalten auch ein Transformieren von Bildflicken in den Fourier Bereich, in dem diese als eine Menge von Frequenzen und Phasen repräsentiert werden, und ein Vergleichen der Beträge aller Bildflicken, während die Phasen ignoriert werden. Derartige Techniken ermöglichen präzisere Tiefenschätzungen in Tiefenkarten. In einigen Beispielen können sowohl eine Technik des optischen Flusses als auch eine Technik im Fourier Bereich zusammen verwendet werden, um Bewegungen von Objekten innerhalb einer Szene zu berücksichtigen. Die Technik des optischen Flusses kann vor dem Evaluieren der Tiefen-Likelihood-Funktion ausgeführt werden, und die Technik im Fourier Bereich kann als Teil des Evaluierens der Tiefen-Likelihood-Funktion ausgeführt werden.
-
In einem Beispiel wird ein erstes Bild einer Szene mit einer Digitalkamera aufgenommen, die eine erste Konfigurationseinstellung hat. Die Konfigurationseinstellung beinhaltet eine Fokuseinstellung und eine Blendeneinstellung. Als nächstes wird ein zweites Bild der Szene von demselben Standpunkt aus aufgenommen, wobei die Digitalkamera eine zweite Konfigurationseinstellung hat. Die zweite Konfigurationseinstellung unterscheidet sich in wenigstens einer Beziehung (zum Beispiel der Fokuseinstellung und/oder der Blendeneinstellung) im Vergleich zur ersten Konfigurationseinstellung. In einigen Beispielen wählt der Benutzer die Konfigurationseinstellungen willkürlich, zufällig oder systematisch aus. In anderen Beispielen ist die Digitalkamera konfiguriert, dem Benutzer bevorzugte oder vorgeschlagene Konfigurationseinstellungen anzuzeigen, die vorbestimmt sein können (zum Beispiel für alle Szenen oder für bestimmte Arten von Szenen) oder die in Echtzeit bestimmt werden können, indem die abzubildende Szene analysiert wird. In einigen Beispielen ist die Digitalkamera konfiguriert, die Konfigurationseinstellungen für das erste Bild und das zweite Bild willkürlich, zufällig oder systematisch zu bestimmen oder vorzubestimmen, und kann auch programmatisch das erste Bild aufnehmen, die Konfigurationseinstellungen ändern und dann das zweite Bild aufnehmen. In einigen Beispielen erhält der Benutzer die Konfigurationseinstellungen und der Benutzer passt die Einstellungen der Digitalkamera in Übereinstimmung mit den Konfigurationseinstellungen an und erfasst das erste Bild und das zweite Bild. Das zweite Bild wird von ungefähr demselben Standpunkt aus aufgenommen wie das erste Bild. Die Bilddateien, die dem ersten Bild und dem zweiten Bild entsprechen, werden dann in Übereinstimmung mit hierin beschriebenen Techniken analysiert. Diese Analyse kann durch eine geeignet ausgestattet und konfigurierte Kamera ausgeführt werden, oder die Bilddateien können zu einer Rechenvorrichtung transferiert werden, die konfiguriert ist, die Analyse auszuführen.
-
Eine Tiefenkarte, die unter Verwendung der hierin beschriebenen Techniken der Tiefenschätzung erzeugt wurde, beinhaltet Tiefeninformation, welche die Entfernung von Objekten in einer Szene von der Digitalkamera repräsentiert (das heißt, einem Ort in der realen Welt, von dem aus die Aufnahmen aufgenommen wurden). Entfernungwerte für Pixel der Tiefenkarte können RGB Pixeln der Bilder entsprechen. Tiefenkarten können zum Beispiel verwendet werden, um bestehende Bildeditiertechniken zu verbessern. Zum Beispiel kann Tiefeninformation für ein Bild verwendet werden, um genauer zwischen Vordergrundobjekten und Hintergrundobjekten in einer Szene zu unterscheiden. Eine solche Unterscheidung kann relevant für das Auswählen von Objekten (ob sie im Vordergrund oder im Hintergrund sind) innerhalb des Bildes sein. Als ein illustratives Beispiel kann ein Bild einer Szene ein Kind (zum Beispiel ein Vordergrundelement) zeigen, das vor einem Baum (zum Beispiel ein Hintergrundelement) steht. Ein Benutzer, der das Kind von der Szene ausschneiden möchte, kann dies anzeigen, indem er einen Teil des Kindes unter Verwendung einer Bildeditieranwendung auswählt. Die Bildeditieranwendung kann Tiefeninformation verwenden, die mit dem Bild assoziiert ist, zusätzlich zu Auswahlhinweisen wie Farbe und Textur, um einen Umriss des auszuschneidenden Kindes zu erzeugen.
-
Mit Bezug nun zu den Figuren ist in 1 ein Blockdiagramm 100 zum Implementieren von Techniken gezeigt, die sich auf das Schätzen von Tiefe innerhalb digitaler Bilder gemäß zumindest einem Beispiel beziehen. Das Blockdiagramm 100 beinhaltet eine Tiefenerzeugungsfunktionseinheit 102. Wie hierin verwendet bezieht sich eine ”Funktionseinheit” auf einen Satz von Anweisungen, die in Software verkörpert sind, welche, wenn sie auf einem Prozessor ausgeführt werden, den Prozessor dazu veranlassen, eine oder mehrere Funktionen auszuführen. Insbesondere ist die Tiefenerzeugungsfunktionseinheit 102 konfiguriert, die Tiefen-Likelihood-Funktion zu evaluieren, zusammen mit allen Variationen der Tiefen-Likelihood-Funktion, die hierin beschrieben sind. Die Tiefenerzeugungsfunktionseinheit 102 ist konfiguriert, Bilder 104(1) bis 104(N) zu empfangen. In einigen Beispielen wurden die Bilder 104(1) bis 104(N) zuvor unter Verwendung einer Digitalkamera erfasst. Die Bilder 104(1) bis 104(N) zeigen eine Szene, die eine Mehrzahl von Objekten enthält. Wie dargestellt enthält jedes der Bilder 104(1) bis 104(N) entsprechende Konfigurationsinformation 106(1) bis 106(N). In einigen Beispielen stellt die Konfigurationsinformation 106(1) bis 106(N) Details über Einstellungen der Digitalkamera bereit, die verwendet wurden, um die Bilder 104(1) bis 104(N) zu erfassen, und die in Form von Metadaten in Verbindung mit den Bildern 104(1) bis 104(N) gespeichert sind. Zum Beispiel kann die Konfigurationsinformation 106(1) bis 106(N) Details über Blendeneinstellungen der Digitalkamera und Details über Fokuseinstellungen der Digitalkamera enthalten. Die Blendeneinstellungen beziehen sich auf die Menge an Licht, die in die Digitalkamera gelassen wurde, als die Bilder 104(1) bis 104(N) erfasst wurden. Die Blende einer Digitalkamera kann angepasst werden unter Verwendung eines Lamellenmechanismuses, welcher die Menge an Licht anpasst. Die Fokuseinstellungen beziehen sich auf eine Entfernung einer Fokusebene von der Digitalkamera und können entsprechend angepasst werden.
-
In einigen Beispielen unterscheidet sich die Konfigurationsinformation 106(1) für das Bild 104(1) von der Konfigurationsinformation 106(N) für das Bild 104(N), weil das Bild 104(1) unter Verwendung einer ersten Einstellungskonfiguration erfasst wurde und das Bild 104(N) unter Verwendung einer zweiten Einstellungskonfiguration erfasst wurde. Wie die erste Einstellungskonfiguration und die zweite Einstellungskonfiguration ausgewählt werden, hängt von der Implementierung der Tiefenerzeugungsfunktionseinheit 102 ab. Wenn zum Beispiel die Tiefenerzeugungsfunktionseinheit 102 in der Digitalkamera implementiert ist, bestimmt und ändert die Digitalkamera programmtechnisch die Einstellungen oder zeigt dem Benutzer bevorzugte oder vorgeschlagene Einstellungen zur manuellen Einstellung an. Wenn die Tiefenerzeugungsfunktionseinheit 102 in einer von der Digitalkamera getrennten Rechenvorrichtung implementiert ist, zeigt die Rechenvorrichtung die Einstellungen dem Benutzer der Digitalkamera an, oder veranlasst die Anzeige der Einstellungen für den Benutzer der Digitalkamera. Der Benutzer der Kamera passt dann die Einstellungen der Kamera entsprechend an. In jedem dieser Beispiele, und in anderen Beispielen, werden die Einstellungen willkürlich, zufällig, oder systematisch ausgewählt, entweder durch den Benutzer oder programmtechnisch mit Hilfe einer Auswahlfunktionseinheit (nicht dargestellt), oder auf irgendeine andere geeignete Weise. In einigen Beispielen werden die Bilder 104(1) bis 104(N) unter Verwendung einer zufälligen Menge von Konfigurationseinstellungen erfasst. Zum Beispiel können die Bilder 104(1) bis 104(N) auch unter Verwendung einer zufälligen Menge von Konfigurationseinstellungen erfasst werden, wenn die Bilder 104(1) bis 104(N) ohne Bezug zu einem Fokusstapel erfasst werden. Zum Beispiel ist ein Fokusstapel eine Menge von Bildern, die mit einer Fokuseinstellung und unterschiedlichen Blendeneinstellungen für jedes Bild der Menge aufgenommen werden. Die Bilder 104(1) bis 104(N) können auch ohne Bezug zu einem Blendenstapel erfasst werden. Ein Blendenstapel ist eine Menge von Bildern, die mit einer Blendeneinstellung und einer unterschiedlichen Fokuseinstellung für jedes Bild der Menge aufgenommen wurden. In einigen Beispielen werden die Bilder 104(1) bis 104(N) erfasst, ohne ein vorbestimmtes Abtastmuster zu berücksichtigen. Wie in dem vorstehenden Beispiel diskutiert werden die hierin beschriebenen Techniken der Tiefenschätzung unter Verwendung von zwei oder mehr Bildern auf eine Weise implementiert, die unabhängig von Konfigurationseinstellungen der Digitalkamera ist, die zum Erfassen der Bilder verwendet wird, so lange zumindest zwei unterschiedliche Bilder von im Wesentlichen demselben Standpunkt aus erfasst werden unter Verwendung zweier unterschiedlicher Konfigurationseinstellungen.
-
In einigen Beispielen wurden ein Kameragehäuse und eine Linse der Digitalkamera, die verwendet wurde, um die Bilder 104(1) bis 104(N) zu erfassen, zuvor kalibriert. Bestimmte Kalibrierungstechniken umfassen eine Zuordnung von Konfigurationseinstellungen (zum Beispiel Blendeneinstellungen und Fokuseinstellungen) und Tiefe zu Unschärfe-Kerneln.
-
Derartige Kalibrierungstechniken ermöglichen es der Tiefenerzeugungsfunktionseinheit 102, die geeigneten Unschärfe-Kernel auszuwählen, um Tiefenschätzungen unter Verwendung der Bilder 104(1) bis 104(N) zu machen. In einigen Beispielen werden zumindest einige der Bilder 104(1) bis 104(N) von im Wesentlichen demselben Standpunkt aus erfasst unter Verwendung unterschiedlicher Kombinationen von Kameragehäusen und Linsen unterschiedlicher Digitalkameras, die auf ähnliche Weise kalibriert wurden. In einigen Beispielen ist daher die Zuordnung von Konfigurationseinstellungen und Tiefe zu Unschärfe-Kerneln einzigartig für eine Kombination von einem Kameragehäuse und einer Linse und für mehrere Kombinationen von Kameragehäusen und Linsen. In diesem Beispiel berücksichtigt die Tiefenerzeugungsfunktionseinheit 102 die Ähnlichkeiten und Unterschiede in diesen Zuordnungen, während sie Tiefenschätzungen macht.
-
Es wird nun die Diskussion des Blockdiagramms 100 fortgesetzt, wobei, nachdem die Tiefenerzeugungsfunktionseinheit 102 die Bilder 104(1) bis 104(N) empfängt, die Tiefenerzeugungsfunktionseinheit 102 die hierin beschriebenen Techniken ausführt, um eine Tiefenkarte 108 zu erzeugen. Die Tiefenerzeugungsfunktionseinheit 102 kann auch ein Alles-im-Fokus Bild 110 berechnen und ein Unsicherheitsmaß bestimmen (nicht dargestellt). Das Unsicherheitsmaß zeigt an, wie viel Varianz in der Tiefenwahrscheinlichkeit für gegebene Tiefen vorhanden ist. Das Alles-im-Fokus Bild 110 repräsentiert eine Nachbildung der von den Bildern 104(1) bis 104(N) gezeigten Szene, aber ohne jede Unschärfe. Das Berechnen des Alles-im-Fokus Bilds 110 und des Unsicherheitsmaßes ist optional für die Implementierung der hierin beschriebenen Techniken. In einigen Beispielen wird das Alles-im-Fokus Bild 110 von anderen Funktionseinheiten (nicht dargestellt) verwendet, um existierende Tiefenkarten zu verfeinern oder anderweitig zu verbessern. In einigen Beispielen werden Bildflicken der Bilder 104(1) bis 104(N) und Unschärfe-Kernel von der Tiefenerzeugungsfunktionseinheit 102 verglichen als Teil des Erzeugens der Tiefenkarte 108. Ein „Bildflicken” bezieht sich auf einen kleinen Bereich eines Bildes (zum Beispiel die Bilder 104(1) bis 104(N)), der eine Vielzahl von Pixeln enthält. Wie hierin verwendet ist ein „Unschärfe-Kernel” ein Modell der Außer-Fokus-Unschärfe in dem Bilderfassungsprozess. Der Unschärfe-Kernel kann durch eine Scheibe eines bestimmten Radius, ein Polygon, eine Gauss'sche Verteilung, ein Rechteck, oder irgendein anderes geeignetes Merkmal repräsentiert werden, welches die Außer-Fokus-Unschärfe während des Bilderfassungsprozesses modelliert. Die Unschärfe-Kernel umfassen Annahmen bezüglich der Menge an Unschärfe in den Bilden 104(1) bis 104(N) für partikuläre Tiefen bei einer gegebenen partikulären Blendeneinstellung und einer gegebenen partikulären Fokuseinstellung. In einigen Beispielen berücksichtigen die Techniken der Tiefenschätzung andere Konfigurationseinstellungen, welche die Unschärfe in einem Bild beeinflussen könnten, wenn die Unschärfe-Kernel erzeugt werden (zusätzlich zu oder an Stelle von Blenden- und Fokuseinstellungen).
-
Die Tiefenerzeugungsfunktionseinheit 102 führt eine oder mehrere Operationen in Übereinstimmung mit den hierin beschriebenen Techniken aus, um die Tiefen-Likelihood-Funktion zu evaluieren und die Tiefenkarte 108 auszugeben. Diese eine oder mehreren Operationen beinhalten ein Vergleichen, für eine Position in den Bildern, eines Bildflickens 1 von dem Bild 104(1), gefaltet mit einem Unschärfe-Kernel 2 von einer entsprechenden Stelle in dem Bild 104(2), mit einem Bildflicken 2 von dem Bild 104(2), gefaltet mit einem Unschärfe-Kernel 1 von einer entsprechenden Stelle in dem Bild 104(1). Wie hierin verwendet ist „Falten” eine Art von verunschärfen, die auftritt, wenn ein Bildflicken durch einen Unschärfe-Kernel unter Verwendung von hierin beschriebenen Techniken unscharf gemacht wird. Die Unschärfe-Kernel 1, 2 (wie hierin beschrieben) repräsentieren Annahmen bezüglich der Menge an Unschärfe, die erwartet werden sollte an deren entsprechenden Stellen innerhalb der Bilder 104(1), 104(2) unter Verwendung partikulärer Konfigurationseinstellungen. Der oben vorgeschlagene Vergleich kann ausgeführt werden für eine diskrete Menge von Tiefenhypothesen für die Position und dann Flicken um Flicken, bis die Gesamtheit der Bilder 104(1), 104(2) analysiert wurde. In einigen Beispielen wird zumindest ein Teil dieses Vergleichs normalisiert, um eine Tendenz hin zu Unschärfe-Kerneln mit größeren Unschärfeniveaus, die in den Bildern 104(1), 104(2) vorhanden sind, zu vermeiden. In einigen Beispielen bezieht sich die Normalisierung auf Situationen, in denen es Rauschen in den Bildern 104(1), 104(2) gibt. Dies mag sein, weil Unschärfe-Kernel mit größeren Unschärfewerten Rauschen herausglätten und dessen Einfluss vermindern. Dieser Einfluss von Rauschen ist am prävalentesten, wenn die Bilder 104(1), 104(2) sehr stark verrauscht sind, aber nur leicht außer Fokus sind. Die hierin beschriebenen Techniken berücksichtigen daher den Einfluss von Rauschen, indem ein Teil der oben diskutierten Tiefen-Likelihood-Funktion normalisiert wird. Zum Beispiel kann das Normalisieren eines Teils der Tiefen-Likelihood-Funktion ein Anpassen der Faltungsgleichung (1), ∥f2*i1 – f1*i2∥, beinhalten, um in der Faltungsgleichung (1') ∥f2*i1 – f1*i2∥/sqrt(∥f1∥^2 + ∥f2∥^2) zu resultieren, wobei ∥f∥^2 = sum_q(f(q))^2
-
In diesem Beispiel ist i1 ein Bildflicken in dem Bild I1, der mit dem Außer-Fokus-Kernel k1 unscharf gemacht wurde. Ähnlich für i2 und k2. (1) wird evaluiert, um zu erkennen, dass f1 = k1 und f2 = k2. Tatsächlich ist, wenn es kein Rauschen gibt, i1 = k1*h und i2 = k2*h, wobei h das Alles-im-Fokus Bild 110 ist, * die Faltung ist, und f1 = k1, f2 = k2 minimieren (1) mit minimalem Wert von 0: k2*i1 – k1*i2 = k2*(k1*h) – k1*(k2*h) = (k2*k1 – k1*k2)*h = 0 da k2*k1 = k1*k2.
-
Wenn jedoch in dem ersten und dem zweiten Bild Rauschen vorhanden ist: i1 = k1*h + n1 (alle evaluiert beim Pixel p) i2 = k2*h + n2 (alle evaluiert beim Pixel p) mit mittelwertfreiem normalen Rauschen (Varianz = s^2) n1 ~ N(0, s^2) n2 ~ N(0, s^2)
-
Dann ist Gleichung (2) f2*i1 – f1*i2 = [(f2*k1 – f1*k2)*h] + (f2*n1 – f1*n2)
-
Der erste Term kann mit f1 = k1, f2 = k2 minimiert werden, aber es gibt immer noch einen zweiten Term, der zu berücksichtigen ist. Der erste Term ist Null, wenn (f1, f2) = (k1, k2). Es sei angenommen, dass (f1, f2) = (ff1, ff2) nicht das korrekte Paar an Unschärfe-Kerneln (k1, k2) ist, sondern einen kleinen Wert für den ersten Term in Klammern gibt. Wenn die Norm der Summe der zwei Terme in Gleichung (2) genommen wird, kann dies einen kleineren Wert für (ff1, ff2) ergeben als für (k1, k2). In einigen Beispielen ist dies keine geeignete Auswahl für (k1, k2). In einigen Beispielen werden größere Unschärfen in dem ersten und dem zweiten Bild das Rauschen herausglätten und den Einfluss von Rauschen vermindern, wenn die Differenzen in Gleichung (2) kleiner werden. Die Faltungen f2*n1, f1*n2 summieren unabhängige normale Variablen n1(q), n2(q) bei Pixeln q mit Gewichtungen, die gegeben sind durch die Kernelabgriffe/-gewichte f1(q), f2(q). Daher: f2*n1 ~ N(0, s^2sum_q(f2(q))^2) (tatsächlich f2*n1 evaluiert bei Pixel p) f1*n2 ~ N(0, s^2sum_q(f1(q))^2) (tatsächlich f1*n2 evaluiert bei Pixel p) f2*n1 – f1*n2 ~ N(0, s^2(sum_q(f1(q))^2 + sum_q(f2(q))^2)) (tatsächlich f2*n1 – f1*n2 evaluiert bei Pixel p)
-
Das heißt, die Varianz wird multipliziert mit der Summe der Quadrate der Filterabgriffe. Wenn die Unschärfe einen Radius R hat, sind die von Null verschiedenen Kernel-Gewichtungen alle 1/(pi*R^2) [was 1 ist über das Gebiet eines Kreises mit Radius R]. Ein kreisförmiger Filter f mit Radius R hat daher sum_q(f(q))^2 = sum_{q in Kreis mit Radius R}(1/pi*R^2)^2 = (1/pi*R^2)^2*sum_{q in Kreis mit Radius R}
= (1/pi*R^2)^2*pi*R^2
= 1/pi*R^2
-
Dies bedeutet, dass die Varianz s^2(sum_q(f1(q))^2 + sum_q(f2(q))^2) des zweiten Terms f2*n1 – f1*n2 der Gleichung (2) kleiner ist, wenn f1 und f2 größere Unschärfen sind. Wenn zwei kleine Unschärfen die richtige Antwort sind, aber zwei größere Unschärfen auch einen relativ kleinen ersten Term ergeben, dann kann Rauschen dazu führen, dass einige Verfahren inkorrekter Weise größere Kernelgrößen wählen. Und größere Unschärfen (f1, f2) vermindern auch Differenzen in dem ersten Term von Gleichung (2).
-
Die hierin beschriebenen Techniken normalisieren daher die obige Faltungsgleichung (1), um die Niveaus von Außer-Fokus Unschärfe-Kernel zu berücksichtigen, indem sie in der Faltungsgleichung (1') ∥f2*i1 – f1*i2∥/sqrt(∥f1∥^2 + ∥f2∥^2) resultieren, worin ∥f∥^2 = sum_q(f(q))^2.
-
Die Faltung (zum Beispiel Bildflicken 1 gefaltet mit Unschärfe-Kernel 2) kann beinhalten, dass ein gewichteter Mittelwert von Pixeln genommen wird, die ein partikuläres Pixel umgeben. In einigen Beispielen werden die resultierenden unscharf gemachten Flicken als Faltungsoperatoren bestimmt (unter Verwendung der Unschärfe-Kernel) und werden angewandt über Bildflicken des Alles-im-Fokus Bildes 110. Die Größe der Unschärfe-Kernel hängt von einer Entfernung eines Objekts von einer Linse und von Konfigurationseinstellungen einer Kamera ab, die verwendet wurden, um die Bilder 104(1), 104(2) zu erfassen.
-
In einigen Beispielen ist die Tiefenkarte 108 eine Bilddatei, welche Farbinformation und Tiefeninformation enthält. Die Tiefenkarte 108 kann auch eine spezialisierte Bilddatei sein, die Tiefeninformation enthält. Die Tiefeninformation kann eine Schätzung der Entfernung von Objekten innerhalb der Szene von der Digitalkamera, als die Bilder erfasst wurden, repräsentieren. In einigen Beispielen beinhaltet das Erzeugen der Tiefenkarte 108 ein Evaluieren einer Tiefen-Likelihood-Funktion über eine diskrete Menge von Tiefenhypothesen für Bildflicken, die in den Bildern 104(1) bis 104(N) erscheinen, die mit unterschiedlichen Konfigurationseinstellungen aufgenommen wurden (zum Beispiel Blenden- und Fokuseinstellungen). Eine Tiefenhypothese ist eine Schätzung einer Tiefe für einen Flicken, ein Pixel oder ähnliches. Aus der diskreten Menge von Tiefenhypothesen werden einzelne Tiefenschätzungen für jedes Pixel bestimmt zumindest teilweise durch Evaluieren jedes Bildflickens über die diskreten Mengen von Tiefenhypothesen unter Verwendung der Tiefen-Likelihood-Funktion. Die Tiefenschätzung, welche die maximale Likelihood bzw. Wahrscheinlichkeit erreicht, wird als die korrekte Tiefenschätzung ausgewählt. Auf diese Weise wird die Tiefenkarte 108 mit einem gewissen Grad an Konfidenz erzeugt. In einigen Beispielen beinhaltet das Erzeugen der Tiefenkarte 108 ein Tunen mit Bezug auf unscharfe Bildflicken und Unschärfe-Kernel.
-
In einigen Beispielen werden die Techniken, die sich auf das Schätzen von Tiefe wie hierin beschrieben beziehen, iterativ implementiert für jede mögliche Tiefe bei jeder Position in einer Szene, die durch zwei oder mehr Bilder erfasst wurden. Zum Beispiel werden, um eine Tiefe zu schätzen, die mit einer partikulären Position, L, innerhalb zweier Bilder, I1 und I2, assoziiert ist, Bildflicken von jedem der zwei Bilder über eine diskrete Menge von Tiefenhypothesen evaluiert unter Verwendung einer Tiefen-Likelihood-Funktion, und es wird aus der Menge eine Tiefenhypothese mit einer maximalen Likelihood bzw. Wahrscheinlichkeit ausgewählt. Die Tiefenhypothese mit der maximalen Likelihood bzw. Wahrscheinlichkeit repräsentiert eine Tiefenschätzung, welche die wahrscheinlichste ist für die partikuläre Position, L, in den zwei Bildern, I1 und I2, welche evaluiert werden. Daher umfasst eine erste Tiefenhypothese eine Tiefenhypothese, DH1, und wird verwendet, um einen ersten Unschärfe-Kernel, K1, für den Bildflicken, P1 (Bildflicken aus I1, zentriert bei L) und einen zweiten Unschärfe-Kernel, K2, für den Bildflicken P2 (Bildflicken aus I2, zentriert bei L) auszuwählen. Das Evaluieren der Tiefenwahrscheinlichkeit wie hierin beschrieben umfasst Falten von P1 mit K2 und Falten von P2 mit K1, um die Tiefenwahrscheinlichkeit für DH1 zu bestimmen (das heißt, die Wahrscheinlichkeit, dass DH1 die korrekte Approximation der Tiefe in der echten Welt ist). Sobald die Tiefenwahrscheinlichkeit für H1 berechnet ist, schreitet die Evaluierung von P1 und P2 unter Verwendung der Tiefen-Likelihood-Funktion über die verbleibenden Tiefenhypothesen DH2 bis DHn fort (zum Beispiel können vierzig diskrete Tiefen ausgewählt sein), bis jede Hypothese in der Menge von Tiefenhypothesen evaluiert wurde. Die Tiefenhypothese mit der maximalen Likelihood bzw. Wahrscheinlichkeit (zum Beispiel die wahrscheinlichste Tiefe) wird dann aus der Menge von Tiefenhypothesen ausgewählt, einschließlich entsprechender Wahrscheinlichkeiten, als die wahrscheinlichste Approximation der Tiefe in der echten Welt für die partikuläre Position L. In einigen Beispielen wird ein ähnlicher Prozess für jede Position (zum Beispiel Pixel um Pixel, Flicken um Flicken, usw.) innerhalb der zwei entsprechenden Bilder wiederholt. Auf diese Weise sind die hierin beschriebenen Techniken, die sich auf das Schätzen von Tiefe beziehen, nicht nur iterativ für jede Tiefenhypothese an einer partikulären Position, sondern sind auch iterativ für jede Position innerhalb der Szene.
-
2 zeigt eine beispielhafte Umgebung 200 zum Implementieren von Techniken, die sich auf das Schätzen von Tiefe innerhalb digitaler Bilder wie hierin beschrieben beziehen. Die Umgebung 200 enthält einen Bediener 202, der eine Digitalkamera 204 verwendet, um ein Bild einer Szene 206 zu erfassen. Für das Implementieren der hierin beschriebenen Techniken ist der Bediener 202 optional. In einigen Beispielen kann die Digitalkamera 204 auf einem Dreibein oder einer anderen geeigneten Vorrichtung befestigt sein, und die Bilder der Szene 206 können programmtechnisch erfasst werden, wobei der Bediener 202 keine oder nur wenig Hilfestellung leistet. Die Digitalkamera 204 befindet sich, während sie verwendet wird, um das Bild der Szene 206 zu erfassen, an einem Standpunkt 208. Die Szene 206 enthält eine Mehrzahl von Objekten 210 bis 214. Insbesondere sind drei Objekte der Szene 206 in der Umgebung 200 dargestellt, wobei es sich um Karotten 210, einen Baum 212 und einen Zaun 214 handelt. Wie gezeigt erscheinen die Karotten 210 eher im Vordergrund der Szene 206, während der Baum 212 und der Zaun 214 eher im Hintergrund erscheinen. Unabhängig davon, wo die Objekte 210 bis 212 in der Szene erscheinen, ist jedes von diesen definiert, eine Entfernung von dem Standpunkt 208 zu haben. In einigen Beispielen wird die Entfernung jedes Objekts innerhalb der Szene 206 von der Linie 216 aus gemessen, welche eine Linse der Digitalkamera 204 kreuzt. In einigen Beispielen kann die Entfernung jedes Objekts innerhalb der Szene 206 annähernd bestimmt werden durch Verwendung von Techniken der Tiefenschätzung.
-
In einigen Beispielen werden von dem Bediener 202 Konfigurationseinstellungen der Digitalkamera 204 zum Erfassen von Bildern der Szene 206 willkürlich ausgewählt oder systematisch geändert. Die Konfigurationseinstellungen umfassen Blendeneinstellungen, Fokuseinstellungen und jede andere Einstellung, die das Niveau an Unschärfe in einem Bild bei verschiedenen tiefen beeinflusst. Zum Beispiel wählt der Bediener 202, wenn er ein erstes Bild erfasst, zuerst eine Blendeneinstellung von f/1,2 (zum Beispiel ausgewählt aus f/1,2, f/2, f/4, f/5,6, f/8, f/16, f/22 oder anderen geeigneten Blendeneinstellungen) auf der Digitalkamera 204 aus. Der Bediener 202 fokussiert die Digitalkamera 204 dann auf die Karotten 210 und erfasst die Szene 206 unter Verwendung der Digitalkamera 204. Wenn ein zweites Bild erfasst wird, wählt der Bediener 202 eine andere Blendeneinstellung (zum Beispiel f/4), oder er kann dieselbe Blendeneinstellung (das heißt, f/1,2) beibehalten, während er die Digitalkamera 202 auf ein anderes Objekt fokussiert (zum Beispiel den Baum 212) anstelle der Karotten 210. Während er ein drittes Bild erfasst, geht der Bediener 202 durch dieselben Schritte, wie sie ausgeführt wurden, um das erste und das zweite Bild zu erfassen, variiert aber die Konfigurationseinstellungen der Digitalkamera 204 im Vergleich zu denjenigen, die verwendet wurden, als das erste Bild und das zweite Bild erfasst wurden. Auf diese Weise erfasst der Bediener 202 Bilder der Szene 206 mit unterschiedlichen Blendeneinstellungen und/oder unterschiedlichen Fokuseinstellungen. In Übereinstimmung mit der hierin beschriebenen Technik werden solche erfassten Bilder von der Tiefenerzeugungsfunktionseinheit 102 verwendet, um eine oder mehrere Tiefenkarten auszugeben. In einigen Beispielen erzeugt die Tiefenerzeugungsfunktionseinheit 102, die in Übereinstimmung mit den hierin beschriebenen Techniken arbeitet, eine Tiefenkarte für Bilder, die bei einer maximalen Entfernung von etwa 50 Metern von der Szene 206 entfernt erfasst werden.
-
3 zeigt ein Beispiel einer Menge eingegebener Bilder 302 bis 308 und Tiefenkarten 310, 314 und Alles-im-Fokus Bilder 312, 316, welche durch Anwenden der hierin beschriebenen Techniken zum Schätzen von Tiefe innerhalb digitaler Bilder erzeugt wurden. In einigen Beispielen wurden die eingegebenen Bilder 302 bis 308 zuvor mit einer Digitalkamera in Übereinstimmung mit hierin beschriebenen Techniken erfasst. In einigen Beispielen unterscheiden sich die eingegebenen Bilder 302 bis 308 daher jeweils voneinander mit Bezug auf zumindest eines von einer Blendeneinstellung oder einer Fokuseinstellung. In einigen Beispielen wurden die Blendeneinstellungen und die Fokuseinstellungen der eingegebenen Bilder 302 bis 308 optimal ausgewählt unter Verwendung einer Auswahlfunktion. In anderen Beispielen können die Blendeneinstellungen und die Fokuseinstellungen der eingegebenen Bilder 302 bis 308 jedoch von einem Bediener der Digitalkamera willkürlich oder systematisch ausgewählt sein. Da die eingegebenen Bilder 302 bis 308 unter Verwendung Unterschiedlicher Eingabeeinstellungen erfasst wurden, wird jedes von ihnen eine unterschiedliche Unschärfe zeigen.
-
Sobald die eingegebenen Bilder 302 bis 308 empfangen werden, kann eine Tiefenkarte 310 und ein Alles-im-Fokus Bild 312 berechnet werden. In einigen Beispielen wird die Tiefenwahrscheinlichkeit mit einem Dekonvolutionsalgorithmus (zum Beispiel Weiner Dekonvolution) verwendet, um das Alles-im-Fokus Bild 312 zurückzugewinnen. Zum Beispiel wird, sobald die Unschärfe-Kernel für jeden Bildflicken in allen der eingegebenen Bilder geschätzt wurden, indem die maximale Tiefenwahrscheinlichkeit bei jedem Pixel unabhängig berechnet wurde, die maximale Tiefenwahrscheinlichkeit verwendet, um das Alles-im-Fokus Bild 312 zu Berechnen.
-
In einigen Beispielen wird eine Standard-Weiner Dekonvolution verwendet, um zu bestimmen, wie ein Alles-im-Fokus-Flicken für jede Tiefenhypothese aussehen würde (nicht nur für die maximale Tiefenwahrscheinlichkeit). In diesem Beispiel wird das Unsicherheitsmaß in der die Tiefenschätzung für jeden Flicken berücksichtigt, wenn das Alles-im-Fokus Bild 312 berechnet wird. Dies aus dem Grund, dass die Anzahl potentieller Versionen eines Ausgabeflickens, D, direkt der Anzahl an Tiefenhypothesen, D, entspricht. Eine gewichtete Linearkombination der Antworten wird verwendet, um die finale Antwort für das Alles-im-Fokus Bild 312 zurückzubekommen, wobei die Gewichtung für den Flicken, die abgeleitet wird von einer Tiefenhypothese dd, die Wahrscheinlichkeit ist, dass der Flicken bei der Tiefe dd ist (das heißt, die Wahrscheinlichkeit bzw. Likelihood der Tiefe dd, nachdem die Wahrscheinlichkeits- bzw. Likelihood-Werte normalisiert wurden, um in Summe über alle Tiefen 1 zu ergeben).
-
Sobald die eingegebenen Bilder 302 bis 308 empfangen wurden, kann auch zumindest ein Teil der folgenden Operationen ausgeführt werden, um die Tiefenkarte 310 und das Alles-im-Fokus Bild 312 zu berechnen. Zum Beispiel sei ein lokaler unscharfer Bildflicken b von einem der eingegebenen Bilder 302 bis 308 betrachtet, die erfasst wurden mit Fokuseinstellungen f und F-Nummern a einer Digitalkamera. Wenn angenommen wird, dass die Tiefe in dem Flicken annähernd konstant ist, hängt die Erscheinung von b von der Tiefe d und einer Szenentextur ab, die repräsentiert werden kann durch ein Alles-im-Fokus Bild h (zum Beispiel das Alles-im-Fokus Bild 312) eines spezifischen Referenzfokus f0. In Übereinstimmung mit den hierin beschriebenen Techniken kann eine Schlussfolgerung über d und h gegeben werden aus einer Anzahl unscharfer Flicken b, welche dasselbe Alles-im-Fokus Bild teilen, erfasst mit unterschiedlichen Linseneinstellungen.
-
In einigen Beispielen kann eine Formierungsprozedur auf einzelnen unscharfen Flicken desselben Alles-im-Fokus Bildes eine Vergrößerung, Defokus-Unschärfe, Abtasten und Rauschen beinhalten. Was die Vergrößerung betrifft, so kann, mit sich änderndem Fokus, derselbe Punkt der Szene auf unterschiedliche Punkte der Sensorebene der Digitalkamera
204 projiziert werden, entsprechend einer globalen geometrischen Skalierung.
entspricht dem Downsampling wegen Refokussierung und dem Skalierungsfaktor
-
Was die Defokus-Unschärfe betrifft, so erscheinen auf Grund der endlichen Form der Blende die Bilder der Außer-Fokus-Objekte unscharf, und die Unschärfe entspricht einer Faltung zwischen dem vergrößerten Alles-im-Fokus Bild und einer Scheibe, deren Radius bestimmt wird durch Tiefe, Fokus und Blende. b ~f,a = hf*kσ(d,f,a). (3)
-
Was das Abtasten betrifft, so tasten digitale Bilder, obwohl der Sensor kontinuierlich bestrahlt wird, die Intensität nur bei diskreten Stellen ab. Dementsprechend können nur spezifische Frequenzen in dem Bild abgetastet werden. bf,a = bf,a + ε (4)
-
Was schließlich das Rauschen betrifft, so ist das finale Bild eine nichtlineare, verrauschte Version des sauberen, abgetasteten Bildes. Im Bereich der vorliegenden Offenbarung werden zumindest einige eingegebene Bilder linearisiert und das Bildrauschen wird mit einem einfachen Gauss'schen Modell modelliert.
-
In einigen Beispielen können Vergrößerung, Defokussierungsunschärfe und Abtastung Fourier-Entsprechungen haben. Zum Beispiel kann eine Vergrößerung, die ein globaler geometrischer Skalierungsoperator sein kann, einer geometrischen Skalierung im Fourier Bereich entsprechen:
-
Eine Faltung im Bildbereich kann ein Äquivalent zu elementweisen Multiplikation im Fourier Bereich sein,
-
Schließlich kann eine elementweise Multiplikation im Bildbereich auch ausgedrückt werden als eine Faltung im Fourier Bereich,
-
Daher kann die Gleichung (5) im Fourier Bereich ausgedrückt werden als
worin N(ξ) nicht nur Bildrauschen, sondern auch Inhalte hoher Frequenz jenseits der Nyqvist-Frequenz berücksichtigt.
-
In einigen Beispielen mag es praktisch sein, während die Tiefen-Likelihood-Funktion evaluiert wird, das unscharfe Bild zu berichtigen durch Skalieren auf die Vergrößerungen bei f
0, so dass
worin
das Antialiasingfilter ist. Es gilt daher näherungsweise, dass
if,a ≈ h*ψ(d) + ε (13) worin
-
Dementsprechend ist im Fourier Bereich Id,f,a(ξ) ≈ H(ε)·ψd,f,a(ξ) + N(ξ) (15)
-
Als nächstes kann die Wahrscheinlichkeit bzw. Likelihood
einer Tiefenhypothese d bei gegebenen N entsprechenden berichtigten Flicken
bestimmt werden. Da die Linseneinstellungen für jedes Pixel bekannt sind, kann eine Sequenz von Unschärfe-Kerneln
berechnet werden, wobei jeder Kernel nicht nur Defokus-Unschärfe, sondern auch eine Phasenänderung (wenn nächste Nachbarn verwendet wurden) und Antialiasing-Filter (wenn eine bilineare oder Interpolation verwendet wurden) zur Berichtigung berücksichtigen.
-
Auf äquivalente Weise kann eine Kostenfunktion ε(d|{i
n}) evaluiert werden, welche
für lokale Bildflicken erfüllt. Dann kann ein gieriges Tiefenkartenlabel erzeugt werden, indem einfach die Tiefenhypothese der minimalen Kosten für individuelle Pixel genommen wird.
-
In einigen Beispielen kann die diskrete Kostenfunktion auch als Datenkosten eines Markov-Zufallsfeldes verwendet werden, um ein Vor-Bild bzw. Prior räumlicher Glattheit zu inkorporieren. Im Nachfolgenden werden andere Verfahren diskutiert, die Tiefenschätzungen in kontinuierlichen Werten erzeugen, anstelle von Tiefenlabels, aus dieser Kostenmatrix, und welche ein räumliches Prior bzw. Vor-Bild im kontinuierlichen Bereich inkorporieren können.
-
In einigen Beispielen kann ein Fourier Bereichs-Tiefenschätzungsalgorithmus eingeführt werden. Ein flaches Vor-Bild bzw. Prior der Tiefe kann angenommen werden
Pr(d) = const (18) und daher ist das Posterior von d proportional der multivariaten Verteilung zwischen unscharfen Bildern und die Tiefe kann sein
-
Die multivariate Verteilung unter den Alles-im-Fokus Bildflicken und die Tiefe kann weiter ausgedrückt werden als
worin
einem Bildrauschen-Modell entspricht und Pr(h) einem Vor-Bild bzw. Prior entspricht. Das Alles-im-Fokus Bild h kann ausgeklammert werden, indem es herausmarginalisiert wird.
-
Unter einem Gauss'schen Rauschmodell,
und einem Gauss'schen Vor-Bild bzw. Prior
kann die negative Log-Likelihood dann in geschlossener Form abgeleitet werden
-
Der Grenzwert von
für
s 2 / ξ → ∞ kann weiter so berechnet werden, dass das Vor-Bild ein flaches Vor-Bild bzw. Prior wird. Dementsprechend kann die Likelihood-Funktion ausgerückt werden als
-
In einigen Beispielen kann die Implementierung der Gleichung 24 aufwendig sein, da sie lokale Flicken für das gesamte Bild extrahiert. Alternativ kann die Gleichung 24 in den Bildbereich umgeschrieben werden, um die Kostenfunktion unter Verwendung von Bildfaltung zu berechnen.
-
Eine Beobachtung kann sein, dass
auf Grund des Faltungstheorems und der Linearität der Fourier Transformation. Auf diese Weise können eingegebene Bilder als ein Datenstrom gesammelt und in einem Puffer gespeichert werden.
-
Dann kann ε(d) berechnet werden durch
-
Alternativ kann das Alles-im-Fokus Bild geschätzt werden durch h* = deconvwnr(ν1, ν2) (30)
-
In einigen Beispielen kann die Approximation in Gleichung 13 Artefakte in Bereichen mit schwacher Textur hervorrufen auf Grund von Vereinfachung über die Skalierungsoperation, wenn Bilder mit unterschiedlichen Vergrößerungen ausgerichtet werden. In einigen Beispielen kann die Vergrößerung fest sein bzw. fixiert werden, wenn zwei Bilder, jedes mit unterschiedlichen Blenden, die bei jeder Fokuseinstellung aufgenommen werden, beschränkt bzw. Nebenbedingungen unterworfen werden. Dies kann erreicht werden, zumindest zum Teil, indem zuerst eine MAP Schätzung bzw. Maximum a posteriori Schätzung eines Unschärfe-Kernels von Größe
σ * / n bei jeder Fokuseinstellung f
n für eine Referenz-Blendeneinstellung berechnet wird und dann die gemessene Unschärfe-Kernel-Größe als eine Funktion der Fokuseinstellung robust an das kalibrierte Linsenmodell angepasst wird.
wobei γ das Niveau von Rauschen in
{σ * / n} ist.
-
Wenn angenommen wird, dass die Bilder von denselben Fokuseinstellungen kontinuierlich aufgenommen werden, kann dieses Verfahren auch ein dichtes Matching zwischen kontinuierlichen Bildrahmen sicherstellen, da sowohl Bewegung als auch im Freien vorkommende Beleuchtungsänderungen typischer Weise kontinuierlich sind.
-
Die Tiefenkarte 310 wurde erzeugt, um relative Tiefen anzuzeigen unter Verwendung einer gleitenden Farbskala (wie in 3 gezeigt). Zum Beispiel repräsentiert rot nähere Tiefen, und blau repräsentiert Tiefen, die weiter entfernt sind. In einigen Beispielen kann die Tiefenkarte 310 absolute Tiefen enthalten. Sobald die Tiefenkarte 310 und das Alles-im-Fokus Bild 312 berechnet wurden, können eine angepasste Tiefenkarte 314 und ein angepasstes Alles-im-Fokus Bild 316 erzeugt werden. In einigen Beispielen werden die angepasste Tiefenkarte 314 und das angepasste Alles-im-Fokus Bild 316 direkt aus den eingegebenen Bildern 302 bis 308 berechnet unter Verwendung der Tiefen-Likelihood-Funktion. In einigen Beispielen werden die angepasste Tiefenkarte 314 und das angepasste Alles-im-Fokus Bild 316 angepasst, um Bewegungen von Objekten innerhalb der Szene wie zwischen den eingegebenen Bildern 302 bis 308 zu berücksichtigen. Zum Beispiel kann sich der Busch zur rechten in den Bildern bewegt haben, während die eingegebenen Bilder 302 bis 308 erfasst wurden. In einigen Beispielen wird die Bewegung der Objekte durch die unten stehenden Techniken berücksichtigt.
-
In einem Beispiel kann die Likelihood-Funktion in Gleichung 24 wie folgt umgeschrieben werden, um Paare von Bildern gleichzeitig zu betrachten:
-
In einigen Beispielen kann sich die abgeleitete Energiefunktion von der Gleichung 24 durch einen konstanten Offset unterscheiden. Auch wenn sie nicht gleich sind, können sie daher Nebenbedingungen für die Tiefe auf eine ähnliche Weise aufstellen, als ob sie derselben bedingten Wahrscheinlichkeit bzw. Likelihood und derselben hypothetischen Tiefe maximaler Wahrscheinlichkeit bzw. Likelihood entsprechen.
-
Daher kann das Berechnen der Tiefen-Likelihood-Funktion ein Berechnen von Differenzen zwischen Paaren von Bildern beinhalten, wobei die Defokus-Unschärfe ausgerichtet ist, jmn = im*ϕn (35) jmn = in*ϕm (36) oder ihre Frequenzen verglichen werden Jmn = ImΦn (37) Jnm = InΦm (38)
-
Basierend darauf können die nachfolgenden Techniken implementiert werden, um Bewegung zu berücksichtigen. Wenn die Bewegung nur klein ist, kann diese angenähert werden als eine lokale Translation. In diesem Fall mag die Funktion nur wenig zum Fourier Spektrum von J
mn, beitragen, aber dies hauptsächlich zu dessen Phase. Daher ist ein einfacher Weg, Robustheit gegenüber Bewegung zu erreichen, die Phase zu ignorieren
-
Um größere Bewegungen handzuhaben, oder um den größten Nutzen aus der Phaseninformation zu ziehen, können die Defokus-ausgerichteten Bilder jmn und jnm bis auf eine Verschiebung aneinander angepasst werden. In einigen Beispielen kann eine einfache Strategie diejenige sein, einfach den optischen Fluss auszuführen, um die relative Bewegung von dem ersten Bild, das als Referenz verwendet werden kann, zu irgendeinem anderen eingegebenen Bild zu schätzen. Danach können die eingegebenen Bilder gekrümmt bzw. verformt werden, um die eingegebenen Bilder auszurichten, und diese als Eingabe für den vorgenannten Tiefenschätzungsalgorithmus zu verwenden.
-
Schließlich kann es möglich sein, Ausreißer in der Szene zu erkennen (wo eine Szenenänderung zu groß ist für den optischen Fluss oder das lineare Beleuchtungsmodell), indem einfach die minimale erreichbare Kostenfunktion mind ε(d) und Schwellwertbereiche großer Kosten als Ausreißer betrachtet werden.
-
In einigen Beispielen können die angepasste Tiefenkarte 314 und das angepasste Alles-im-Fokus Bild 316 angepasst werden, um Beleuchtungsbedingungen innerhalb der Szene zu berücksichtigen. Zum Beispiel unterscheidet sich ein Schatten des Geländers an der Treppe in dem eingegebenen Bild 302 stark von dem Schatten in dem eingegebenen Bild 308. In einigen Beispielen werden sich ändernde Beleuchtungsbedingungen der Objekte berücksichtigt durch die unten stehenden Techniken.
-
Zum Beispiel kann die Beleuchtungsänderung modelliert werden als eine lokal konstante Kontraständerung und Helligkeitsoffset hn = pnh + qn (40)
-
Dementsprechend kann es sein, dass
jmn = pmnjnm + qmn, (41) mit
-
Daher kann die Likelihood-Funktion modifiziert werden als
wobei
j mn der Mittelwert von j
mn(s, t) ist.
-
In einigen Beispielen kann eine Robustheit gegenüber Beleuchtungsänderungen in die Formulierung im Fourier Bereich inkorporiert werden. In diesem Beispiel mag der Offset lediglich die DC Komponente beeinflussen, und die Fehlerfunktion kann berechnet werden, indem Jm(ξ) und Jn(ξ) über ξ verglichen werden bis zu einer Skala. Das Anpassen für Beleuchtungsänderungen kann daher ein Anpassen des Bias und der Verstärkung von Teilen zumindest einiger der Bildflicken beinhalten.
-
Die folgende Diskussion beschreibt beispielhafte Aktionen und/oder Prozeduren, die unter Verwendung von hierin beschriebenen Techniken ausgeführt werden, in Übereinstimmung mit zumindest einem Beispiel. Die 4 zeigt einen Prozess 400, welcher beispielhafte Aktionen oder Techniken beinhaltet, die sich auf das Schätzen von Tiefe innerhalb digitaler Bilder in Übereinstimmung mit zumindest einem Beispiel beziehen. Ein Teil von oder der gesamte Prozess 400 (oder irgend ein anderer hierin beschriebener Prozess, oder Variationen davon, und/oder Kombinationen davon) kann unter der Steuerung oder Regelung durch ein oder mehrere Computersysteme, die mit ausführbaren Anweisungen konfiguriert sind, ausgeführt werden und kann als Code implementiert sein (zum Beispiel ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen), der gemeinsam auf einem oder auf mehreren Prozessoren ausgeführt wird, durch Hardware oder Kombinationen davon. Der Code kann auf einem computerlesbaren Speichermedium gespeichert sein, zum Beispiel in Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die von einem oder von mehreren Prozessoren ausgeführt werden können. Das computerlesbare Speichermedium kann nichtflüchtig sein. Die Tiefenerzeugungsfunktionseinheit 102 (1), welche die hierin beschriebene Tiefen-Likelihood-Funktion verwendet, führt den Prozess 400 von 4 aus. Der Prozess 400 beginnt bei Block 402 mit dem Empfangen einer Menge von Bildern. In einigen Beispielen beinhaltet das Empfangen der Menge von Bildern ein Empfangen einer Menge von Bildern, die eine Szene zeigen und von im Wesentlichen demselben Standort aus erfasst wurden. In einigen Beispielen wurden die Bilder der Menge von Bildern durch eine Digitalkamera erfasst unter Verwendung unterschiedlicher Konfigurationseinstellungen, welche Blendeneinstellungen und Fokuseinstellungen beinhalten. Die Konfigurationseinstellungen, die verwendet wurden, um jedes einzelne Bild in der Menge von Bildern zu erfassen, werden in Metadaten gespeichert, die mit den Bildern assoziiert sind. Die Bilder können erfasst werden in Übereinstimmung mit Einstellungen, die erzeugt und der Digitalkamera bereitgestellt werden. In diesem Beispiel zeichnet die Vorrichtung, welche die Anweisungen erzeugt hat, auf, welche Einstellungen bereitgestellt wurden, und wenn (später) die Tiefenkarte erzeugt wird, wird auf diese Einstellungen zurückgegriffen. In einigen Beispielen wird eine Benutzereingabe empfangen, die anzeigt, dass die Bilder von dem Standpunkt aus aufgenommen wurden. Manchmal werden einige der Bilder der Menge von leicht unterschiedlichen Orten aus erfasst als andere Bilder, weil die Digitalkamera beim Erfassen der Bilder leicht bewegt wurde. Wenn dies passiert, können die Differenzen zwischen den Bildern, die darauf zurückzuführen sind, dass die Bilder an unterschiedlichen Orten erfasst wurden, auf ähnliche Weise modelliert werden wie die Differenzen, die auf Bewegung zurückzuführen sind. Daher kann eine Technik des optischen Flusses oder eine andere Anpassungstechnik ausgeführt werden, um die Differenzen zwischen den Bildern zu berücksichtigen. Die Technik des optischen Flusses oder andere Techniken der Anpassung sind in der Lage, kleinere Variationen zwischen den beiden Bildern zu berücksichtigen.
-
Bei 404 vergleicht der Prozess 400 Bildflicken von einem ersten Bild der Menge von Bildern, die mit partikulären Unschärfe-Kerneln unscharf gemacht wurden, mit Bildflicken von einem zweiten Bild der Menge von Bildern, die mit partikulären Unschärfe-Kerneln unscharf gemacht wurden, um eine Tiefenschätzung für jeden der Bilderflicken zu bestimmen. In einigen Beispielen beinhaltet das Vergleichen der Bildflicken ein Vergleichen der Bildflicken auf eine Weise, welche eine unangebrachte Neigung hin zu einem Auswählen von Unschärfe-Kerneln mit größeren Unschärfeniveaus vermeidet, insbesondere wenn Rauschen vorhanden ist. In einigen Beispielen beinhaltet das Vergleichen von Bildflicken, um Tiefenschätzungen zu bestimmen, ein Evaluieren der entsprechenden Bildflicken über eine diskrete Menge von Tiefenhypothesen und Auswählen der geschätzten Tiefe für die Bildflicken als die Tiefenhypothese, welche die maximale Tiefenwahrscheinlichkeit ergibt. Der Prozess von 404 wird in größerem Detail in 5 beschrieben.
-
Bei 406 verwendet der Prozess 400 die berechnete(n) Tiefenschätzung(en), um eine Tiefenkarte zu erzeugen. In einigen Beispielen beinhaltet das Erzeugen der Tiefenkarte ein Erzeugen einer Tiefenkarte, die Tiefeninformation enthält, die den Entfernungen von Objekten innerhalb einer Szene von im Wesentlichen dem gleichen Standpunkt aus entspricht, wo die Bilder erfasst wurden. Die Tiefenkarte wird erzeugt, indem eine Tiefenschätzung für jeden Bildflicken eines Bildes, wie bei 404 bestimmt, genommen wird. In einigen Beispielen beinhaltet das Erzeugen einer Tiefenkarte ein Extrahieren lokaler Flicken für die Gesamtheit der erfassten Bilder und ein Vergleichen der lokalen Flicken von den unterschiedlichen der erfassten Bilder, ohne dass bestimmte Annahmen über das Alles-im-Fokus Bild berücksichtigt werden. In einigen Beispielen kann das Erzeugen der Tiefenkarte ein Extrahieren von weniger als allen den lokalen Flicken für die Gesamtheit der erfassten Bilder beinhalten.
-
Bei 408 passt der Prozess 400 die Tiefenkarte an, um eine Bewegung eines Objekts zwischen Bildern einer Szene zu berücksichtigen. In einigen Beispielen beinhaltet das Anpassen der Tiefenkarte, um eine Bewegung des Objekts zu berücksichtigen, die Verwendung einer Technik des optischen Flusses oder das Transformieren in den Fourier Bereich, in dem Bildflicken der Bilder der Menge von Bildern als eine Menge von Frequenzen und Phasen repräsentiert werden, und Vergleichen der Beträge der Bildflicken, während die Phasen ignoriert werden.
-
Wenn mehrere Bilder erfasst werden, insbesondere im Freien, kann es vorkommen, dass kleine Positionsunterschiede zwischen Objekten in den mehreren Bilder auftreten als ein Ergebnis davon, dass sich die Objekte bewegen. Dies kann das Resultat davon sein, dass Wind die Objekte bewegt. Zum Beispiel kann Wind die Blätter des Baums 212 oder die Spitze der Karotten 210 dazu bringen, sich zu bewegen, während der Bediener 202 die mehreren Bilder erfasst. In einem ersten Bild können daher die Spitzen der Karotten 210 in einer ersten Position innerhalb des ersten Bildes sein, und können in einer zweiten Position innerhalb eines zweiten Bildes sein. Wenn diese Diskrepanzen nicht entweder vor oder während der Tiefenkarten-Erzeugung berücksichtigt werden, können diese die Qualität einer resultierenden Tiefenkarte beeinträchtigen. Dementsprechend werden, bei 408, eine oder mehrere Operationen auf Teilen der Bilder ausgeführt, um eine derartige Bewegung zu kompensieren. Diese Operationen beinhalten zum Beispiel das Ausführen einer Technik des optischen Flusses, um den neuen Ort von Pixeln in einem zweiten Bild zu schätzen, verglichen mit einem Ort der Pixel in einem ersten Bild, oder durch Transformieren von Flicken der Bilder in den Fourier Bereich, indem diese als eine Menge von Frequenzen und Phasen repräsentiert werden, und Vergleichen der Beträge aller Flicken, während die Phasen ignoriert werden. Dieses zweite Verfahren ist nützlich, da es gegenüber einer Translation der Flicken unempfindlich sein kann. In einigen Beispielen wird die Tiefen-Likelihood-Funktion angepasst, um auch Bewegung zu berücksichtigen. In einigen Beispielen wird Bewegung berücksichtigt durch eine separate Funktion, die ausgeführt wird, nachdem eine Tiefenkarte erzeugt wurde.
-
Bei 410 passt der Prozess 400 die Tiefenkarte an, um Veränderungen von Beleuchtungsbedingungen zwischen Bildern der Szene zu berücksichtigen. In einigen Beispielen beinhaltet das Anpassen der Tiefenkarte, um Veränderungen von Beleuchtungsbedingungen zu berücksichtigen, ein Modellieren von Beleuchtungsänderungen als eine lokal konstante Änderung in Helligkeit und Kontrast. Wenn zum Beispiel mehrere Bilder erfasst werden, insbesondere draußen, kann es in den mehreren Bildern kleine Beleuchtungsänderungen in der Farbintensität in Bildflicken, der Helligkeit von Bildflicken und ähnliches geben als ein Ergebnis von Beleuchtungsänderungen, die zwischen den Zeitpunkten aufgetreten sind, als die mehreren Bilder erfasst wurden. Dies kann das Ergebnis einer natürlichen Bedingung (wenn zum Beispiel die Sonne zwischen den Bildern hinter einer Wolke verschwindet) oder einer unnatürlichen Bedingung sein (wenn zum Beispiel ein Blitz ausgelöst wird, während bestimmte Bilder erfasst werden, aber nicht ausgelöst wird, während andere Bilder erfasst werden). Zum Beispiel kann der Baum 212 einen bestimmten Schatten werfen, wenn die Sonne zu dessen rechter steht, aber einen anderen Schatten werfen, wenn die Sonne zu dessen linker steht. Auf ähnliche Weise kann der Schatten definierter sein, wenn die Sonne unverdeckt ist, im Vergleich zu wenn die Sonne hinter einer Wolke steht. Ein Verfahren zum Kompensieren von Veränderungen von Beleuchtungsbedingungen beinhaltet zum Beispiel ein Modellieren von Beleuchtungsänderungen als eine lokal konstante Änderung in Helligkeit und Kontrast. Das Berücksichtigen der Beleuchtungsänderungen zwischen einem ersten Flicken in einem ersten Bild und einem zweiten Flicken in einem zweiten Bild beinhaltet ein Anpassen des Bias und der Verstärkung des zweiten Bildflickens. In einigen Beispielen wird die Tiefen-Likelihood-Funktion angepasst, um auch Beleuchtungsänderungen zu berücksichtigen. In einigen Beispielen werden Beleuchtungsänderungen durch eine separate Funktion berücksichtigt, die ausgeführt wird, nachdem eine Tiefenkarte erzeugt wurde.
-
Bei 412 stellt der Prozess 400 die Tiefenkarte zur Darstellung bereit. In einigen Beispielen beinhaltet das Bereitstellen der Tiefenkarte zur Darstellung das Bereitstellen der Tiefenkarte zur Darstellung auf einer Benutzervorrichtung.
-
5 zeigt einen beispielhaften Prozess 404 (4) zum Schätzen von Tiefe eines Bildflickens. Der Prozess 500 beginnt bei Block 502 durch Identifizieren eines Bildflickens von einem ersten Bild aus der Menge von zumindest zwei Bildern und einem entsprechenden Bildflicken aus einem zweiten Bild aus der Menge von zumindest zwei Bildern. In einigen Beispielen wird das Identifizieren durch das Rechnersystem ausgeführt. Beim Schritt 504 wird eine erste Tiefenhypothese aus einer diskreten Menge von Tiefenhypothesen. Die diskrete Menge von Tiefenhypothesen kann jede geeignete Anzahl an Tiefenhypothesen enthalten. In einigen Beispielen sind vierzig Tiefenhypothesen in der diskreten Menge enthalten.
-
Bei 506 wird ein erster Unschärfe-Kernel identifiziert, der von der ausgewählten Tiefenhypothese und einer ersten Konfigurationseinstellung abhängt, die verwendet wurde, um das erste Bild zu erfassen. Wie hierin beschrieben, hängt der erste Unschärfe-Kernel von der ausgewählten Tiefenhypothese und der ersten Konfigurationseinstellung ab, zumindest aus dem Grund, dass während des Kalibrierens der Digitalkamera Unschärfe-Kernel zu Tiefen und Konfigurationseinstellungen (das heißt, Variationen von Blenden- und Fokuseinstellungen) zugeordnet wurden. Auf ähnliche Weise wird bei 508 ein zweiter Unschärfe-Kernel identifiziert, der von der ausgewählten Tiefenhypothese und einer zweiten Konfigurationseinstellung abhängt, die verwendet wurde, um das zweite Bild zu erfassen. Wie hierin beschrieben hängt der zweite Unschärfe-Kernel von der Tiefenhypothese und der zweiten Konfigurationseinstellung ab, zumindest aus dem Grund, dass während des Kalibrierens der Digitalkamera Unschärfe-Kernel zu Tiefen und Konfigurationseinstellungen (das heißt, Variationen von Blenden- und Fokuseinstellungen) zugeordnet wurden.
-
Bei 510 wird der Bildflicken des ersten Bildes mit dem zweiten Unschärfe-Kernel gefaltet, und der entsprechende Bildflicken aus dem zweiten Bild wird mit dem ersten Unschärfe-Kernel gefaltet, um eine Tiefenwahrscheinlichkeit für den Bildflicken zu bestimmen. Die Faltung kann in einigen Beispielen normalisiert werden. Nach dem Bestimmen der Tiefenwahrscheinlichkeit, die von der ausgewählten Tiefenhypothese produziert wird, bestimmt der Prozess bei 512, ob es andere Tiefenhypothesen gibt, die zu evaluieren sind. Falls ja, kehrt der Prozess zu Schritt 504 zurück, um eine andere Tiefenhypothese auszuwählen, und der Prozess wird von diesem Punkt aus wiederholt. Wenn bei Schritt 512 dann schließlich bestimmt wird, dass keine anderen Tiefenhypothesen übrig sind, die zu evaluieren sind, schreitet der Prozess zu Schritt 514 fort, wo die Tiefenhypothese, welche die maximale Tiefenwahrscheinlichkeit ergeben hat, bestimmt wird als die Tiefenschätzung für den Bildflicken.
-
Es wird sich nun auf die 6 bezogen, in der eine beispielhafte Architektur 600 zum Implementieren von Techniken gezeigt ist, die sich auf das Schätzen von Tiefe innerhalb digitaler Bilder wie hierin beschrieben beziehen. Die Architektur 600 beinhaltet eine oder mehrere Benutzervorrichtungen 602(1) bis 602(N) (hiernach: „die Benutzervorrichtung 602”) in Kommunikation mit einem Bildeditierdienst 604 über Netzwerk(e) 624 (hiernach: „das Netzwerk 624”). Das Netzwerk 624 beinhaltet ein beliebiges oder eine Kombination von vielen verschiedenen Typen von Netzwerken, wie Kabelnetze, das Internet, drahtlose Netzwerke, Mobilfunknetze, Funknetzwerken, und andere private und/oder öffentliche Netzwerke.
-
Die Benutzervorrichtung 602 beinhaltet jede geeignete Vorrichtung, die geeignet ist, ein Bild zu erfassen, und/oder eine oder mehrere Operationen auf Bilder auszuführen. In einigen Beispielen kann die Benutzervorrichtung 602 jede geeignete Rechenvorrichtung sein, wie zum Beispiel, ohne hierauf beschränkt zu sein, eine Digitalkamera, ein Mobiltelefon, ein Smartphone, ein persönlicher digitaler Assistent (PDA), ein Laptop-Computer, ein PC, ein Arbeitsplatzcomputer, eine Set-Top-Box, eine Thin-Client-Vorrichtung, oder eine andere Rechenvorrichtung. Die Benutzervorrichtung 602 wird von einem oder von mehreren Benutzern (nicht dargestellt) verwendet, um mit dem Bildeditierdienst 604 zu interagieren. Jede Verwendung von ”Digitalkamera” in diesem Dokument dient lediglich der Veranschaulichung, und ein Fachmann würde verstehen, dass eine beliebige der Benutzervorrichtungen 602(1) bis 602(N) oder irgendeine ähnliche Vorrichtung stattdessen verwendet werden kann.
-
Die Benutzervorrichtung 602 enthält daher einen Prozessor 628, der kommunikativ mit einem Speicher 626 gekoppelt ist, und der einen durch einen Computer ausführbaren Programmcode ausführt und/oder auf Information zugreift, die in dem Speicher 626 gespeichert ist. In einigen Beispielen speichert der Speicher 626 eine Tiefenerzeugungsfunktionseinheit 102(A) und eine Webdiensteanwendung 632. Der Prozessor 628 kann einen Mikroprozessor enthalten, eine anwendungsspezifische integrierte Schaltung („ASIC”), einen Zustandsautomaten, oder eine andere Verarbeitungsvorrichtung. Der Prozessor 628 enthält auch eine beliebige Anzahl an Verarbeitungsvorrichtungen, einschließlich einer. Ein derartiger Prozessor kann ein computerlesbares Medium enthalten, oder mit einem solchen kommunikativ verbunden sein, das Anweisungen speichert, welche, wenn sie durch den Prozessor 628 ausgeführt werden, den Prozessor dazu veranlassen, die hierin beschriebenen Operationen auszuführen. Die Webdiensteanwendung 632 ermöglicht es dem Benutzer mit dem Bildeditierdienst 604 über das Netzwerk 624 zu interagieren. Die Benutzervorrichtung 602 beinhaltet auch eine Bilderfassungsvorrichtung 634. In einigen Beispielen kann die Bilderfassungsvorrichtung 634 konfiguriert sein, um ein Bild oder mehrere Bilder zu erfassen. In einigen Beispielen kann die Bilderfassungsvorrichtung 634 eine herkömmliche Digitalkamera umfassen, die eine Linse, eine Blendeneinstellung, eine Fokuseinstellung, einen Infrarotprojektor, oder eine Vorrichtung für strukturiertes Licht beinhaltet.
-
Der Bildeditierdienst 604 kann ein webbasierter Dienst sein, auf den durch die Benutzervorrichtung 602 und andere Vorrichtungen über das Netzwerk 624 zugegriffen werden kann. Zum Beispiel sei angenommen, dass eine Mehrzahl von Bildern aufgenommen würde unter Verwendung der Benutzervorrichtung 602(2) (zum Beispiel einer Digitalkamera), dann können diese Bilder zu der Benutzervorrichtung 602(N) (zum Beispiel ein Computer) transferiert werden, und die Benutzervorrichtung 602(N) kann mit dem Bildeditierdienst 604 kommunizieren, welcher die Tiefenerzeugungsfunktionseinheit 102(B) ausführt, um eine Tiefenkarte von den Bildern zu erzeugen. Auf diese Weise kann der Bildeditierdienst 604 konfiguriert sein, um auf Allgemeine Weise die hierin beschriebenen Techniken zu implementieren. In einigen Beispielen wird der Bildeditierdienst 604 durch einen oder durch mehrere Webserver implementiert und es kann auf den Bildeditierdienst 604 zugegriffen werden von der Benutzervorrichtung 602 über das Netzwerk 624, welches das Internet, ein Intranet, ein Extranet oder irgendein anderes Daten und/oder Kommunikationsnetzwerk sein kann.
-
Der Bildeditierdienst 604 enthält einen Prozessor 606, der mit einem Speicher 608 kommunikativ gekoppelt ist und der einen durch einen Computer ausführbaren Programmcode ausführt und/oder auf Information zugreift, die in dem Speicher 608 gespeichert ist. In einigen Beispielen speichert der Speicher 608 eine Tiefenerzeugungsfunktionseinheit 102(B) und ein Betriebssystem 612. Das Betriebssystem 612 kann jedes geeignete Betriebssystem sein, das konfiguriert ist, um mit dem Bildeditierdienst 604 zu interagieren. Der Prozessor 606 kann einen Mikroprozessor enthalten, einen ASIC, einen Zustandsautomaten, oder eine andere Verarbeitungsvorrichtung.
-
Der Prozessor 606 kann auch jede beliebige Anzahl an Verarbeitungsvorrichtungen enthalten, einschließlich einer. Ein derartiger Prozessor kann ein computerlesbares Medium enthalten, oder mit einem solchen kommunikativ verbunden sein, das Anweisungen speichert, welche, wenn sie ausgeführt werden durch den Prozessor 606, den Prozessor dazu veranlassen, die hierin beschriebenen Operationen auszuführen.
-
Der Speicher 608 kann jedes geeignete computerlesbare Medium umfassen. Das computerlesbare Medium kann jede elektronische, optische, magnetische oder andere Speichervorrichtung umfassen, die in der Lage ist, für einen Prozessor computerlesbaren Anweisungen oder anderem Programmcode bereitzustellen. Ein computerlesbares Medium kann zum Beispiel eine magnetische Platte, einen Speicherchip, ROM, RAM, eine anwendungsspezifische Schaltung ASIC, einen konfigurierten Prozessor, einen optischen Speicher, ein Magnetband oder einen anderen magnetischen Speicher umfassen, oder jedes andere Medium, von dem ein Computerprozessor Anweisungen auslesen kann. Die Anweisungen können prozessorspezifische Anweisungen umfassen, die von einem Compiler und/oder einem Interpreter erzeugt werden aus Code, der in einer beliebigen geeigneten Computer Programmiersprache geschrieben ist, einschließlich zum Beispiel C, C++, C#, Visual Basic, Java, Python, Perl, JavaScript, und ActionScript.
-
Der Bildeditierdienst 604 beinhaltet auch eine Anzahl externer oder interner Vorrichtungen, wie Eingabe- oder Ausgabevorrichtungen. Zum Beispiel beinhaltet der Bildeditierdienst 604 Eingabe-/Ausgabe-(I/O)Vorrichtung(en) und/oder Anschlüsse 614, wie etwa um eine Verbindung mit einer Tastatur, einer Maus, einem Stift, einer Spracheingabevorrichtung, einer Berührungseingabevorrichtung, einer Anzeige, Lautsprechern, einem Drucker oder einer anderen Eingabe-/Ausgabevorrichtung zu ermöglichen. Der Bildeditierdienst 604 beinhaltet auch einen zusätzlichen Speicher 616, der einen entfernbaren Speicher und/oder einen nicht entfernbaren Speicher umfassen kann. Der zusätzliche Speicher 616 kann einen magnetischen Speicher, optische Platten und/oder Bandspeicher umfassen, ist aber nicht auf diese beschränkt. Die Plattenlaufwerke und deren assoziierte computerlesbare Medien können einen nichtflüchtigen Speicher von computerlesbaren Anweisungen, Datenstrukturen, Programmodule und andere Daten bereitstellen. Der Bildeditierdienst 604 kann auch eine Benutzerschnittstelle 618 enthalten. Die Benutzerschnittstelle 618 kann von einem Bediener verwendet werden, oder einem anderen autorisierten Benutzer, um auf Teile des Bildeditierdiensts 604 zuzugreifen. In einigen Beispielen kann die Benutzerschnittstelle 618 eine graphische Benutzerschnittstelle, webbasierte Anwendungen, Programmschnittstellen wie Anwendungsprogrammierschnittstellen (APIs) oder andere Benutzerschnittstellenkonfigurationen beinhalten. Der Bildeditierdienst 604 beinhaltet auch einen Datenspeicher 620. Der Datenspeicher 620 kann Datenstrukturen beinhalten zum Speichern von Information, die sich auf die Implementierung der hierin beschriebenen Techniken bezieht. Derartige Information kann in einer Bilddatenbank 622 gespeichert werden. In der Bilddatenbank 622 können eingegebene Bilder, Tiefenkarten und andere ähnliche Bilder und Karten gespeichert werden, zusammen mit ihren zugeordneten Informationen.
-
Allgemeine Hinweise
-
Zahlreiche spezifische Details werden hierin dargelegt, um ein tiefgreifendes Verständnis des beanspruchten Gegenstandes zu verschaffen. Die Fachleute werden jedoch verstehen, dass der beanspruchte Gegenstand ohne diese spezifischen Details ausgeübt werden kann. In anderen Fällen wurden Verfahren, Vorrichtungen oder Systeme, welche den Fachleuten bekannt wären, nicht im Detail beschrieben, um den beanspruchten Gegenstand nicht zu verdunkeln.
-
Es wird verstanden werden, dass, solange nicht ausdrücklich anderweitig angegeben, in diesem Dokument Ausführungen, welche Begriffe verwenden wie etwa „verarbeiten,” „berechnen,” „bestimmen,” und „identifizieren” oder ähnliches, sich auf Aktionen oder Prozesse einer Rechenvorrichtung beziehen, wie einem oder mehreren Computern oder eine ähnliche elektronische Rechenvorrichtung oder -vorrichtungen, welche Daten manipulieren oder transformieren, die als physische elektronische oder magnetische Quantitäten repräsentiert sind innerhalb Speichern, Registern oder anderen Informationsspeichereinheiten, Übertragungsvorrichtungen oder Anzeigevorrichtungen der Rechnerplattform.
-
Das System oder die Systeme, welche hierin diskutiert sind, sind nicht auf eine bestimmte Hardwarearchitektur oder Konfiguration beschränkt. Eine Rechenvorrichtung kann jede geeignete Anordnung von Komponenten beinhalten, welche ein Ergebnis bereitstellt, das von einer oder mehreren Eingaben abhängt. Geeignete Rechnervorrichtungen beinhalten Mikroprozessor-basierte Computersysteme, die vielfältig einsetzbar sind, welche auf Software zugreifen, welche das Rechnersystem von einer Allzweck-Rechnervorrichtung zu einer spezialisierten Rechnervorrichtung programmiert oder konfiguriert, die eine oder mehrere Ausführungsformen des vorliegenden Gegenstands implementiert. Jede geeignete Programmiersprache, Skriptsprache oder andere Art von Sprache, oder Kombination von Sprachen, kann verwendet werden, um die hierin enthaltenen Lehren in Software zu implementieren, die dazu verwendet wird, eine Rechnervorrichtung zu programmieren oder zu konfigurieren.
-
Ausführungsformen der hierin offenbarten Verfahren können beim Betrieb solcher Rechnervorrichtungen ausgeführt werden. Die Reihenfolge der Blöcke, die in den vorstehenden Beispielen dargestellt wurden, kann variiert werden – zum Beispiel können Blöcke umgeordnet, kombiniert und/oder in Unterblöcke unterteilt werden. Bestimmte Blöcke oder Prozesse können parallel ausgeführt werden.
-
Wenn hierin „eingerichtet zum” oder „konfiguriert zum” verwendet wird, ist dies als offene und inklusive Sprache gedacht, die keine Vorrichtungen ausschließt, die dazu angepasst sind, zusätzliche Aufgaben oder Schritte auszuführen. Darüber hinaus ist die Verwendung von „basierend auf” als offen und inklusiv gedacht, in dem Sinn, dass ein Prozess, ein Schritt, eine Berechnung oder eine andere Aktion „basierend auf” einer oder mehreren genannten Bedingungen oder Werten in der Praxisüber die genannten hinaus auf weiteren Bedingungen oder Werten basieren kann. Überschriften, Listen und Nummerierungen, die hierin enthalten sind, dienen lediglich der Einfachheit der Erläuterung und sind nicht als beschränkend gedacht.
-
Während der vorliegende Gegenstand im Detail mit Bezug auf spezifische Ausführungsformen desselben beschrieben wurde, wird es verstanden werden, dass die Fachleute, basierend auf einem Verständnis des Vorstehenden, leicht Abwandlungen, Variationen und Äquivalente zu solchen Ausführungsformen schaffen können. Dementsprechend wird verstanden werden, dass die vorliegende Offenbarung allein beispielhaft und nicht als Beschränkung gegeben wurde, und dass diese nicht die Einbeziehung solcher Modifikationen, Variationen und/oder Hinzufügungen zu dem vorliegenden Gegenstand ausschließt, wie sie den Fachleuten leicht ersichtlich sein werden.