-
Hintergrund
-
In den letzten Jahren gab es eine starke Zunahme von Digitalkameras, als selbstständige Geräte und als Teile von komplexeren Vorrichtungen, wie Mobiltelefonen, Smartphones, anderen mobilen Rechenvorrichtungen, etc. Mit dieser Zunahme haben die Hersteller schnell die technischen Merkmale der Digitalkameras auf diesen Vorrichtungen erhöht. Zum Beispiel beinhalten viele mobile Vorrichtungen heute typischerweise fünf Megapixel Kameras, welche oft benötigt werden um hoch qualitative Bilder zu erzeugen.
-
Leider können diese Kameras, obwohl die technischen Eigenschaften solcher Kameras verbessert wurden, keine hoch qualitativen Bilder aufnehmen und erzeugen, weil die Bildverarbeitungsfähigkeiten dieser Kameras nicht mit den verbesserten Hardwarefähigkeiten gleichgezogen haben. Zum Beispiel sind viele Kameras heute immer noch nicht gut darin Bilder mit einem hohen Dynamikbereich (high dynamic range, HDR) aufzunehmen und zu erzeugen.
-
Ein klassisches Beispiel einer HDR Szene ist eine Person, die im Gebäude vor einem Fenster während des Tages steht. Viele Kameras, die solch eine Szene aufnehmen erzeugen ein Bild, das einen hellen Hintergrund hat mit einem dunklen Vordergrund, der nicht alle Merkmale der Person zeigt. Das Problem der Aufnahme solch einer HDR-Szene durch die Kamera einer mobilen Vorrichtung (zum Beispiel durch die Kamera eines Telefons) wird verstärkt durch die kleinen Bildsensoren, die von solch einer Kamera verwendet werden.
-
Das Dokument
US 2008/0316354 A1 offenbart ein Verfahren und eine Vorrichtung zur Erzeugung von HDR-Bildern von mehreren Aufnahmen. Dieses Dokument offenbart insbesondere ein Verfahren zur Erzeugung eines verbesserten Bildes mit Hilfe von verschiedenen aufeinanderfolgenden Aufnahmen. Die Aufnahmen werden kombiniert, um Bilder mit verbesserten Eigenschaften zu erzeugen, insbesondere mit besserem Farb- und Lichtinhalt. Es wird ausreichend Licht erhalten, indem eine Serie von ersten Aufnahmen zusammen mit einer zweiten Aufnahme in schneller Szenenfolge durchgeführt wird. Die ersten Aufnahmen werden kombiniert, um ausreichend Lumineszenz und Schärfe zu bieten. Die zweite Aufnahme wird gemacht, um Farbinformationen zu sammeln. Die ersten Aufnahmen werden mit der zweiten Aufnahme kombiniert, um ein verbessertes Bild zu liefern.
-
Das Dokument
US 2009/0033755 A1 offenbart ein Bilderfassungs- und Verarbeitungsengine für Computergrafiken. In einer beispielhaften Ausführungsform wird ein Bildverarbeitungssystem zur Verfügung gestellt. Das Bildverarbeitungssystem umfasst eine CPU, die derart angeordnet und konfiguriert ist, dass sie eine Bildeingabe empfängt, wobei die Bildeingabe eine Szene darstellt, und wobei die CPU weiter derart angeordnet und konfiguriert ist, dass sie eine Routine ausführt, um die Bildeingabe zu empfangen und eine voreingestellte räumlich-spektrale Analyse des Bildes durchführt, um eine für die Analyse der Szene optimierte Version des Bildes zu erzeugen.
-
Das Dokument
WO 2010/123923 A1 offenbart Techniken zur Erzeugung eines HDR-Bildes innerhalb einer Digitalkamera der Verbraucherklasse von einer Serie von Bildern einer Szene, die bei verschiedenen Belichtungsniveaus aufgenommen wurden, und Anzeigen des HDR-Bildes auf der in der Kamera eingebauten Anzeige.
-
Das Dokument „High dynamic ränge imaging on mobile devices", Radu C.B. et al., Media laboratory/Nokia Research Center, IEEE 2008, Seiten 1312-1315, befasst sich mit dem Dynamikumfang von Bildsensoren und insbesondere Multi-Frame-Ansätzen, bei denen mehrere Aufnahmen derselben Szene kombiniert werden, die zu unterschiedlichen Belichtungszeiten aufgenommen wurden. Das Dokument offenbart einen Multi-Frame-Ansatz für mobile Implementierungen.
-
Das Dokument„A Novel Tone Mapping Method for Image Contrast Enhancement", Radu C.B., Vehvilainen M., Nokia Research Center, Proceedings of the 5th International Symposium on image and Signal Processing an analysis 2007, Seiten 268 bis 273, befasst sich mit der Kontrastverbesserung von Bildern. Das Dokument offenbart eine histogrammbasierte Methode zur Verbesserung des Bildkontrasts.
-
Kurze Zusammenfassung
-
Die Erfindung ist in den unabhängigen Ansprüchen definiert. Vorteilhafte Ausführungsformen sind in den abhängigen Ansprüchen definiert.
-
Einige Ausführungsformen der Erfindung stellen eine mobile Vorrichtung bereit, die Bilder mit hohen Dynamikbereichen aufnimmt und erzeugt. Um ein Bild mit hohem Dynamikbereich aufzunehmen und zu erzeugen beinhaltet die mobile Vorrichtung von einigen Ausführungsformen neue Bildaufnahme- und Verarbeitungsmodule. In einigen Ausführungsformen erzeugt die mobile Vorrichtung ein Bild mit hohem Dynamikbereich (HDR) durch (1) Veranlassen ihres Bildaufnahmemoduls schnell eine Folge von Bildern mit unterschiedlichen Bildbelichtungsdauern aufzunehmen und (2) veranlassen ihres Bildverarbeitungsmoduls diese Bilder zusammenzufügen, um das HDR Bild zu erzeugen.
-
Um schnell eine Folge von Bildern aufzunehmen unternimmt das Bildaufnahmemodul von einigen Ausführungsformen zwei Handlungen. Erstens, nachdem die mobile Vorrichtung ihren HDR-Modus einnimmt oder nachdem sie einen Bildaufnahmemodus einnimmt (unten auch als ein Kameramodus bezeichnet), beginnt sie Bilder mit einer bestimmten Bildfrequenz aufzunehmen. In einigen Ausführungsformen ist die Bildfrequenz ungefähr 15 Bilder pro Sekunde (frames per second, fps). In anderen Ausführungsformen ist die ursprüngliche Bildrate unterschiedlich in unterschiedlichen Beleuchtungsbedingungen (zum Beispiel 15 FPS unter normalen Beleuchtungsbedingungen, 10 FPS für dunklere Bedingungen, usw.). Diese Bildfrequenz ermöglicht es der Kamera Bilder mit der normalen Belichtungseinstellung für die aktuellen Beleuchtungsbedingungen aufzunehmen (d.h., ermöglicht es der Kamera, jedes Bild mit einer Belichtungsdauer aufzunehmen, die das Bildaufnahmemodul als die normale Belichtungsdauer für die gegenwärtigen Beleuchtungsbedingung berechnet). Das Bildaufnahmemodul speichert jedes Bild, das es aufnimmt mit einer bestimmten Bildfrequenz in einem Bildpuffer der Vorrichtung. In einigen Ausführungsformen schreibt das Aufnahmemodul auf eine kreisförmige Weise in diesen Bildpuffer, was es dem Modul ermöglicht, früher gespeicherte Bilder vor später gespeicherten Bildern zu löschen, wenn der Puffer seine maximale Speicherkapazität erreicht.
-
Zweitens, wenn die mobile Vorrichtung einen hohen Dynamikbereichs-(HDR) Modus einnimmt, berechnet das Bildaufnahmemodul die Belichtungsdauern zum Aufnehmen eines unterbelichteten Bildes und eines überbelichteten Bildes für die Beleuchtungsbedingung, unter denen die Kamera die Bilder aufnimmt (unten als die aktuelle Beleuchtungsbedingung bezeichnet). Unterschiedliche Ausführungsformen der Erfindung verwenden verschiedene Techniken zum Berechnen der Dauern der überbelichteten und unterbelichteten Bildern. Zum Beispiel berechnen einige Ausführungsformen die Dauer des überbelichteten und unterbelichteten Bildes basierend auf einem Histogramm der normal belichteten Bilder, die die Vorrichtung mit der bestimmten Bildfrequenz aufnimmt.
-
Nachdem die Vorrichtung ihren HDR-Modus einnimmt kann die Vorrichtung angewiesen werden ein HDR Bild aufzunehmen (zum Beispiel durch den Benutzer der Vorrichtung, durch einen Zeitgeber auf der Vorrichtung, durch einen entfernten Benutzer oder Zeitgeber, etc.). Wenn die Vorrichtung angewiesen wird das HDR Bild aufzunehmen nimmt das Bildaufnahmemodul einer Ausführungsform dann zwei Bilder in schneller Folge auf. Ein Bild ist ein überbelichtetes Bild, das sie basierend auf der überbelichteten Dauer aufnimmt, die sie vorher für die aktuelle Beleuchtungsbedingung berechnet hat, während das andere Bild das unterbelichtete Bild ist, das sie basierend auf der unterbelichteten Dauer aufnimmt, die sie vorher für die aktuelle Beleuchtungsbedingung berechnet hat. In verschiedenen Ausführungsformen nimmt das Bildaufnahmemodul das überbelichtete und unterbelichtete Bild in unterschiedlichen Reihenfolgen auf (zum Beispiel nehmen einige Ausführungsformen das überbelichtete Bild zuerst auf, während andere Ausführungsformen das unterbelichtete Bild zuerst aufnehmen).
-
Zusätzlich zum Aufnehmen des überbelichteten und unterbelichteten Bildes ruft das Bildaufnahmemodul auch ein Bild auf, das es früher mit der normalen Belichtungsdauer aufgenommen hat und in seinem Bildpuffer gespeichert hat. Dieses Modul stellt jedes der drei Bilder dem Bildverarbeitungsmodul bereit. In einigen Ausführungsformen stellt das Bildaufnahmemodul die drei Bilder in dem Farbraum bereit, in welchem die Kamera die Bilder aufnimmt. Zum Beispiel nimmt das Bildaufnahmemodul einiger Ausführungsformen diese Bilder in dem Y'CbCr (luma, blau-chroma und rot-chroma) Farbraum auf. Einige Ausführungsformen korrigieren rückwärts die Y'CbCr (luma) Bilder zu YCbCr (Luminanz, blau-chroma, rot-chroma) Bilder bezüglich gamma vor dem Ausführen verschiedener Bildbearbeitungsoperationen und korrigieren dann bezüglich Gamma das entstehende YCbCr (Luminanz) Bild zu einem Y'CbCr (luma) Bild.
-
Das Bildverarbeitungsmodul führt dann zwei Operationen aus. Die erste Operation ist eine Ausrichtung von allen drei Bildern miteinander, da sich die Kamera zwischen den Zeiten, zu denen sie die drei Bilder aufgenommen hat, bewegt haben kann. Unterschiedliche Ausführungsformen führen dieses Ausrichten unterschiedlich aus. Zum Beispiel, um zwei Bilder auszurichten, führen einige Ausführungsformen eine hierarchische Suche aus, die versucht übereinstimmende Merkmale in den zwei Bildern zu identifizieren. Um übereinstimmende Merkmale zu identifizieren, untersuchen einige Ausführungsformen nur die Luma Komponente (zum Beispiel Y'-Kanal Komponente für einen Y'CbCr Farbraum) der zwei Bilder. Die Lumakomponente von einem Bild wird hierin manchmal auch als ein „Luma Bild“ oder als ein „Bild“ bezeichnet. Die zwei Luma Bilder werden mit einem bestimmten Faktor (zum Beispiel zwei) in jeder Richtung mehrere Male (zum Beispiel sechs mal) dezimiert bis verschiedene Paare von Lumabildern identifiziert sind. Jedes Paar von Lumabildern wird zum Ausführen der Suche auf einem unterschiedlichen Niveau in der Suchhierarchie verwendet. Auf jedem Niveau wird ein Bitmap erzeugt für jedes Luma Bild (zum Beispiel unter Verwendung des Medianlumawertes für das Niveau um Pixelwerte auf 1 oder 0 zu erzeugen, basierend darauf, ob sie größer oder kleiner als der Medianwert sind).
-
Auf jedem Niveau ist zumindest ein Bitmap in mehrere Kacheln unterteilt, wobei jede Kachel mehrere Pixel umfasst. Die Kacheln werden verwendet, um entsprechende übereinstimmende Kacheln in dem anderen Bitmap zu identifizieren und damit eine Verschiebung zwischen den zwei Bitmaps zu identifizieren. In einigen Ausführungsformen werden einige der Kacheln verworfen, wenn die Kacheln nur weiße Pixel umfassen, nur schwarze Pixel, weniger als ein Schwellwert von weißen Pixeln oder weniger als ein Schwellwert von schwarzen Pixeln. Diese Kacheln sind Kacheln, die keine ausreichende Anzahl von Merkmalen (z. B. Kanten) haben, die verwendet werden können, um in Übereinstimmung mit anderen Kacheln gebracht zu werden. Diese Kacheln werden verworfen, um den Vorgang des Vergleichens der Kacheln zu beschleunigen und damit die Verschiebung zwischen den zwei Paaren von Bitmaps zu identifizieren.
-
Basierend auf den verbleibenden Kacheln werden die zwei Bitmaps mit verschiedenen unterschiedlichen Verschiebungen verglichen, um die Verschiebung zu identifizieren, die die zwei Bitmaps auf dem aktuellen Auflösungsniveau der Hierarchie am besten ausrichtet. Wenn das aktuelle Auflösungsniveau der Hierarchie nicht das höchste Auflösungsniveau der Hierarchie ist, verwendet das Bildverarbeitungsmodul von einigen Ausführungsformen dann die berechnete Verschiebung für das aktuelle Auflösungsniveau der Hierarchie als den Ausgangspunkt zum Suchen in dem nächsten Niveau der Hierarchie. Auf diesem nächsten Niveau erzeugt das Modul wiederum zwei Bitmaps für die zwei unterschiedlichen Luma-Bilder für dieses Niveau der Hierarchie und sucht dann nach einer Verschiebung, die bei dem spezifizierten Startpunkt für die Suche beginnt.
-
Bei dem hierarchischen Vergleich der Luma-Komponente der zwei Bilder ist die Verschiebung, die auf dem höchsten Niveau der Hierarchie identifiziert ist, die Verschiebung zwischen den zwei Bildern. Sobald das Bildverarbeitungsmodul diese Verschiebung zwischen einem Bild (z. B. dem normal belichteten Bild) und jedem der anderen Bilder (z. B. das überbelichtete Bild und das unterbelichtete Bild) bestimmt hat, verwendet es diese Verschiebungen, um die drei Bilder auszurichten. Zum Beispiel verwendet es in einigen Ausführungsformen diese zwei Verschiebungen, um die drei Bilder zuzuschneiden, so dass sie alle nur überlappende Abschnitte derselben Szene umfassen. Alternativ schneiden einige Ausführungsformen nur die überbelichteten und unterbelichteten Bilder zu anstelle des Zuschneidens von allen drei Bildern und verwenden für die Abschnitte dieser Bilder, die zugeschnitten werden, die Daten von dem normal belichteten Bild, um das zusammengesetzte HDR-Bild zu erzeugen. Ebenfalls können andere Ausführungsformen andere Operationen verwenden (z. B. sie könnten die Vereinigung der Bilder identifizieren) anstelle des Zuschneidens der Bilder, um nicht überlappende Bereiche der Bilder anzugehen. Einige Ausführungsformen schneiden nicht zu und wiederholen stattdessen Kantenpixel. Das Wiederholen von Kantenpixeln führt zu akzeptablen Resultaten, da die Verschiebung zwischen Bildern typischerweise klein ist.
-
Weiterhin ist das Chroma typischerweise in einem Y'CbCr 4:2:2 oder 4:2:0 Format. Dies bedeutet, dass das Abtasten von Chroma sich von dem Abtasten von Luma unterscheidet. In 4:2:2 ist das Chroma die Hälfte der horizontalen Größe von Luma, während in 4:2:0 das Chroma die Hälfte der horizontalen Größe und die Hälfte der vertikalen Größe von Luma ist. Demgemäß passen einige Ausführungsformen beim Ausrichten der Bilder den Vektor für das Chroma basierend auf diesem Format an.
Nach dem Ausrichten der Bilder führt das Bildverarbeitungsmodul seine zweite Operation aus, welche das Zusammensetzen der drei ausgerichteten Bilder ist, um ein zusammengesetztes HDR-Bild zu erzeugen. In unterschiedlichen Ausführungsformen verwendet das Bildverarbeitungsmodul unterschiedliche Techniken zum Zusammensetzen der drei Bilder. Zum Beispiel setzen einige Ausführungsformen die drei Bilder durch das Ausführen verschiedener Sätze von Operationen für den Luma-Kanal dieser Bilder aus, als für den Chroma-Kanal dieser Bilder. Ebenso könnten einige Ausführungsformen beim Erzeugen des HDR-zusammengesetzten Bildes Luma- und Chroma-Werte erzeugen, die einen gewünschten Bereich an Werten übersteigen. Demgemäß führen einige Ausführungsformen gleichzeitig, während des Erzeugens des HDR-Bildes, Skalierungsoperationen aus, um sicher zu stellen, dass die Luma- und Chroma-Werte des HDR-Bildes innerhalb ihrer gewünschten Bereiche erzeugt werden.
Der Fachmann wird erkennen, dass die Bildaufnahme- und Verarbeitungsoperationen anders als jene oben beschriebene implementiert sein können. Zum Beispiel gibt das Bildverarbeitungsmodul von einigen Ausführungsformen anstelle des Ausgebens von nur einem normal belichteten Bild von dem Bildpuffer, verschiedene normal belichtete Bilder an das Bildverarbeitungsmodul aus. Aus dieser Gruppe wählt das Bildverarbeitungsmodul dann das normal belichtete Bild, das das schärfste ist und das am besten mit dem aufgenommenen überbelichteten und aufgenommenen unterbelichteten Bild übereinstimmt. Alternativ gibt das Bildaufnahmemodul in einigen Ausführungsformen nur ein normal belichtetes Bild aus, aber versucht sicherzustellen, dass dieses ausgegebene Bild nicht verschwommen ist (d. h. scharf ist). In anderen Ausführungsformen versucht das Bildaufnahmemodul auf verschiedene Weisen sicherzustellen, dass das Bild scharf ist. Zum Beispiel verwendet das Bildaufnahmemodul in Ausführungsformen, in denen die Vorrichtung einen Beschleunigungsmesser und/oder Gyroskop hat, Daten, die von dem Beschleunigungsmesser und/oder Gyroskop aufgenommen sind, um die Wahrscheinlichkeit des Verschwimmens der normal belichteten Bilder festzustellen, um ein normal belichtetes Bild auszuwählen, das scharf ist. Alternativ nimmt die mobile Vorrichtung in einigen Ausführungsformen, anstelle des Verwendens eines normal belichteten Bildes von dem Bildpuffer, nachdem ein HDR-Befehl empfangen wurde, ein oder mehrere Bilder mit einer normalen Belichtung sowie das überbelichtete und unterbelichtete Bild auf. In einigen solchen Ausführungsformen wählt das Bildverarbeitungsmodul eines der normal belichteten Bilder (z. B. das schärfste, das letzte, etc.) zur Verwendung zum Erzeugen eines zusammengesetzten HDR-Bildes aus.
-
Die vorhergehende Zusammenfassung soll als eine kurze Einführung in einige Ausführungsformen der Erfindung dienen. Sie soll nicht eine Einführung oder Übersicht über alle erfinderischen Gegenstände sein, die in diesem Dokument offenbart sind. Die detaillierte Beschreibung, die folgt, und die Zeichnungen, auf die sich in der detaillierten Beschreibung bezogen wird, werden die Ausführungsformen weiter beschreiben, die in der Zusammenfassung beschrieben sind, sowie andere Ausführungsformen. Demgemäß, um alle Ausführungsformen zu verstehen, die in diesem Dokument beschrieben sind, ist ein ganzes Studium der Zusammenfassung, der detaillierten Beschreibung und der Zeichnungen nötig. Weiterhin sind die beanspruchten Gegenstände nicht durch die beispielhaften Details in der Zusammenfassung, detaillierten Beschreibung und den Zeichnungen begrenzt, sondern sind stattdessen durch die beigefügten Ansprüche definiert, weil die beanspruchten Gegenstände in anderen spezifischen Formen ausgeführt sein können, ohne von dem Geist der Gegenstände abzuweichen.
-
Figurenliste
-
- 1 stellt eine mobile Vorrichtung dar, die Bilder mit hohen Dynamikbereichen aufnimmt und erzeugt.
- 2A stellt den Aufruf eines hohem Dynamikbereichs- (HDR) Modus dar und die Aufnahme eines HDR-Bildes in diesem Modus in einer mobilen Vorrichtung einiger Ausführungsformen.
- 2B stellt die Anzeige eines Vorschaubildes während des Aufrufes eines hohen Dynamikbereichs- (HDR) Modus dar und die Aufnahme eines HDR-Bildes in diesem Modus in einer mobilen Vorrichtung einiger Ausführungsformen.
- 3 stellt konzeptionell die Software-Architektur der mobilen Vorrichtung einiger Ausführungsformen dar.
- 4 stellt den Betrieb eines Bildverarbeitungsmoduls während einer HDR-Bildaufnahmesitzung dar.
- 5A stellt das Bildaufnahmemodul einiger Ausführungsformen der Erfindung dar.
- 5B stellt das Bildaufnahmemodul einiger anderer Ausführungsformen der Erfindung dar.
- 6 stellt ein Verfahren dar, das konzeptionell eine Folge von Operationen des Bildaufnahmemoduls während einer HDR-Bildaufnahmesitzung darstellt.
- 7 stellt ein Verfahren einiger Ausführungsformen zum Erzeugen einer Folge von Bitmaps zum Ausrichten von Bildern dar.
- 8 stellt Beispiele von Bitmaps dar, die von dezimierten Bildern von einigen Ausführungsformen gemacht werden.
- 9 stellt ein Verfahren einiger Ausführungsformen dar, zum Bestimmen eines Verschiebungsvektors, der zwei Bilder ausrichtet.
- 10 stellt ein Verfahren zum Bestimmen eines Verschiebungsvektors zum Ausrichten von zwei Bitmaps dar.
- 11 zeigt ein Beispiel des Bestimmens eines finalen Verschiebungsvektors.
- 12 zeigt ein Verfahren zum Zusammenstellen der Luma-Kanalbilder von drei unterschiedlichen Belichtungen derselben Szene und Anpassen von verschiedenen Luma-Werten des resultierenden zusammengesetzten Bildes.
- 13A zeigt ein Beispiel des Ausführens eines Zusammensetzungsverfahrens auf einer bestimmten Szene.
- 13B zeigt ein Beispiel des Ausführens des Zusammensetzungsverfahrens beim Erzeugen von Masken von verschiedenen Bildern.
- 14 stellt ein Verfahren von verschiedenen Ausführungsformen dar zum Zusammensetzen von Chroma-Kanalbildern.
- 15 zeigt ein Beispiel eines Zusammensetzens von Chroma-Kanalbildern in einigen Ausführungsformen.
- 16 ist ein Beispiel einer mobilen Rechenvorrichtung 1600 einiger Ausführungsformen.
- 17 stellt eine Berührungs-I/O-Vorrichtung dar.
-
Detaillierte Beschreibung
-
In der folgenden detaillierten Beschreibung der Erfindung werden zahlreiche Details, Beispiele und Ausführungsformen der Erfindung hervorgehoben und beschrieben. Jedoch wird es dem Fachmann klar sein und ersichtlich, dass die Erfindung nicht auf die Ausführungsformen, die beschrieben sind, begrenzt ist, und dass die Erfindung praktiziert werden kann ohne einige der spezifischen Details und Beispiele, die diskutiert werden.
Einige Ausführungsformen der Erfindung stellen eine mobile Vorrichtung bereit, die Bilder mit hohen Dynamikbereichen aufnimmt und erzeugt. 1 stellt eine solche mobile Vorrichtung 100 dar. Diese mobile Vorrichtung kann eine Kamera, ein Mobiltelefon, ein Smartphone, ein persönlicher digitaler Assistent (PDA), ein Tablet-Personalcomputer (wie ein iPad ®), ein Laptop oder irgendein anderer Typ von mobiler Rechenvorrichtung sein. 1 stellt die mobile Vorrichtung 100 dar, die ein digitales Bild einer Szene mit einem hohen Dynamikbereich aufnimmt. In dieser Szene steht eine Person vor einem Fenster an einem sonnigen Tag, während ein Auto in dem Hintergrund vorbeifährt.
-
1 stellt auch dar, dass die mobile Vorrichtung 100 ein Bild 180 mit einem hohen Dynamikbereich erzeugt durch das Aufnehmen, Ausrichten und Zusammensetzen von drei Bildern 135, 140 und 145, die mit drei unterschiedlichen Belichtungseinstellungen aufgenommen werden. Wie in dieser Figur gezeigt umfasst die mobile Vorrichtung 100 ein Bildaufnahmemodul 105 und ein Bildverarbeitungsmodul 110, welche Operationen ausführen, die es der mobilen Vorrichtung ermöglichen, ein Bild mit einem hohen Dynamikbereich aufzunehmen und zu erzeugen. In einigen Ausführungsformen erzeugt die mobile Vorrichtung ein Bild mit einem hohen Dynamikbereich (HDR) durch (1) Veranlassen, dass ihr Bildaufnahmemodul schnell eine Folge von Bildern mit unterschiedlichen Bildbelichtungsdauern aufnimmt und (2) Veranlassen ihres Bildverarbeitungsmoduls diese Bilder zusammenzusetzen, um das HDR-Bild zu erzeugen. Während die Beschreibung hierin nur drei Bilder umfasst, wird der Fachmann erkennen, dass einige Ausführungsformen mehr als drei Bilder verwenden (z. B. einige Ausführungsformen verwenden fünf Bilder: sehr überbelichtet, überbelichtet, normal, unterbelichtet, und sehr unterbelichtet). Einige Ausführungsformen verwenden verschiedene Anzahlen von Bildern unter verschiedenen Bedingungen.
-
Um eine Folge von Bildern schnell aufzunehmen, nimmt das Bildaufnahmemodul einiger Ausführungsformen zwei Handlungen vor, wenn die Kamera einen Modus für hohen Dynamikbereich (HDR) einnimmt. Erstens, es beginnt Bilder mit einer bestimmten Bildfrequenz aufzunehmen. In einigen Ausführungsformen ist die Bildfrequenz ungefähr 15 Bilder pro Sekunde (fps). In einigen Ausführungsformen ist die anfängliche Bildfrequenz in unterschiedlichen Beleuchtungsbedingungen unterschiedlich (z. B. 15 fps für normale Beleuchtungsbedingungen, 10 fps für dunklere Bedingungen, etc.). Die Bildfrequenz ermöglicht es der Kamera, Bilder mit der normalen Belichtungseinstellung für die aktuelle Beleuchtungsbedingung aufzunehmen (d. h. es ermöglicht der Kamera jedes Bild mit einer Belichtungsdauer aufzunehmen, die das Bildaufnahmemodul als die normale Belichtungsdauer für die aktuellen Beleuchtungsbedingungen berechnet). Das Bildaufnahmemodul speichert jedes Bild, das es aufnimmt mit einer bestimmten Bildfrequenz in einem Bildpuffer (nicht gezeigt) der Vorrichtung. In einigen Ausführungsformen schreibt das Aufnahmemodul auf eine kreisförmige Weise in diesen Bildpuffer, was es dem Modul ermöglicht, früher gespeicherte Bilder vor später gespeicherten Bildern zu löschen, wenn der Puffer seine maximale Speicherkapazität erreicht.
-
Zweitens berechnet das Bildaufnahmemodul für die Beleuchtungsbedingungen, unter denen die Kamera die Bilder aufnimmt (unten als die aktuelle Beleuchtungsbedingung bezeichnet), die Belichtungsdauern für die Aufnahme eines unterbelichteten Bildes und eines überbelichteten Bildes. Zum Beispiel berechnen einige Ausführungsformen die Dauer der überbelichteten und unterbelichteten Bilder basierend auf dem Histogramm der normal belichteten Bilder, die die Vorrichtung mit der bestimmten Bildfrequenz aufnimmt. Zum Beispiel, wenn das normal belichtete Bild eine große Anzahl an gesättigten Pixeln hat, wird die Dauer des überbelichteten Bildes auf ein kleineres Vielfaches der normalen Belichtungsdauer eingestellt, als sie würde, wenn das normal belichtete Bild weniger gesättigte Pixel hätte.
-
Nachdem die Vorrichtung ihren HDR-Modus einnimmt, kann die Vorrichtung dazu veranlasst werden, ein HDR-Bild aufzunehmen (z. B. durch den Benutzer der Vorrichtung, durch einen Zeitgeber auf der Vorrichtung, durch einen entfernten Benutzer oder Zeitgeber, etc.). Wenn die Vorrichtung dazu veranlasst wird das HDR-Bild aufzunehmen, nimmt das Bildaufnahmemodul einiger Ausführungsformen dann zwei Bilder in schneller Folge auf. Ein Bild ist ein überbelichtetes Bild, das es basierend auf der überbelichteten Dauer aufnimmt, die es vorher für die aktuelle Beleuchtungsbedingung berechnet hat, während das andere Bild das unterbelichtete Bild ist, das es basierend auf der unterbelichteten Dauer aufnimmt, die es vorher für die aktuelle Beleuchtungsbedingung berechnet hat. In verschiedenen Ausführungsformen nimmt das Bildaufnahmemodul die überbelichteten und unterbelichteten Bilder in unterschiedlichen Reihenfolgen auf (z. B. einige Ausführungsformen nehmen das überbelichtete Bild zuerst auf, während andere Ausführungsformen das unterbelichtete Bild zuerst aufnehmen).
Zusätzlich zum Aufnehmen der überbelichteten und unterbelichteten Bilder ruft das Bildaufnahmemodul auch ein Bild ab, das es vorher mit der normalen Belichtungsdauer aufgenommen hat und in seinem Bildpuffer gespeichert hat (z. B. das letzte Bild, das vor dem HDR-Aufnahmebefehl aufgenommen wurde). Das Bildaufnahmemodul 105 stellt jedes der drei Bilder dem Bildverarbeitungsmodul 110 bereit. 1 stellt diese drei Bilder als ein überbelichtetes Bild 135, ein normal belichtetes Bild 140 und ein unterbelichtetes Bild 145 an dem Ausgang des Bildaufnahmemoduls 105 dar. In einigen Ausführungsformen stellt das Bildaufnahmemodul die drei Bilder in dem Farbraum dar, in welchem die Kamera die drei Bilder aufnimmt. Zum Beispiel nimmt das Bildaufnahmemodul einiger Ausführungsformen diese Bilder in dem Y'CbCr-Farbraum auf und stellt diese bereit.
-
Die obige Beschreibung schließt das Aufnehmen von mehreren Bildern mit einer normalen Belichtungsdauer ein, bevor ein HDR-Aufnahmebefehl empfangen wird, und das Aufnehmen des überbelichteten und unterbelichteten Bildes, nachdem der HDR-Aufnahmebefehl empfangen wurde. Jedoch werden in einigen Ausführungsformen mehrere unterbelichtete Bilder aufgenommen, bevor der HDR-Aufnahmebefehl empfangen wird und das normal belichtete und überbelichtete Bild wird aufgenommen, nachdem der HDR-Aufnahmebefehl empfangen wird. Zusätzlich werden in einigen Ausführungsformen mehrere überbelichtete Bilder aufgenommen, bevor der HDR-Aufnahmebefehl empfangen wird und das normal belichtete und unterbelichtete Bild wird aufgenommen, nachdem der HDR-Aufnahmebefehl empfangen wird.
-
Wie in 1 gezeigt umfasst das Bildverarbeitungsmodul 110 in einigen Ausführungsformen (1) ein Ausrichtungsmodul 115, das die drei Bilder ausrichtet, die es empfängt, und (2) ein Zusammensetzungsmodul 120, das die drei Bilder zusammensetzt, die es empfängt um das HDR-Bild 180 zu erzeugen. Das Ausrichtungsmodul richtet alle drei Bilder bezogen aufeinander aus, da die Kamera sich während der Zeit, während sie die drei Bilder aufgenommen hat, bewegt haben könnte.
-
Wie weiter in 1 gezeigt umfasst das Ausrichtungsmodul 115 in einigen Ausführungsformen (1) ein Suchmodul 125, das die Bilder vergleicht, um sie auszurichten, und (2) ein Zuschneidemodul 130, das eines oder mehrere der ausgerichteten Bilder zuschneidet, um nur die Bereiche einzuschließen, in denen sich die Bilder überlappen. Um die zwei Bilder auszurichten, führt das Suchmodul 125 eine Suche aus, die versucht übereinstimmende Merkmale in den zwei Bildern zu identifizieren. Um dies zu tun, untersuchen einige Ausführungsformen nur die Luma-Komponente (z. B. Y'-Kanalkomponente für einen Y'CbCr-Farbraum) der zwei Bilder.
-
In einigen Ausführungsformen führt das Suchmodul 125 eine hierarchische Suche aus, die am Anfang zwei Luma-Bilder um einen bestimmten Faktor (z. B. zwei) in jeder Richtung mehrere Male (z. B. sechsmal) dezimiert, bis verschiedene Paare von Luma-Bildern identifiziert sind. Jedes Paar von Luma-Bildern wird zum Ausführen der Suche auf einem unterschiedlichen Niveau in der Suchhierarchie verwendet. Auf jedem Niveau wird ein Bitmap erzeugt für jedes Luma-Bild (z. B durch Verwendung des Median-Luma-Wertes für das Niveau, um Pixelwerte auf 1 oder 0 zu erzeugen, basierend darauf, ob sie größer oder kleiner als der Medianwert sind).
-
Auf jedem Niveau unterteilt das Suchmodul zumindest ein Bitmap in unterschiedliche Kacheln, wobei jede Kachel mehrere Pixel umfasst. Das Modul verwendet die Kacheln, um entsprechende übereinstimmende Kacheln in dem anderen Bitmap zu identifizieren und damit eine Verschiebung zwischen den zwei Bitmaps zu identifizieren. In einigen Ausführungsformen verwirft das Suchmodul einige der Kacheln, wenn die Kacheln nur weiße Pixel, nur schwarze Pixel, weniger als ein Schwellwert an weißen Pixeln oder weniger als ein Schwellwert an schwarzen Pixeln enthalten. Diese Kacheln sind Kacheln, die keine ausreichende Anzahl an Merkmalen (z. B. Kanten) aufweisen, die verwendet werden können zum Finden von Übereinstimmungen mit anderen Kacheln. Diese Kacheln werden verworfen, um das Verfahren des Vergleichens der Kacheln zu beschleunigen und damit die Verschiebung zwischen den zwei Paaren von Bitmaps zu identifizieren.
Basierend auf den verbleibenden Kacheln vergleicht das Suchmodul die zwei Bitmaps mit verschiedenen unterschiedlichen Verschiebungen, um die Verschiebung zu identifizieren, die die zwei Bitmaps auf dem aktuellen Auflösungsniveau der Hierarchie am besten ausrichtet. Wenn das aktuelle Auflösungsniveau der Hierarchie nicht das höchste Auflösungsniveau der Hierarchie ist, dann verwendet das Suchmodul die berechnete Verschiebung für das aktuelle Auflösungsniveau der Hierarchie als den Ausgangspunkt zum Suchen in dem nächsten Niveau der Hierarchie. In diesem nächsten Niveau erzeugt das Modul wiederum zwei Bitmaps für die zwei unterschiedlichen Luma-Bilder für das Niveau der Hierarchie und sucht dann nach einer Verschiebung beginnend mit dem spezifizierten Anfangspunkt für die Suche.
-
In dem hierarchischen Vergleich der Luma-Komponente der zwei Bilder ist die Verschiebung, die auf dem höchsten Niveau der Hierarchie identifiziert ist, die Verschiebung zwischen den zwei Bildern. Sobald das Suchmodul 125 seine hierarchische Suche der zwei Paare an Bildern abschließt, identifiziert es zwei Verschiebungen, die die Translation von zwei der Bilder definieren, so dass alle drei Bilder ausgerichtet sind. In dem in 1 dargestellten Beispiel vergleicht das Suchmodul in einigen Ausführungsformen die Luma-Komponente des unterbelichteten/überbelichteten Bildes mit der Luma-Komponente des normal belichteten Bildes. Dieser Vergleich identifiziert zwei Verschiebungen, wobei eine die Translation zwischen dem unterbelichteten Luma-Bild und dem normal belichteten Bild definiert und die andere die Translation zwischen dem überbelichteten Luma-Bild und dem normal belichteten Bild definiert. Diese zwei Verschiebungen identifizieren wiederum wie die drei Bilder ausgerichtet werden können, wie durch die gestrichelten Linien in 1 angezeigt, die die übereinstimmenden Bereiche in den drei Luma-Bildern 150, 155 und 160 identifizieren.
-
Sobald das Suchmodul 125 zwischen einem Bild (z. B. dem normal belichteten Bild) und jedem der anderen Bilder (z. B. das überbelichtete Bild und das unterbelichtete Bild) bestimmt hat, verwendet das Zuschneidemodul 130 diese Verschiebungen, um die drei Bilder zuzuschneiden. Insbesondere verwendet es in einigen Ausführungsformen diese zwei Verschiebungen, um die drei Bilder so zuzuschneiden, dass sie alle nur überlappende Abschnitte derselben Szene umfassen. 1 stellt das Ergebnis dieses Zuschneidens dar durch das Darstellen der zugeschnittenen, ausgerichteten Bilder 165, 170 und 175. Anstelle des Zuschneidens von allen drei Bildern schneiden einige Ausführungsformen nur die überbelichteten und unterbelichteten Bilder zu und benutzen für die Abschnitte dieser Bilder, die zugeschnitten werden, die Daten von dem normal belichteten Bild, um das zusammengesetzte HDR-Bild zu erzeugen. Alternativ, anstelle des Zuschneidens der Bilder, könnten andere Ausführungsformen andere Operation verwenden (z. B. könnten sie die Vereinigung der Bilder identifizieren), um nicht überlappende Bereiche in den Bildern anzugehen. Einige Ausführungsformen schneiden nicht zu und wiederholen stattdessen Kantenpixel. Das Wiederholen von Kantenpixeln führt zu akzeptablen Resultaten, da die Verschiebung zwischen den Bildern typischerweise klein ist.
Weiterhin ist das Chroma typischerweise in einem Y'CbCr 4:2:2 oder 4:2:0 Format. Dies bedeutet, dass das Abtasten des Chroma unterschiedlich ist als das des Luma. In 4:2:2 ist das Chroma die Hälfte der horizontalen Größe von Luma, während in 4:2:0 das Chroma die Hälfte der horizontalen Größe und die Hälfte der vertikalen Größe von Luma ist. Demgemäß, beim Ausrichten der Bilder passen einige Ausführungsformen den Vektor für das Chroma basierend auf diesem Format an. Wie in dieser Figur gezeigt empfängt das Zusammensetzungsmodul 120 die zugeschnitten, ausgerichteten Bilder, welche es dann zusammensetzt, um das zusammengesetzte HDR-Bild 180 zu erzeugen. In unterschiedlichen Ausführungsformen verwenden die unterschiedlichen Module unterschiedliche Techniken, um die drei Bilder zusammenzusetzen. Beispielsweise setzen einige Ausführungsformen die drei Bilder durch das Ausführen von unterschiedlichen Sätzen von Operationen für den Luma-Kanal dieser Bilder als für die Chroma-Kanäle dieser Bilder aus. Ebenfalls könnten einige Ausführungsformen beim Erzeugen des HDR-zusammengesetzten Bildes Luma- und Chroma-Werte erzeugen, die einen gewünschten Bereich von Werten überschreiten. Demgemäß führt das Zusammensetzungsmodul 120 einiger Ausführungsformen beim Erzeugen des HDR-Bildes gleichzeitig Skalierungsoperationen aus, um sicherzustellen, dass die Luma- und Chroma-Werte des HDR-Bildes innerhalb der gewünschten Bereiche erzeugt werden.
-
Der Fachmann wird erkennen, dass die Bilderzeugungs- und -verarbeitungsoperationen anders als jene oben beschriebenen implementiert sein können. Zum Beispiel, anstelle des Ausgebens von nur einem normal belichteten Bild von dem Bildpuffer (z. B. das letzte Bild), gibt das Bildaufnahmemodul einiger Ausführungsformen verschiedene normal belichtete Bilder an das Bildverarbeitungsmodul aus. Aus dieser Gruppe wählt dann das Bildverarbeitungsmodul das normal belichtete Bild aus, das das schärfste ist und/oder das am besten mit dem aufgenommenen überbelichteten und aufgenommenen unterbelichteten Bild übereinstimmt. Alternativ gibt das Bildaufnahmemodul in einigen Ausführungsformen nur ein normal belichtetes Bild aus aber versucht sicherzustellen, dass dieses ausgegebene Bild nicht verschwommen ist (d. h. scharf ist). In einigen Ausführungsformen versucht das Bildaufnahmemodul auf verschiedene Weisen sicherzustellen, dass das Bild scharf ist. Zum Beispiel verwendet das Bildaufnahmemodul, in einigen Ausführungsformen, in denen die Vorrichtung einen Beschleunigungsmesser und/oder Gyroskop hat, Daten, die von dem Beschleunigungsmesser und/oder Gyroskop aufgezeichnet sind, um die Wahrscheinlichkeit des Verschwommenseins der normal belichteten Bilder zu bestimmen (z. B. quantifizieren einer oder mehrerer bewegungsbezogener Attribute), um ein normal belichtetes Bild auszuwählen, das scharf ist. In einigen Ausführungsformen wählt das Bildaufnahmemodul das letzte Bild, das wahrscheinlich nicht verschwommen ist (z. B. bewegungsbezogene Attribute hat, die unterhalb eines bestimmten Bewegungsschwellwertes sind). Anstelle von oder zusätzlich zu dem Verwenden von bewegungserfassenden Sensoren, bestimmen einige Ausführungsformen, welches der mehreren Bilder das schärfste ist durch Verwendung von digitalen Signalverarbeitungstechniken, um den Frequenzinhalt von jedem Bild zu bestimmen. In solchen Ausführungsformen wird das Bild mit dem höchsten Frequenzinhalt als das schärfste Bild identifiziert.
-
Alternativ nimmt in einigen Ausführungsformen die mobile Vorrichtung anstelle des Verwendens von normal belichteten Bildern von dem Bildpuffer nachdem ein HDR-Aufnahmebefehl empfangen wurde, ein oder mehrere Bilder mit einer normalen Belichtung auf sowie das überbelichtete und das unterbelichtete Bild. In einigen solcher Ausführungsformen wählt das Bildverarbeitungsmodul eines der normal belichteten Bilder (z. B. das schärfste, letzte, etc.) zur Verwendung zur Erzeugung eines zusammengesetzten HDR-Bildes.
-
Einige weitere detaillierte Ausführungsformen der Erfindung werden unten beschrieben. Abschnitt I beschreibt, wie die Benutzerschnittstelle von einigen Ausführungsformen es einem Benutzer ermöglicht, einen HDR-Modus aufzurufen und ein HDR-Bild aufzunehmen. Abschnitt II beschreibt dann die Software-Architektur, die die Medienvorrichtung in einigen Ausführungsformen verwendet, um HDR-Bilder aufzunehmen und zu verarbeiten. Als nächstes beschreibt Abschnitt III weiter das Bildaufnahmemodul der mobilen Vorrichtung einiger Ausführungsformen. Der Abschnitt IV beschreibt dann das Bildausrichtungsverfahren des Bildverarbeitungsmoduls der mobilen Vorrichtung einiger Ausführungsformen. Der Abschnitt V beschreibt als nächstes das Bildzusammensetzungsverfahren des Bildverarbeitungsmoduls der mobilen Vorrichtung einiger Ausführungsformen. Als letztes beschreibt der Abschnitt VI eine Systemarchitektur der mobilen Vorrichtung einiger Ausführungsformen.
-
Aufrufen des HDR-Modus und der HDR-Aufnahme
-
In einigen Ausführungsformen wird der HDR-Modus angezeigt durch die Auswahl in einer Benutzerschnittstelle (User Interface, UI) einer mobilen Vorrichtung. 2A stellt den Aufruf des HDR-Modus und das Aufnehmen von einem HDR-Bild während dieses Modus, in einer mobilen Vorrichtung 200 einiger Ausführungsformen dar. Diese Figur zeigt diese Operationen in sechs Schritten, 245, 250, 255, 257, 260 und 265 der Benutzerschnittstelle der Vorrichtung 200.
Wie in 2A gezeigt beinhaltet die mobile Vorrichtung 200 eine Anzeigenfläche 220, ein Bildaufnahme-UI-Element 215 und ein Blitzlicht-UI-Element 210. Die Anzeigenfläche 220 stellt in einigen Ausführungsformen ein Bild einer Szene dar, das durch einen Sensor der mobilen Vorrichtung aufgenommen wird, wenn die mobile Vorrichtung in einen Modus versetzt wurde als eine Kamera zu arbeiten. Das Bildaufnahme-UI-Element 215 ist ein benutzerwählbares Element, das, wenn es von einem Benutzer ausgewählt wird, die mobile Vorrichtung anweist, ein oder mehrere Bilder aufzunehmen.
In einigen Ausführungsformen umfasst die mobile Vorrichtung ein Blitzlicht für die Kamera. Demgemäß ermöglicht es das Blitzlicht-UI-Element 210 dem Benutzer in einigen Ausführungsformen das Blitzlicht an oder aus zu schalten. Wie weiter unten beschrieben ermöglicht das Blitzlicht-UI-Element 210 einem Benutzer, die Kamera der mobilen Vorrichtung in einen HDR-Modus einzustellen.
Die Arbeitsweise der mobilen Vorrichtung 200 beim Aufnehmen eines HDR-Bildes wird nun beschrieben. Der erste Schritt 245 zeigt die Benutzerschnittstelle der mobilen Vorrichtung nachdem die Vorrichtung in einen Bildaufnahmemodus versetzt wurde. In einigen Ausführungsformen kann ein Benutzer die Vorrichtung in diesen Modus versetzen durch das Auswählen eines Kamera-Icons, das in der Anzeigenfläche 220 angezeigt wird. In einigen Ausführungsformen, wenn die Vorrichtung den Kameramodus einnimmt, beginnt die Vorrichtung Bilder aufzunehmen, diese Bilder temporär in ihrem Bildpuffer zu speichern und diese Bilder vorrübergehend in der Anzeigenfläche 220 anzuzeigen. Jedoch, zeigen der erste bis vierte Schritt 245 bis 257 in 2A nicht alle der Bilder, die vorrübergehend in der Anzeigenfläche 220 angezeigt werden, um das Blitzlichtelement 210 und die Folge von UI-Elementen, die angezeigt werden, und die ausgeführten Operationen hervorzuheben. Der zweite Schritt 250 zeigt, wie der Benutzer das Blitzlicht-UI-Element 210 auswählt. Wie in 2A gezeigt kann der Benutzer diese Auswahl treffen durch das Berühren (z. B. mit einem Finger 225) der Anzeigenfläche des Berührungsbildschirms der Vorrichtung an dem Ort des Blitzlichtelements 210. Der Benutzer kann dieses Element auch wählen durch andere UI-Auswahltechniken, in einigen Ausführungsformen.
-
Der dritte Schritt 255 zeigt, dass die Auswahl des Blitzlichtelements in der Anzeige eines Blitzlichtmenüs 230 resultiert. Dieses Menü hat ein wählbares UI-Element 280 zum Anschalten des Blitzes, ein wählbares UI-Element 285 zum Ausschalten des Blitzes, ein wählbares UI-Element 290 zum Setzen des Blitzlichts auf einen Autoblitzlichtmodus und ein wählbares UI-Element 235 zum Anschalten des HDR-Bildaufnahmemodus. Während das wählbare HDR-Modus-Element 235 für einige Ausführungsformen als Teil des Blitzlichtmenüs 230 in 2A gezeigt ist, wird der Fachmann erkennen, dass dieses Element 235 eine andere Platzierung in der UI der Vorrichtung in einigen Ausführungsformen hat.
-
Der vierte Schritt 257 stellt eine Auswahl eines Benutzers des HDR-Moduswahl-Elements 235 dar. Diese Auswahl wird durch Berührung (z. B. mit einem Finger 240) des Ortes des Elements auf dem Anzeigenberührungsbildschirm der mobilen Vorrichtung getroffen. In einigen Ausführungsformen kann der Benutzer auch diesen Modus durch andere UI-Auswahltechniken auswählen.
Der fünfte Schritt 260 stellt dar, wie ein Benutzer das Bildaufnahmeelement 215 auswählt durch das Berühren (z. B. mit einem Finger 270) des Ortes dieses Elements auf dem Anzeigenberührungsbildschirm der mobilen Vorrichtung. Ebenso wie mit anderen wählbaren Elementen in der Anzeigenfläche kann der Benutzer das Bildaufnahmeelement in einigen Ausführungsformen durch andere UI-Auswahltechniken auswählen. Die Auswahl des Elements 215 veranlasst die Vorrichtung ein HDR-Bild der HDR-Szene aufzunehmen (von einer Person, die vor einem Fenster steht an einem sonnigen Tag), die der Benutzer in der Anzeigenfläche 220 betrachtet. Wiederum, sogar vor dem Einnehmen des HDR-Modus und dem Empfangen der Auswahl des Bildaufnahmeelements zeigt die Anzeigenfläche vorrübergehend die Bilder an, wie ein Vorschaubild 226, das die Kamera temporär und wiederholt aufnimmt, wenn sie den Kameramodus einnimmt. Jedoch, wie oben bemerkt, werden diese vorrübergehend angezeigten Bilder nicht in den Schritten 245 bis 257 von 2A gezeigt, um nicht die Anzeige der UI-Elemente und die Auswahl der verschiedenen UI-Elemente zu verschleiern.
-
Die sechste Schritt 265 stellt das HDR-Bild 267 dar, das die Kamera aufnimmt und speichert nach der Auswahl des Bildaufnahmeelements 215. Dieses Bild ist das bildverarbeitete digitale Bild in einigen Ausführungsformen, das die Vorrichtung erzeugt, nachdem sie ihr Bildaufnahmemodul verschiedene Bilder mit unterschiedlichen Belichtungen in Folge hat aufnehmen lassen und ihre Bildzusammensetzungsmodule hat diese Bilder zusammensetzen lassen. In einigen Ausführungsformen umfasst das HDR-Bild 267 Details, die nicht in dem Vorschaubild 262 sichtbar sind. Zum Beispiel umfasst das HDR-Bild 267 Vögel 275.
-
Wie oben bemerkt wird das Vorschaubild 262 nicht in der Anzeige in 2A gezeigt, um nicht die Anzeige der UI-Elemente und ihrer Auswahl zu verschleiern. Demgemäß zeigt 2B die Anzeige eines Vorschaubildes 262 während der Schritte der HDR-Aufnahmeoperation, die mit Bezug auf 2A beschrieben sind.
-
Software-Architektur
-
3 zeigt konzeptionell die Software-Architektur 300 der mobilen Vorrichtung einiger Ausführungsformen. In einigen Ausführungsformen kann diese Vorrichtung Bilder von HDR-Szenen aufnehmen, kann diese Bilder verarbeiten, um HDR-Bilder zu erzeugen und kann diese Bilder (z. B. als JPEG-Bilder) kodieren. Um diese Operationen auszuführen, beinhaltet diese Vorrichtung einen Aufnahmemodul-(Capture Module, CM)-Treiber 305, ein Medienaustauschmodul 310, einen Kodiertreiber 320 und ein Bildverarbeitungsmodul 325, wie in 3 gezeigt.
-
In einigen Ausführungsformen ermöglicht es das Medienaustauschmodul 310 Programmen auf der Vorrichtung, die Konsumenten und Erzeuger von Medieninhalt sind, Medieninhalt und Anweisungen auszutauschen, bezüglich der Verarbeitung des Medieninhalts. Demgemäß leitet das Medienaustauschmodul 310 in einigen Ausführungsformen Anweisungen und Medieninhalt zwischen dem Bildverarbeitungsmodul 325 und dem CM-Treiber 305 und zwischen dem Bildverarbeitungsmodul 325 und dem Kodiertreiber 320 weiter. Um das Weiterleiten von solchen Anweisungen und Medieninhalt zu ermöglichen, stellt das Medienaustauschmodul 310 von einigen Ausführungsformen einen Satz von Anwendungsprogrammierschnittstellen (Application Programming Interfaces, APIs) für die Konsumenten und Produzenten von Medieninhalt zur Verwendung bereit. In einigen solchen Ausführungsformen ist das Medienaustauschmodul 310 ein Satz von einem oder mehreren Rahmenwerken, die Teil eines Betriebssystems sind, das auf der mobilen Vorrichtung läuft. Ein Beispiel eines solchen Medienaustauschmoduls 310 ist das „Core Media“-Rahmenwerk, das von Apple Inc. bereitgestellt wird.
Das Bildverarbeitungsmodul 325 führt eine Bildverarbeitung der Bilder aus, die durch die Kamera der Vorrichtung aufgenommen sind. Beispiele solcher Operationen umfassen Belichtungsanpassungsoperationen, Fokusanpassungsoperationen, perspektivische Korrektur, Größenanpassung des Bildes, etc. Zusätzlich zu diesen Operationen führt das Bildverarbeitungsmodul 325 HDR-Bildverarbeitungsoperationen aus. Insbesondere beinhaltet in manchen Ausführungsformen das Modul 325 das HDR-Bildverarbeitungsmodul 110 von 1. Mit diesem Modul 110 führt das Modul 325 die Ausrichtung und Zusammenfügungsoperationen aus, die oben mit Bezug auf 1 beschrieben sind.
-
Durch das Medienaustauschmodul 310 tritt das Bildverarbeitungsmodul 325 mit dem CM-Treiber 305 und dem Kodiertreiber 320 wie oben beschrieben in Verbindung. Der CM-Treiber 305 dient als eine Kommunikationsschnittstelle zwischen einem Bildaufnahmemodul (Image Capture Module, ICM) 330 und dem Medienaustauschmodul 310. Das ICM 330 ist die Komponente der mobilen Vorrichtung, die verantwortlich ist für die Aufnahme einer Sequenz von Bildern mit unterschiedlichen Auflösungen, die benötigt werden um ein HDR-Bild zu erzeugen.
Von dem Bildverarbeitungsmodul 325 über das Medienaustauschmodul 310 empfängt der CM-Treiber 305 Anweisungen, dass die Vorrichtung einen HDR-Modus eingenommen hat und dass eine HDR-Bildaufnahmeanfrage gemacht wurde. Der CM-Treiber 305 leitet solche Anfragen an das ICM 330 weiter und empfängt als Antwort den notwendigen Satz an Bildern mit unterschiedlichen Auflösungen zum Erzeugen des HDR-Bildes. Der CM-Treiber 305 sendet dann diese Bilder zu dem Bildverarbeitungsmodul 325 durch das Medienaustauschmodul 310.
-
Der Kodiertreiber 320 dient als eine Kommunikationsschnittstelle zwischen dem Medienaustauschmodul 310 und einer Kodier-Hardware 335 (z. B. ein Kodier-Chip, eine Kodierkomponente auf einem System-on-Chip, etc.). In einigen Ausführungsformen empfängt der Kodiertreiber 320 Bilder (z. B. erzeugte HDR-Bilder) und stellt durch das Medienaustauschmodul 310 eine Anfrage, die Bilder von dem Bildverarbeitungsmodul 325 kodieren zu lassen. Der Kodiertreiber 320 sendet die zu kodierenden Bilder an den Kodierer 335, welcher dann Bildkodierungen (z. B. JPEG-Kodierungen) der Bilder ausführt. Wenn der Kodiertreiber 320 kodierte Bilder von dem Kodierer 335 empfängt, sendet der Kodiertreiber 320 die kodierten Bilder zurück zu dem Bildverarbeitungsmodul 325 durch das Medienaustauschmodul 310. In einigen Ausführungsformen kann das Bildverarbeitungsmodul 325 unterschiedliche Operationen auf den kodierten Bildern ausführen, die es von dem Kodierer empfängt. Beispiele von solchen Operationen beinhalten das Speichern der kodierten Bilder in einem Speicher der Vorrichtung, Übertragen der kodierten Bilder durch eine Netzwerkschnittstelle der Vorrichtung an eine andere Vorrichtung, etc.
In einigen Ausführungsformen sind einige oder alle der Module 305, 310, 320 und 325 Teile des Betriebssystems der Vorrichtung. Andere Ausführungsformen implementieren das Medienaustauschmodul 310, den CM-Treiber 305 und den Kodiertreiber 320 als Teil des Betriebssystems der Vorrichtung, während das Bildverarbeitungsmodul 325 als eine Anwendung ausgeführt ist, die auf dem Betriebssystem läuft. Andere Implementierungen des Moduls 300 sind weiterhin möglich.
-
Der Betrieb des Bildverarbeitungsmoduls 325 während einer HDR-Bildaufnahmesitzung wird nun mit Bezug auf 4 beschrieben. Diese Figur stellt konzeptionell ein Verfahren 400 dar, das eine Serie von Operationen repräsentiert, die das Bildverarbeitungsmodul 325 in einigen Ausführungsformen ausführt, um ein kodiertes HDR-Bild zu erzeugen. Das Bildverarbeitungsmodul 325 führt dieses Verfahren 400 jedes Mal aus, wenn die Vorrichtung den HDR-Modus einnimmt (z. B. nach Auswahl des HDR-Auswahlelements 235 in dem Beispiel, das in 2A dargestellt ist. Demgemäß, wie in 4 gezeigt, nimmt das Bildverarbeitungsmodul 325 zu Anfang (bei 405) den HDR-Modus ein.
Als nächstes weist das Modul 325 das Bildaufnahmemodul 330 an (bei 410), seinen HDR-Bildaufnahmemodus einzunehmen durch das Medienaustauschmodul 310 und den CM-Treiber 305. Nach dem Empfang dieser Anweisung berechnet das Bildaufnahmemodul 330 die Belichtungsdauern zum Erzeugen eines überbelichteten und eines unterbelichteten Bildes bei den gegenwärtigen Beleuchtungsbedingungen, wie oben bemerkt und weiter unten beschrieben. Ebenfalls in diesem Schritt nimmt das Bildaufnahmemodul 330 normal belichtete Bilder auf und speichert diese temporär in einem Bildpuffer. Um solche Bilder aufzunehmen, berechnet das Bildaufnahmemodul 330 wiederholt Belichtungsdauern, während die Vorrichtung in ihrem Kameramodusbetrieb ist.
-
Nach dem Anweisen des Bildaufnahmemoduls 330, seinen HDR-Modus einzunehmen, weist das Bildverarbeitungsmodul 325 das Bildaufnahmemodul 330 an (bei 415), dass es einen Befehl empfangen hat, ein HDR-Bild aufzunehmen und zu erzeugen (z. B. nach der Auswahl des Bildaufnahmeelements 215 in dem in 2A dargestellten Beispiel). Diese Anweisung wird an das Bildaufnahmemodul 330 durch das Medienaustauschmodul 310 und den CM-Treiber 305 weitergeleitet.
In Antwort auf diese Anweisung nimmt das Bildaufnahmemodul 330 in schneller Folge ein überbelichtetes Bild auf, das es basierend auf der Überbelichtungsdauer aufnimmt, die es vorhergehend für die gegenwärtige Beleuchtungsbedingung berechnet hat und nimmt ein unterbelichtetes Bild auf, das es basierend auf der Unterbelichtungsdauer aufnimmt, die es vorhergehend für die gegenwärtige Beleuchtungsbedingung berechnet hat. Zusätzlich zu diesen Bildern empfängt das Bildaufnahmemodul auch ein Bild, das es früher mit der normalen Belichtungsdauer aufgenommen hat und in seinem Bildpuffer gespeichert hat.
Durch den CM-Treiber 305 und das Medienaustauschmodul 310 empfängt das Bildverarbeitungsmodul 325 (bei 415) jedes der drei Bilder von dem Bildaufnahmemodul 330. In einigen Ausführungsformen empfängt das Bildverarbeitungsmodul 325 die drei Bilder in dem Farbraum, in welchem die Kamera die Bilder aufgenommen hat. Zum Beispiel nimmt das Bildaufnahmemodul 330 in einigen Ausführungsformen die Bilder in dem Y'CbCr-Farbraum auf und stellt diese in diesem bereit.
-
Das Bildverarbeitungsmodul richtet dann (bei 420) alle drei Bilder aneinander aus, da sich die Kamera während der Zeit, während der sie die drei Bilder aufgenommen hat, bewegt haben könnte. Wie oben bemerkt und weiter unten beschrieben verwendet das Bildverarbeitungsmodul eine hierarchische Suchtechnik, um das überbelichtete und das unterbelichtete Bild paarweise mit dem normal belichteten Bild auszurichten.
-
Nach dem Ausrichten der Bilder setzt das Bildverarbeitungsmodul (bei 425) die Bilddaten in den drei Bildern zusammen, um ein zusammengesetztes HDR-Bild zu erzeugen. In anderen Ausführungsformen verwendet das Bildverarbeitungsmodul andere Techniken, um die drei Bilder zusammenzusetzen. Zum Beispiel setzen einige Ausführungsformen die drei Bilder zusammen durch das Ausführen anderer Sätze von Operationen für den Luma-Kanal dieser Bilder als für die Chroma-Kanäle dieser Bilder. Weiterhin könnten, beim Erzeugen des HDR-zusammengesetzten Bildes, einige Ausführungsformen Luma- und Chroma-Werte erzeugen, die einen gewünschten Bereich an Werten übersteigen. Demgemäß führen einige Ausführungsformen beim Erzeugen des HDR-Bildes gleichzeitig Skalierungsoperationen aus, um sicherzustellen, dass die Luma- und Chroma-Werte des HDR-Bildes innerhalb ihrer gewünschten Bereiche erzeugt werden.
-
Nach dem Erzeugen des HDR-Bildes zeigt das Bildverarbeitungsmodul (bei 425) das erzeugte HDR-Bild an. Als nächstes weist dieses Modul (bei 430) den Kodierer 335 (durch das Medienaustauschmodul 310 und den Kodiertreiber 320) an, das HDR-Bild zu kodieren. Der Kodierer kodiert in einigen Ausführungsformen dieses Bild (z. B. kodiert es in ein JPEG-Format) und gibt das kodierte HDR-Bild aus. Das Bildverarbeitungsmodul speichert dann in einigen Ausführungsformen (bei 430) das kodierte HDR-Bild auf einem Speicher der Vorrichtung. Das Bildverarbeitungsmodul von einigen Ausführungsformen kann auch andere Operationen mit dem kodierten HDR-Bild ausführen. Zum Beispiel überträgt das Bildverarbeitungsmodul in manchen Fällen das kodierte erzeugte Bild zu einer anderen Vorrichtung über eine Netzwerkverbindung, die über eine Netzwerkschnittstelle der Vorrichtung hergestellt ist.
-
Fachleute werden erkennen, dass die Bildverarbeitungsoperationen anders als die oben beschriebenen implementiert sein können. Zum Beispiel untersucht das Bildverarbeitungsmodul von einigen Ausführungsformen, anstatt nur ein normal belichtetes Bild zu verarbeiten, mehrere normal belichtete Bilder, die das Bildverarbeitungsmodul ausgibt. Aus dieser Gruppe wählt das Bildverarbeitungsmodul das normal belichtete Bild, das das schärfste ist und das am besten mit dem aufgenommenen überbelichteten und aufgenommenen unterbelichteten Bild übereinstimmt. Alternativ nimmt die mobile Vorrichtung in einigen Ausführungsformen, anstelle des Verwendens von normal belichteten Bildern von dem Bildpuffer, nachdem ein HDR-Aufnahmebefehl empfangen wird, ein oder mehrere Bilder mit einer normalen Belichtung auf sowie das überbelichtete und unterbelichtete Bild. In einigen solcher Ausführungsformen wählt das Bildverarbeitungsmodul eines der normal belichteten Bilder (z. B. das schärfste, das letzte, etc.) zur Verwendung zum Erzeugen eines zusammengesetzten HDR-Bildes. In einigen Ausführungsformen werden die normal belichteten Bilder nach dem HDR-Aufnahmebefehl aufgenommen anstelle des Nehmens von dem Bildpuffer.
Der Fachmann wird verstehen, dass jedes Verfahren, Nehmen des normalen Bildes von einem Bildpuffer und Aufnehmen des normalen Bildes, nachdem der HDR-Befehl empfangen wird, einige Vorteile gegenüber dem jeweils anderen hat. Die Handlung des Berührens des HDR-Aufnahmebefehl-Icons bewegt die mobile Vorrichtung weg, von wo sie war, als die Bilder in den Bildpuffer genommen wurden. Wenn ein Bild von dem Bildpuffer verwendet wird, wird die Bewegung der mobilen Vorrichtung, die durch das Berühren des HDR-Aufnahmebefehl-Icons verursacht ist, zwischen dem Aufnehmen des normal belichteten Bildes und des überbelichteten und unterbelichteten Bildes stattfinden. Wenn stattdessen ein frisches normal belichtetes Bild aufgenommen wird, nachdem das HDR-Aufnahmebefehl-Icon berührt wird, wird die Bewegung, die durch die Berührung verursacht ist, geschehen, bevor das normale Bild aufgenommen wird, anstelle von zwischen der Aufnahme der Bilder. Demgemäß kann das Aufnehmen eines frischen normal belichteten Bildes den Betrag der Bewegung der Vorrichtung während der Aufnahme der drei Belichtungen reduzieren. Eine Reduzierung der Bewegung während der Aufnahme der Bilder erhöht den überlappenden zusammenzusetzenden Bereich.
Wie oben bemerkt stellen einige Ausführungsformen letzte Bilder von dem Seitenpuffer als Vorschaubilder dar und verwenden eines der Vorschaubilder als das normal belichtete Bild. Ein möglicher Vorteil des Verwendens eines normal belichteten Bildes von dem Seitenpuffer ist, dass das Bild eher wie das Vorschaubild aussehen würde, das angezeigt wird, bevor der HDR-Aufnahmebefehl empfangen wird. Ein anderer möglicher Vorteil das normale Bild von dem Seitenpuffer abzurufen ist, dass die Zeit zwischen der Aktivierung des HDR-Befehls und dem Anzeigen des zusammengesetzten HDR-Bildes kürzer sein kann (z. B. um die Belichtungsdauer des normal belichteten Bildes).
-
Weil einige Ausführungsformen eine neu aufgenommene normale Aufnahme verwenden statt ein Bild von dem Seitenpuffer, nehmen einige dieser Ausführungsformen keine normal belichteten Vorschaubilder auf und speichern sie in dem Seitenpuffer, während die mobile Vorrichtung in dem HDR-Modus ist. Jedoch nehmen einige Ausführungsformen, selbst unter Ausführungsformen, die normal belichtete Bilder verwenden, die aufgenommen werden nachdem der HDR-Befehl empfangen wird, weiterhin normal belichtete Vorschaubilder auf, um Daten über die Beleuchtungsbedingungen zu sammeln, um zu bestimmen was die normale zu verwendende Belichtungsdauer ist, welche Belichtungswerte zu verwenden sind, etc.
-
Bildaufnahmemodul
-
5A stellt das Bildaufnahmemodul 330 von einigen Ausführungsformen der Erfindung dar. Auf die Anweisung des Bildverarbeitungsmoduls 325 hin weist das Bildaufnahmemodul 330 die Kamera der Vorrichtung an, Bilder aufzunehmen. Zum Beispiel, wie oben bemerkt, weist das Bildaufnahmemodul 330 in einigen Ausführungsformen die Kamera an, damit zu beginnen, normal belichtete Bilder mit einer bestimmten Bildfrequenz aufzunehmen, wenn die Vorrichtung ihren Kamerabetriebsmodus einnimmt. Ebenfalls, wenn die Vorrichtung ihren HDR-Modus einnimmt, nimmt das Modul 330 seinen HDR-Modus ein (auf die Anweisung des Bildverarbeitungsmoduls 325 hin) durch das Berechnen von Belichtungsdauern zum Aufnehmen von des überbelichteten und unterbelichteten Bildes. Nachfolgend, wenn es einen Bildaufnahmebefehl empfängt, während es in seinem HDR-Modus ist, nimmt das Bildaufnahmemodul 330 in einigen Ausführungsformen (1) zwei aufeinander folgende Bilder auf, eines mit der Überbelichtungsdauer und eines mit der Unterbelichtungsdauer, und (2) gibt diese zwei Bilder zusammen mit einem oder mehreren normal belichteten Bildern von seinem Bildpuffer aus.
-
Wie in 5A gezeigt umfasst das Bildaufnahmemodul 330 ein Sensormodul 515, einen Bildpuffer 520, eine Bildverarbeitungspipeline 525, eine Statistikmaschine 530 und ein Steuermodul 535. In einigen Ausführungsformen wird alle der Module des Bildaufnahmemoduls 330 in Hardware implementiert (z. B. ASIC, FPGA, SOC mit einem Mikro-Controller, etc.), während in anderen Ausführungsformen einige oder alle Module des Bildaufnahmemoduls 330 in Software implementiert sind.
Das Sensormodul 515 koppelt sich kommunikativ mit einer Sensorschnittstelle 510 und einem Kamerasensor 505 der Kamera der Vorrichtung. In einigen Ausführungsformen ist der Kamerasensor 505 ein CMOS-Sensor und die Sensorschnittstelle 510 ist Teil des Kamerasensors 505. Das kommunikative Koppeln zwischen dem Sensormodul und dem Kamerasensor/der Sensorschnittstelle wird durch irgendeine Anzahl von bekannten Sensorschnittstellen ermöglicht. Durch dieses kommunikative Koppeln kann das Sensormodul 515 Anweisungen an die Kamera weiterleiten, um verschiedene Aspekte der Operationen der Kamera, wie ihr Energieniveau, Zoom-Niveau, Fokus, Belichtungsniveau, etc. zu steuern. In einigen Ausführungsformen kommen diese Anweisungen typischerweise von dem Steuermodul 535. Ebenfalls, kann das Sensormodul 515 durch sein kommunikatives Koppeln mit der Kamera den Kamerasensor anweisen, mit der Aufnahme von Bildern zu beginnen, wenn das Bildverarbeitungsmodul 325 die Kamera anweist, mit dem Aufnehmen von Bildern zu beginnen und das Sensormodul 515 empfängt diese Anweisung durch das Steuermodul 535 wie weiter unten beschrieben.
-
In einigen Ausführungsformen sind Bayer-Filter über den Kamerasensor überlagert und damit gibt der Kamerasensor Bayer-Musterbilder aus, welche in der Sensorschnittstelle, die mit dem Kamerasensor assoziiert ist, gespeichert werden. Ein Bayer-Musterbild ist ein Bild, in dem jeder Pixel nur einen Farbwert speichert: rot, blau oder grün. Durch seine Kopplung mit der Sensorschnittstelle 510 empfängt das Sensormodul 515 hohe Bayer-Musterbilder, die in der Kamerasensorschnittstelle 510 gespeichert sind. Durch das Steuern der Frequenz, mit welcher das Sensormodul 515 Bilder von einer Sensorschnittstelle der Kamera abruft kann das Sensormodul 515 die Bildfrequenz der Bilder steuern, die durch eine bestimmte Kamera aufgenommen werden.
-
Das Sensormodul 515 speichert Bilder, die es von der Sensorschnittstelle 510 in dem Bildpuffer 520 abruft. Die Bilder, die in dem Bildpuffer 520 gespeichert sind, sind rohe, unverarbeitete Bilder. Bevor das Bildverarbeitungsmodul 325 diese Bilder verarbeiten kann, muss die Bildverarbeitungspipeline 525 des Bildaufnahmemoduls 330 verschiedene Vorverarbeitungsoperationen auf ihnen ausführen. Unterschiedliche Ausführungsformen führen unterschiedliche Sätze von Vorverarbeitungsoperation aus. Zum Beispiel beinhaltet in einigen Ausführungsformen die Bildverarbeitungspipeline 525 ein Demosaic-Modul (nicht gezeigt) das ein rot, grün, blau (RGB) Bild von einem Bayer-Musterbild rekonstruiert, das in dem Bildpuffer 520 gespeichert ist, durch Interpolation der Farbwerte von jedem Satz an Farben in dem Bayer-Musterbild. Ebenfalls beinhaltet die Bildverarbeitungspipeline 525 einiger Ausführungsformen ein Farbraumumwandlungsmodul (nicht gezeigt), das das RGB-Bild in ein Y'CbCr-Bild umwandelt.
Beispiele von anderen Modulen, die in der Bildverarbeitungspipeline 525 von einigen Ausführungsformen umfasst sind, umfassen Module, die (1) schlechte-Pixel-Entfernung ausführen, um zu versuchen schlechte Pixel in den Bildern, die von dem Bildpuffer abgerufen werden, zu korrigieren, (2) Linsentönungskorrektur ausführen, um Bilddefekte, die durch die Kameralinse verursacht sind, zu korrigieren, (3) Weißabgleichkorrektur ausführen, um Farben des Bildes anzupassen, um neutrale Farben korrekt wiederzugeben, etc. Wie hierin verwendet bezieht sich das Umwandeln von einem Format in ein anderes auf die Verwendung von Daten von einem Bild in einem Format, um ein Bild in einem anderen Format zu erzeugen. In einigen Ausführungsformen ersetzt die neue Version des Bildes die alte Version; in anderen Ausführungsformen werden sowohl die alte als auch die neue Version des Bildes beibehalten.
-
Die Statistikmaschine 530 sammelt Bilddaten auf verschiedenen Schritten der Bildverarbeitungspipeline 525. Weiterhin sammelt diese Maschine in anderen Ausführungsformen Daten auf andere Weise von anderen Schritten der Bildverarbeitungspipeline 525. Die Statistikmaschine 530 verarbeitet die gesammelten Daten und passt, basierend auf den verarbeiteten Daten, die Operationen des Kamerasensors 505 durch das Steuermodul 535 und das Sensormodul 515 an. Beispiele solcher Operationen beinhalten Belichtung und Fokus. In einigen Ausführungsformen wird die Belichtungsdauer durch eine Kombination der Sensorintegrationsdauer und der Sensor-/Aufnahmemodul-Analog-/Digitalverstärkungen bestimmt. Obwohl 5A die Statistikmaschine 530 zeigt als den Kamerasensor 505 durch das Steuermodul 535 steuernd, steuert die Statistikmaschine 530 in anderen Ausführungsformen den Kamerasensor jedoch durch das Sensormodul 515. Ebenso, obwohl die Statistikmaschine 530 als separat von dem Steuermodul 535 gezeigt ist, wird die Operation dieser Maschine durch das Steuermodul 535 ausgeführt. Mit anderen Worten, die Modularisierung der Statistikmaschine in 5A ist eine Konzeptualisierung einer Folge von Operationen, die durch das Bildverarbeitungsmodul 330 ausgeführt werden.
-
Das Steuermodul 535 von einigen Ausführungsformen ist ein Mikro-Controller, der den Betrieb des Bildaufnahmemoduls 330 steuert. Zum Beispiel weist das Steuermodul 535 in einigen Ausführungsformen den Kamerasensor 505 über das Sensormodul 515 an, Bilder aufzunehmen. Ebenso steuert das Steuermodul 535 in einigen Ausführungsformen (1) den Betrieb der Kamerasensoren (z. B. Belichtungsniveau) durch das Sensormodul 515, (2) den Betrieb der Bildverarbeitungspipeline 525 und (3) ein Blitzlicht/Stroboskop (nicht gezeigt), welches Teil der mobilen Vorrichtung einiger Ausführungsformen ist. Anstelle des Empfangens von Belichtungseinstellungen von dem Steuermodul 535 oder in Verbindung mit diesen Einstellungen verwenden der Kamerasensor 505 oder das Sensormodul 515 einiger Ausführungsformen Standardwerte für die Kamerasensoroperationen.
-
Einige Ausführungsformen des Steuermoduls 535 verarbeiten Anweisungen, die von der Statistikmaschine 530 und dem Aufnahmemodultreiber 305 empfangen werden. In einigen Ausführungsformen sind die Anweisungen, die von dem Aufnahmemodultreiber 305 empfangen werden, Anweisungen von der mobilen Vorrichtung (d. h. von der lokalen Vorrichtung empfangen) während in anderen Ausführungsformen die Anweisungen, die von dem Aufnahmemodultreiber 305 empfangen werden Anweisungen von einer anderen Vorrichtung sind. Basierend auf den verarbeiteten Anweisungen kann das Steuermodul 535 den Betrieb des Bildverarbeitungsmoduls 330 anpassen.
-
5B stellt das Bildaufnahmemodul 330 von einigen anderen Ausführungsformen der Erfindung dar. In 5B steuert das Sensormodul 515 nicht den Kamerasensor 505 direkt und empfängt nicht Befehle von dem Steuermodul 535. In dieser Figur steuert das Steuermodul 535 den Kamerasensor 505. In 5B leitet das Sensormodul 515 Daten von der Sensorschnittstelle 510 an den Bildpuffer 520 weiter, genauso wie es das Sensormodul 515 in 5A tut.
-
6 stellt ein Verfahren 600 dar, das konzeptionell eine Folge von Operationen des Bildaufnahmemoduls 330 während einer HDR-Bildaufnahmesitzung darstellt. Dieses Verfahren beginnt jedes Mal damit, dass die Vorrichtung ihren Bildaufnahmemodus einnimmt. Wie in 6 gezeigt beginnt dieser Prozess am Anfang (bei 605) mit dem Aufnehmen von Bildern mit einer bestimmten Standardfrequenz. Basierend auf einer oder mehreren Eigenschaften (z. B. ein Histogramm oder ein Gesamtbeleuchtungsniveau) von einem oder mehreren der aufgenommenen Bilder erfasst das Steuermodul 535 in einigen Ausführungsformen (bei 605) die gegenwärtige Beleuchtungsbedingung. Basierend auf der gegenwärtigen Beleuchtungsbedingung definiert das Steuermodul (bei 605) die Belichtungsdauer zum Aufnehmen eines normal belichteten Bildes (unten als ein EVo-Bild bezeichnet) und leitet (bei 605) diese Belichtungsdauer an das Sensormodul 515 weiter. In anderen Ausführungsformen erfasst Steuerlogik, die mit dem Kamerasensor 505 oder dem Sensormodul 515 assoziiert ist, die Beleuchtungsbedingung und definiert die Belichtungsdauer für die normale Belichtung (als die EVo-Belichtung bezeichnet). In einigen Ausführungsformen beinhaltet diese Steuerlogik Lichtdetektionsschaltkreise, die die Menge an Licht, unter der die Vorrichtung arbeitet, quantifizieren können.
Unabhängig davon wo und wie die normale Belichtungsdauer berechnet wird, beginnt das Verfahren 600 Bilder mit der normalen Belichtungsdauer aufzunehmen und speichert die aufgenommenen Bilder in dem Bildpuffer. In einigen Ausführungsformen berechnet das Verfahren 600 die normale Belichtungsdauer wiederholt während der Bildaufnahmesitzung, um die normale Belichtungsdauer zu identifizieren, während sich die Beleuchtungsbedingung ändert.
-
Nach 605 empfängt das Steuermodul 535 (bei 610) eine Anweisung, dass es einen HDR-Modusbefehl von dem Bildverarbeitungsmodul 325 durch den CM-Treiber 305 und das Medienaustauschmodul 310 empfangen hat. Basierend auf diesem Befehl berechnet das Steuermodul 535 (bei 615) die Belichtungsdauern zum Aufnehmen eines überbelichteten und unterbelichteten Bildes (Aufnehmen eines EV+ und EV--Bildes) während der gegenwärtigen Beleuchtungsbedingungen. In einigen Ausführungsformen führt das Steuermodul die Operation 615 wiederholt während der HDR-Aufnahmesitzung aus, um die Über- und Unterbelichtungsdauer zu identifizieren, wenn sich die Beleuchtungsbedingung ändert. Als nächstes, bei 620, empfängt das Steuermodul 535 eine Anweisung ein Bild aufzunehmen. Als Antwort weist das Steuermodul 535 (bei 625 und 630) das Sensormodul an, ein überbelichtetes Bild mit der Überbelichtungsdauer und ein unterbelichtetes Bild mit der Unterbelichtungsdauer aufzunehmen. Das Steuermodul 535 weist dann (bei 635) die Bildverarbeitungspipeline 525 an, das aufgenommene EV+ und aufgenommene EV--Bild von dem Bildpuffer zusammen mit einem oder mehreren EVo-Bildern in dem Bildpuffer abzurufen. Wie oben bemerkt gibt das Bildaufnahmemodul verschiedene EVo-Bilder an das Bildverarbeitungsmodul 325 in einigen Ausführungsformen aus, um dem Modul 325 zu ermöglichen, das beste EVo-Bild zur Ausrichtung mit dem EV+ und EV--Bild auszuwählen. Alternativ gibt das Bildaufnahmemodul 330 in einigen Ausführungsformen nur ein normal belichtetes Bild aus, aber versucht sicherzustellen, dass dieses ausgegebene Bild nicht verschwommen ist (d. h. scharf ist). In anderen Ausführungsformen versucht das Bildaufnahmemodul 330 sicherzustellen, dass das Bild auf verschiedene Weisen scharf ist. Zum Beispiel verwendet das Bildaufnahmemodul, in einigen Ausführungsformen, in denen die Vorrichtung einen Beschleunigungsmesser und/oder Gyroskop hat, Daten, die von dem Beschleunigungsmesser und/oder Gyroskop aufgenommen sind, um die Wahrscheinlichkeit des Verschwommenseins der normal belichteten Bilder zu ermitteln, um ein normal belichtetes Bild auszuwählen, das scharf ist.
-
In anderen Ausführungsformen weist das Steuermodul 535 (bei 635) die Bildverarbeitungspipeline 525 an, das überbelichtete, unterbelichtete und normal belichteten Bilder unterschiedlich abzurufen. In einigen Ausführungsformen benachrichtigt das Steuermodul 535 einfach die Verarbeitungspipeline 525, dass das überbelichtete und unterbelichtete Bild aufgenommen werden, und die Verarbeitungspipeline 525 ruft die korrekten Bilder von dem Bildpuffer 520 ab.
-
Die Bildverarbeitungspipeline 525 vorverarbeitet (bei 640) jedes Bild, das von dem Bildpuffer 520 abgerufen wird. Das Bildaufnahmemodul 330 gibt jedes abgerufene und vorverarbeitete Bild an das Bildverarbeitungsmodul 325 zur HDR-Bilderzeugung aus (bei 640).
Nach 640 endet das Verfahren, wenn die Vorrichtung nicht länger in dem HDR-Aufnahmemodus ist und kehrt zu 620 zurück, um auf einen anderen „Bildaufnahme“-Befehl zu warten.
-
Die obige Beschreibung identifiziert die aufgenommenen Bilder als die Quelle(n) von Information über Beleuchtungsbedingungen. Jedoch bestimmt der Kamerasensor 505 in einigen Ausführungsformen die Beleuchtungsbedingungen ohne das Erzeugen von Bilddaten. Die mobilen Vorrichtungen einiger Ausführungsformen verwenden zusätzliche Sensoren anstelle von oder zusätzlich zu dem Kamerasensor 505, um die Beleuchtungsbedingungen zu bestimmen.
-
BILDAUSRICHTUNG
-
Einleitung
-
Um ein zusammengesetztes Bild aus drei Bildern herzustellen, die von einer Szene durch eine mobile Vorrichtung aufgenommen wurden, müssen die Pixel in jedem Bild, die einen bestimmten Teil der Szene zeigen, mit den Pixeln in jedem der anderen Bilder zusammengesetzt werden, die denselben Teil der Szene zeigen. Wenn sich die mobile Vorrichtung nicht bewegt, während die Bilder aufgenommen werden, dann werden die Pixel, die einen bestimmten Teil einer Szene in jedem Bild repräsentieren, dieselben Koordinaten in dem Bild haben, wie die Pixel, die denselben Teil der Szene in jedem der anderen Bilder repräsentieren, haben. Solche Bilder können als ausgerichtet charakterisiert werden. Jedoch, wenn sich die mobile Vorrichtung während der Aufnahme der Bilder bewegt, werden die Pixel, die einen bestimmten Teil einer Szene in einem Bild repräsentieren, leicht andere Koordinaten haben, als die Pixel, die denselben Teil der Szene in den anderen Bildern repräsentieren. Mit anderen Worten, Bilder, die mit einer sich bewegenden Vorrichtung aufgenommen werden, werden nicht ausgerichtet sein.
-
Vor dem Zusammensetzen der Bilder kompensieren manche Ausführungsformen die Bewegung der mobilen Vorrichtung durch ein Ausrichten der Bilder, bevor sie zusammengesetzt werden. Das bedeutet, die Anzahl der Pixel, um welche die Rohbilder voneinander in vertikaler und in horizontaler Richtung verschoben sind, wird bestimmt, sodass die mobile Vorrichtung dann Pixel von jedem Bild kombinieren kann, die zu demselben Teil der Szene korrespondieren, obwohl die korrespondierenden Pixel nicht in jedem der Rohbilder dieselben Koordinaten haben. Die Verschiebung, die entsprechende Pixel in 2 Bildern ausrichtet, kann als ein Verschiebungsvektor, gemessen in Pixel, charakterisiert werden.
-
Eine Verschiebung zwischen zwei Bildern, die von derselben Szene aufgenommen sind, kann durch Rotation oder Translation der mobilen Vorrichtung, während die Bilder aufgenommen werden, verursacht sein. Wenn ein Benutzer eine mobile Vorrichtung einiger Ausführungsformen anweist, ein Bild mit hohem Dynamikbereich aufzunehmen, nimmt die mobile Vorrichtung drei Bilder in schneller Folge mit sehr wenig Zeit zwischen der Aufnahme von jedem Bild auf. Jedoch, trotz der kurzen Zeit zwischen der Aufnahme von jedem der Bilder wird sich die handgehaltene mobile Vorrichtung höchstwahrscheinlich leicht während der Aufnahme der 3 Bilder bewegen. Zum Beispiel kann die Handlung des Berührens der mobilen Vorrichtung, um sie anzuweisen, ein HDR Bild aufzunehmen, die Vorrichtung bewegen. Aufgrund der Bewegung der mobilen Vorrichtung wird jedes Bild aus einer leicht anderen Position aufgenommen. Aufgrund der leichten Änderungen der Position werden die Rohbilder nicht aneinander ausgerichtet sein. Bevor der Hochdynamikbereichsprozess die Bilder, die mit unterschiedlichen Belichtungen aufgenommen sind, zusammensetzen kann, müssen die Bilder aneinander (zum Beispiel durch die mobile Vorrichtung) ausgerichtet werden durch das Herausfinden der spezifischen Verschiebungsvektoren, die die Bilder in Übereinstimmung bringen werden. Solche Ausrichtungen sind Teil eines Verfahrens, das manchmal „Deckung“ genannt wird.
-
Die Anzahl an Pixeln, die ein Bild von einem anderen verschoben ist, hängt davon ab, wie weit sich die Kamera bewegt (durch Translation und Rotation) beim Aufnehmen der Bilder und dem Maßstab der Bilder (zum Beispiel wie viele Zentimeter oder Grad der Szene werden durch jeden Pixel in einem Bild repräsentiert). Zum Beispiel könnte die Rotations- oder Translationsbewegung der Kamera dazu führen, dass 2 Bilder der Szene 10 cm verschoben sind (zum Beispiel zeigt ein Bild 10cm mehr von der linken Seite der Szene und 10cm weniger von der rechten Seite der Szene als das andere Bild). In solch einem Fall, wenn der Maßstab des Bildes die Länge von 1 Pixel in einem Bild 1 cm in der Szene gleichsetzt, dann werden die Bilder um 10 Pixel verschoben sein. Dieser Maßstab wird bereitgestellt, um zu erklären, wie eine Änderung der Position des Bildes bezogen auf Gegenstände der echten Welt in der Szene sich in eine Änderung in dem Bild bezogen auf die Pixel, die das Bild darstellen, übersetzt. In einigen Ausführungsformen misst die mobile Vorrichtung nicht den tatsächlichen Maßstab des Bildes.
-
Die mobile Vorrichtung einiger Ausführungsformen hat kein exaktes Maß, wie weit die Vorrichtung sich während der Aufnahme des Bildes bewegt hat. Deshalb ist die Verschiebung, die die Bilder ausrichten wird, in solchen Ausführungsformen unbekannt, wenn die Bilder aufgenommen werden. Die mobile Vorrichtung einiger Ausführungsformen wird Verschiebungen identifizieren, die 2 Bilder ausrichten, durch das Testen eines Bereichs an Verschiebungsvektoren. Der Satz an Verschiebungsvektoren in dem Bereich, der durch eine mobile Vorrichtung getestet wird, um zu bestimmen, ob sie ein gegebenes Paar an Bildern ausrichten, wird hierin als „potenzielle Verschiebungsvektoren“ oder „potenzielle Verschiebungen“ bezeichnet. Die mobile Vorrichtung einiger Ausführungsformen bestimmt, welcher potenzielle Verschiebungsvektor die Bilder ausrichten wird durch ein Vergleichen der Bilder (oder Bitmaps, die von den Bildern abgeleitet sind) bei unterschiedlichen Werten der Verschiebungsvektoren. Der Bereich der potenziellen Verschiebungen ist in einigen Ausführungsformen auf jene Verschiebungen begrenzt, die eine wesentliche Überlappung zwischen den Bildern bestehen lassen würden. Verschiebungen, die nicht eine wesentliche Überlappung bestehen lassen würden, werden in solchen Ausführungsformen nicht getestet, weil das Zusammensetzungsverfahren primär auf den überlappenden Abschnitten der Bilder arbeitet. Die Bewegung einer mobilen Vorrichtung in den Händen eines Benutzers, der versucht, sie stabil zu halten beim Aufnehmen eines Bildes, ist wahrscheinlich relativ klein; deshalb wird die Ausrichtungsverschiebung oft klein sein verglichen mit der Größe der Bilder. Jedoch testen einige Ausführungsformen einen größeren Bereich von Verschiebungen, nur im Fall, dass die Bewegung größer als gewöhnlich war. In einigen Ausführungsformen werden ein oder mehrere externe Sensoren (zum Beispiel Gyroskope, Bewegungssensoren, etc.) verwendet, um die Verschiebung und/oder Rotation der mobilen Vorrichtung zu schätzen. Solch eine Schätzung wird in einigen Ausführungsformen verwendet, um einen Startpunkt zum Suchen nach Verschiebungsvektoren zu bestimmen. In einigen Ausführungsformen wird die Schätzung verwendet, um einen Bereich von zu untersuchenden Verschiebungsvektoren zu bestimmen (zum Beispiel, wenn die mobile Vorrichtung sehr stabil gehalten wird, ist der Suchbereich geringer, als wenn die mobile Vorrichtung weniger stabil gehalten wird).
-
Selbst in Ausführungsformen, die den Bereich von potenziellen Verschiebungen begrenzen auf jene, die eine wesentliche Überlappung zwischen den Bildern bestehen lassen, kann die Anzahl von potenziellen Verschiebungen groß sein. Zum Beispiel, wenn die potenzielle Verschiebung sich von 0% bis 6,4 % der Breite und Höhe eines Bildes erstreckt, das 1000 Pixeln im Quadrat ist, könnte der potenzielle Verschiebungsvektor zwischen 0 und 64 Pixeln in jeder Richtung (hoch, runter, links oder rechts) sein. Mit diesem Bereich von potenziellen Verschiebungsvektoren ist die Gesamtanzahl der möglichen Verschiebungsvektoren ungefähr 16000 (ungefähr 128 vertikale Pixel mal 128 horizontale Pixel). Wenn es tausende von potenziellen Verschiebungsvektoren zu testen gibt, benötigt das Testen der potenziellen Verschiebungsvektoren durch das direkte Vergleichen großer Bilder (oder großer Bitmaps) bei jedem möglichen Verschiebungsvektor eine sehr große Anzahl an Berechnungen.
Um die Anzahl an Berechnungen zu reduzieren, die ausgeführt werden, um die tatsächliche Verschiebung zu finden, führen einige Ausführungsformen ein hierarchisches Ausrichtungsverfahren aus. Das hierarchische Ausrichtungsverfahren einiger Ausführungsformen erzeugt Versionen des Bildes mit geringeren Auflösungen. Das Bild mit geringerer Auflösung enthält dieselbe Szene, aber mit einem größeren Maßstabsfaktor. Zum Beispiel, wenn ein 1000×1000 (Pixel × Pixel) Bild eine Szene repräsentiert, die 10 m breit ist, dann repräsentiert eine Pixellänge in dem Bild 1 cm in der Szene. Eine Pixellänge in einem 500×500 Auflösungsbild, das von dem 1000×1000 Bild erzeugt wurde, repräsentiert 2 cm in der Szene. Ähnlich repräsentiert eine Pixellänge in einem 250×250 Auflösungsbild, das von dem 500×500 Bild erzeugt wurde, 4 cm in der Szene.
-
Aufgrund der Unterschiede im Maßstab (das heißt weniger Pixel repräsentieren dieselbe Szene) decken die potenziellen Verschiebungsvektoren bei geringeren Auflösungen denselben Anteil des Bildes ab, aber die absolute Anzahl von potenziellen Verschiebungsvektoren ist kleiner. In dem obigen Beispiel würde das Verringern der Auflösung um einen Faktor von 4 (von 1000 Pixel im Quadrat zu 250 Pixel im Quadrat) den Bereich von möglichen Verschiebungen von plus oder minus 64 Pixel auf plus oder minus 16 Pixel (das heißt 64 Pixel geteilt durch 4) reduzieren. Solch eine Reduzierung verringert die Anzahl von möglichen Verschiebungsvektoren um einen Faktor von 16 (das heißt, von ungefähr 16000 möglichen Verschiebungsvektoren zu ungefähr 1000 möglichen Verschiebungsvektoren). Solch ein Verfahren findet den Verschiebungsvektor durch das Starten mit einer ersten Näherung bzw. Schätzungen und dann dem Bestimmen des tatsächlichen Verschiebungsvektors durch nacheinander folgende feinere Annäherungen bzw. Schätzungen.
-
Die Verfahren einiger Ausführungsformen berechnen die nachfolgenden Annäherungen eines Verschiebungsvektors, der 2 Bilder ausrichtet, durch das Erzeugen von Versionen mit reduzierter Auflösung der Rohbilder, Erzeugen von 1-Bit-Bitmaps von den Versionen der Bilder mit niedrigerer Auflösung und Ausrichten der Bitmaps. Die Bitmaps werden beginnend mit den Bitmaps mit niedrigster Auflösung ausgerichtet. Um die Bitmaps auszurichten, vergleichen die Verfahren 2 Bitmaps miteinander unter Verwendung von verschiedenen Testverschiebungsvektoren, um den tatsächlichen Verschiebungsvektor zwischen den Bitmaps zu bestimmen. Die Verfahren einiger Ausführungsformen vergleichen einen Untersatz der Pixel in den Bitmaps anstelle des Vergleichens aller Pixel in den Bitmaps. In einigen solcher Ausführungsformen unterteilen die Verfahren vor dem Vergleichen zweier Bitmaps eines oder beide der Bitmaps in Kacheln und verwerfen Kacheln, die mehr als einen Schwellwertprozentsatz von schwarzen Pixel oder mehr als einen Schwellwertprozentsatz von weißen Pixeln enthalten. Solche Verfahren vergleichen dann die Pixel in den verbleibenden Kacheln, um den Verschiebungsvektor zwischen den Bitmaps zu bestimmen. Der Verschiebungsvektor, der für jede Auflösung der Bitmaps identifiziert wird, wird als ein Startpunkt zum Testen von Verschiebungsvektoren für die nächsthöhere Auflösung von Bitmaps verwendet. Diese Verfahren werden weiter mit Bezug auf 7-11 unten beschrieben.
-
Erzeugung von Bitmaps zur Ausrichtung
-
Einige Ausführungsformen erzeugen mehrere Bitmaps zur Verwendung, um nach dem Verschiebungsvektor zu suchen, der 2 Bilder ausrichten wird. 7 stellt ein Verfahren 700 einiger Ausführungsformen zum Erzeugen solch einer Folge von Bitmaps zum Ausrichten von Bildern dar. Wie hierin verwendet, bezieht sich der Begriff „Bitmap“ auf eine Version eines Bildes mit einer Farbtiefe von einem Bit pro Pixel. Jeder Pixel in solch einer Bitmap kann entweder als schwarz oder weiß repräsentiert werden.
-
Das Verfahren 700 empfängt (bei 710) ein Originalbild. In einigen Ausführungsformen werden die Bilder von der Kamera der mobilen Vorrichtung empfangen. Die Kameraoperationen der mobilen Vorrichtung einiger Ausführungsformen werden durch ein Programm gesteuert, das unabhängig ist von einem Programm, das das Verfahren 700 ausführt. In einigen solcher Ausführungsformen wird das Bild von dem Programm empfangen, das die Kameraoperationen steuert. In anderen Ausführungsformen steuert ein einzelnes Programm sowohl die Kameraoperationen und führt das Verfahren 700 aus. In einigen solcher Operationen empfängt das Programm, das sowohl das Bitmap-Erzeugungsverfahren 700 als auch die Kameraoperationen der mobilen Vorrichtung implementiert, die Bilder von der Kamerahardware. Die Programme einiger Ausführungsformen empfangen Bilder von einem Speicher der mobilen Vorrichtung anstelle von oder zusätzlich zu dem Empfangen von Bildern von der Kamerahardware. Unterschiedliche Ausführungsformen der mobilen Vorrichtung stellen das Bild in unterschiedlichen Formaten bereit. In einigen Ausführungsformen werden die Bilder mittels eines Helligkeitswerts und einem Satz von Farbwerten für jeden Pixel dargestellt. Zum Beispiel, in einigen Ausführungsformen, empfängt das Verfahren die Bilder in einem Y'CbCr (Luma, Blau-Chroma und Rot-Chroma) Format. In einigen Ausführungsformen werden die Bilder mittels anderer Farbkomponentenwerte repräsentiert. Anstelle von oder zusätzlich zu dem Bereitstellen von Bildern in einem Luma/Chroma Format stellt die mobile Vorrichtung einiger Ausführungsformen Bilder mittels verschiedener Farbkomponentenwerte bereit. Die Farbkomponentenwerte einiger Ausführungsformen werden in einem RGB Format (zum Beispiel ein sRGB-Bild) bereitgestellt. In solchen Ausführungsformen wandelt das Verfahren 700 die Bilder in ein Luma Bild um, als Teil der Empfangsoperation.
-
Das Verfahren dezimiert (bei 720) das Original Luma Bild. Die Dezimierung des Originalbildes erzeugt eine Kopie des Bildes mit der Hälfte der Auflösung (in jeder Dimension) des Originals. Zum Beispiel, wenn das Originalbild eine Auflösung von 1920×1280 hat, wird die Kopie eine Auflösung von 960×640 haben.
-
Das Verfahren 700 führt die Dezimierung eine bestimmte Anzahl von Malen aus, um eine Anzahl von Bildern mit unterschiedlichen Auflösungsniveaus zu erzeugen, zur Verwendung für nacheinander folgende Annäherungen des Verschiebungsvektors, zum Beispiel in dem Verfahren von 9 bis 10. Verschiedene Ausführungsformen dezimieren die Bilder verschiedene Anzahl von Malen. In einigen Ausführungsformen beeinflusst die Anzahl von Dezimierungen den Bereich von potenziellen Verschiebungen. Je niedriger die Auflösung eines gegebenen Bildes ist, desto niedriger ist die Anzahl von potenziellen Verschiebungsvektoren für einen gegebenen Prozentsatz des Bildes. Demgemäß werden in einigen Ausführungsformen umso mehr Niveaus an Dezimierung verwendet, je größer der Bereich von potenziell zu testenden Verschiebungen ist. Die Anzahl der Niveaus an Dezimierung ist in einigen Ausführungsformen vorprogrammiert. Zum Beispiel stellen einige Ausführungsformen ein Originalbild und 5 Niveaus an Dezimierung bereit, wobei das dezimierte Bild mit der niedrigsten Auflösung 1/32 der Auflösung des Originalbildes (in jeder Dimension) ist und 1/1024 der Anzahl an Pixeln hat. Einige Ausführungsformen stellen ein Originalbild und 6 Niveaus an Dezimierung bereit, wobei das dezimierte Bild mit der niedrigsten Auflösung 1/64 der Auflösung des Originalbildes (in jeder Dimension) ist und 1/4096 der Anzahl an Pixeln hat. Die Abnahme der Auflösung resultiert in einer entsprechenden Abnahme der Anzahl von potenziellen Verschiebungsvektoren in einem gegebenen Bruchteil des Bildes. Deshalb verringert eine 1-zu - 4096-Verringerung der Pixel die Anzahl von potenziellen Verschiebungsvektoren in einem gegebenen Bruchteil des Bildes um einen Faktor von 4096.
-
Die Anzahl an Dezimierungen ist in einigen Ausführungsformen voreingestellt. Jedoch können lokale Bedingungen, wie eine zittrige Hand oder niedrige Lichtniveaus, die Bewegung der mobilen Vorrichtung beeinflussen. Deshalb ermöglichen es einige Ausführungsformen dem Benutzer, zusätzlich zu oder anstelle von dem Verwenden einer voreingestellten (Standard) Anzahl an Dezimierungen die Anzahl an Dezimierungsniveaus zu bestimmen oder die mobile Vorrichtung die Anzahl an Dezimierungsniveaus dynamisch bestimmen zu lassen in Antwort auf eine oder mehrere Variablen, die zu den Zeiten verfügbar sind, zu denen die Originalbilder aufgenommen werden. Zum Beispiel, beim Aufnehmen der drei HDR Bilder mit längeren Gesamtbelichtungsdauern (zum Beispiel in Wenig-Licht-Bedingungen) hat die Hand des Benutzers mehr Zeit sich zu bewegen und kann sich deshalb weiter bewegen bei der gleichen Geschwindigkeit. Einige Ausführungsformen gleichen die zusätzliche Bewegung durch ein Erhöhen der Niveaus an Dezimierung aus, um die zusätzliche Zeit zur Bewegung auszugleichen. Die mobilen Vorrichtungen einiger Ausführungsformen umfassen Bewegungssensoren, die zumindest einen Hinweis liefern, wie schnell die Hände des Benutzers sich bewegen. In einigen solcher Ausführungsformen gibt eine schnellere Bewegung der mobilen Vorrichtung während der Aufnahme der Bilder der mobilen Vorrichtung Anlass, mehrere Dezimierungsniveaus zu erzeugen.
Unabhängig davon, wie die Anzahl an Dezimierungen bestimmt wird, gibt es eine endliche Anzahl an Dezimierungen. Demgemäß bestimmt das Verfahren (bei 730), ob die Dezimierung oft genug wiederholt wurde, um die gewünschte Anzahl an dezimierten Bildern zu erzeugen. Wenn die Dezimierung nicht oft genug wiederholt wurde, dann kehrt das Verfahren nach 720 zurück, um das Bild zu dezimieren, das in der vorherigen Runde der Dezimierung erzeugt wurde. Jede Wiederholung der Dezimierung (bei 720) erzeugt eine neue Kopie des Bildes mit nacheinander folgend kleineren Auflösungen. Zum Beispiel, wenn die Dezimierung 6mal ausgeführt wird, beginnend mit einem Originalbild mit einer Auflösung von 1920×1280, dann würde die Gesamtzahl von Bildern 7 sein (inklusive dem Originalbild) mit Auflösungen von 1920×1280 (Originalbild), 960×640 (erstes dezimiertes Bild), 480×320 (zweites dezimiertes Bild), 240×160 (drittes dezimiertes Bild), 120×80 (viertes dezimiertes Bild), 60×40 (fünftes dezimiertes Bild) und 30×20 (sechstes dezimiertes Bild).
-
Die Dezimierung wird in einigen Ausführungsformen durch irgendein bekanntes Verfahren des Dezimierens von Bildern ausgeführt. Zum Beispiel verwenden einige Ausführungsformen eine oder mehrere der folgenden Techniken: (1) Gruppieren der Pixel in n-x-n Quadrate, wobei n der Dezimierungsfaktor (zum Beispiel 2) ist, dann Mitteln der Werte der Pixel in den Quadraten, (2) ein gleitender Mittelwertfilter, (3) ein gewichteter gleitender Mittelwertfilter, (4) Auswählen eines Pixelwertes in jeder n-x-n Gruppe (zum Beispiel der Medianpixelwert oder der Pixelwert an einem bestimmten Ort in der Gruppe, (5) Verwenden einer Analysetechnik der kleinsten Quadrate, (6) Unterabtastung, (7) andere Dezimierungsverfahren.
-
Sobald das Verfahren 700 bestimmt (bei 730), dass die korrekte Anzahl an dezimierten Bildern erzeugt worden ist von jedem Bild (das heißt, das Original Luma Bild und jedes Bild, das von den Dezimierungen resultiert), erzeugt das Verfahren ein 1 Bit-Bitmap. Bitmap Bilder werden von den Bildern erzeugt, da das Finden einer Verschiebung zwischen zwei Bitmaps rechnerisch weniger intensiv ist, als ein direktes Finden einer Verschiebung zwischen den Bildern selbst. Die Operationen einiger Ausführungsformen zum Erzeugen von Bitmaps gleichen Unterschiede in Lumawerten aus, die von den unterschiedlichen Belichtungsniveaus der Bilder, die zu vergleichen sind, herrühren. Trotz der unterschiedlichen Lumawerte in jeder Aufnahme wird jede Aufnahme die helleren Teile der Szene als heller als die dunkleren Teile der Szene darstellen. Insbesondere wird die hellere (und dunklere) Hälfte der Pixel in einer Aufnahme den Gestalten und Positionen der helleren (und dunkleren) Hälfte der Pixel in der anderen Aufnahme gleichkommen. Der Median-Lumawert von jedem Bild wird verwendet, um die hellere Hälfte der Pixel in dem Bild von der dunkleren Hälfte der Pixel in dem Bild zu separieren. Der Median-Lumawert eines Bilds ist der Lumawert, für welchen die Hälfte der Pixel in dem Bild einen niedrigeren Lumawert (oder denselben Lumawert haben) und die Hälfte der Pixel in dem Bild einen höheren Lumawert (oder denselben Lumawert) haben. Deshalb wird eine Schwellwertoperation, die auf jedem Bild ausgeführt wird, unter Verwendung des Median-Lumawertes diese Bildes, ein Bitmap erzeugen, das ungefähr dasselbe ist, wie die Bitmaps, die durch die anderen Bilder erzeugt werden, unabhängig von den unterschiedlichen Belichtungsdauern.
-
Demgemäß, um sich auf die Erzeugung eine Bitmaps von einem Lumabild vorzubereiten, identifiziert das Verfahren 700 (bei 740) einen Median-Lumawert für jedes Bild (inklusive des Originals und allen dezimierten Bildern). Der Median-Lumawert wird zur Erzeugung der Bitmaps verwendet werden. Wie oben bemerkt, gleicht das Ausrichtungsverfahren 700 unter Verwendung des individuellen Median-Lumawertes für jedes Bild die unterschiedlichen Bereiche von Lumawerten in den unterschiedlichen Aufnahmen aus. Der Fachmann wird verstehen, dass einige Ausführungsformen andere Verfahren zum Erzeugen der Bitmaps verwenden könnten. Zum Beispiel wird der Schwellwert von einigen Ausführungsformen von dem Median-Lumawert abgleitet (zum Beispiel der Schwellwert ist der Median-Lumawert geteilt durch 2), ist aber nicht der Median-Lumawert. Der Schwellwert einiger anderer Ausführungsformen wird bestimmt von einigen anderen Charakteristiken des Bildes (zum Beispiel der Schwellwert ist der Mittelwert des Lumabereichs, anstelle des Medians der Lumas).
-
Das Verfahren erzeugt dann (bei 750) eine 1-Bit-Bitmap Version von jedem Bild durch das Ausführen einer Schwellwertoperation unter Verwendung des Median-Lumawertes des Bildes als den Schwellwert. Eine Schwellwertoperation auf einem Pixel in einem Lumabild erzeugt ein entsprechendes Pixel in dem Bitmap. Die Schwellwertoperation erzeugt ein weißes Pixel in dem Bitmap, wenn der entsprechende Pixel in dem Bild heller als der Schwellwert-Lumawert ist, und erzeugt ein schwarzes Pixel in dem Bitmap, wenn der entsprechende Pixel in dem Bild dunkler ist als der Schwellwert-Lumawert. Weil der Schwellwert-Lumawert, der in dieser Operation verwendet wird, der Median-Lumawert des Bildes ist, das zur Erzeugung des Bitmaps verwendet wird, wird ungefähr die Hälfte der Pixel in den Bitmaps schwarz sein und ungefähr die Hälfte der Pixel wird weiß sein. Das Verfahren 700 endet dann.
-
Das Verfahren 700 wurde oben als verschiedene Merkmale umfassend beschrieben. Der Fachmann wird verstehen, dass nicht alle der oben beschriebenen Merkmale in jeder Ausführungsform gefunden werden. Ebenso haben verschiedene Ausführungsformen des Verfahrens 700 andere Merkmale zusätzlich zu oder anstelle von einem oder mehreren der oben beschriebenen Merkmale. Der Fachmann wird erkennen, dass einige individuelle Ausführungsformen mehrere Merkmale umfassen, die als Alternativen zueinander implementiert sind, anstatt in derselben Operation implementiert zu sein. Zum Beispiel agiert das oben beschriebene Verfahren auf Lumabildern. Jedoch wird der Fachmann verstehen, dass einige Ausführungsformen Luminanzbilder verwenden (die Luminanzkomponente eines YCbCr-Bildes) anstelle von Lumabildern. Weiter verwenden andere Ausführungsformen Lumabilder in manchen Fällen und Luminanzbilder als eine Alternative in anderen Fällen. Das oben beschriebene Verfahren erzeugt ein separates Bitmap von einem Lumabild, aber in anderen Ausführungsformen überschreibt ein Bitmap das entsprechende Lumabild. Die dezimierten Bilder werden in manchen Ausführungsformen während des Bitmap-Erzeugungsverfahren überschrieben oder gelöscht, nachdem ihre entsprechenden Bitmaps erzeugt worden sind, um Speicher zu sparen.
-
Obwohl das oben beschriebene Verfahren 700 die Bitmaps von den dezimierten Bildern erzeugt, nachdem alle dezimierten Bilder erzeugt worden sind, wird der Fachmann verstehen, dass einige Ausführungsformen ein Bitmap von einem dezimierten Bild erzeugen, nachdem das dezimierte Bild erzeugt ist, aber bevor alle dezimierten Bilder erzeugt worden sind. Die oben beschriebenen Ausführungsformen dezimieren die Bilder um den Faktor 2, jedoch wird der Fachmann verstehen, dass einige Ausführungsformen die Bilder um andere Faktoren als 2 dezimieren. In dem oben beschriebenen Verfahren wird jedes dezimierte Bild von dem dezimierten Bild mit der nächsten höheren Auflösung erzeugt, jedoch, in einigen Ausführungsformen, werden dezimierte Bilder erzeugt mit Hilfe von anderen Bildern als die dezimierten Bilder mit der nächst höheren Auflösung (zum Beispiel ein dezimiertes Bild kann von dem Original-Lumabild oder von einem 2 Auflösungsniveaus höheren dezimierten Bild erzeugt werden). In dem oben beschrieben Verfahren entspricht ein schwarzer Pixel in dem Bitmap einem dunkler-als-der-Median Pixel in dem Lumabild und ein weißer Pixel in dem Bitmap entspricht einem heller-als-der-Median Pixel in dem Lumabild. Jedoch wird der Fachmann verstehen, dass „schwarz“ und „weiß“ eine willkürliche Wahl von Farben repräsentiert, um die 2 möglichen binären Werte eines Pixels in dem Bitmap zu repräsentieren. In einigen Ausführungsformen wird ein dunklerer Pixel in dem Bild in dem Bitmap als ein binärer Wert „0“ repräsentiert und ein hellerer Pixel in dem Bild wird in dem Bitmap als ein binärer Wert „1“ repräsentiert. In anderen Ausführungsformen wird ein dunklerer Pixel in dem Bild in dem Bitmap als ein binärer Wert „1“ repräsentiert und ein hellerer Pixel wird in dem Bild in dem Bitmap als ein binärer Wert „0“ repräsentiert.
-
8 stellt Beispiele von Bitmaps einiger Ausführungsformen dar, die zur Suche nach Ausrichtungen verwendet werden können. Die Bitmaps wurden von einem Bild eines Autos erzeugt. Die Bitmaps in 8 sind nicht maßstabsgetreu gezeichnet. Die Figur beinhaltet Originalbilder 800 und 805, Bitmaps 810A-810C und 815A-815C und gekachelte Bitmaps 820 und 825. Das Originalbild 800 ist ein Bild, das mit einer mittleren Belichtungsdauer von der mobilen Vorrichtung aufgenommen wurde. Das Originalbild 805 ist ein Bild, das von derselben mobilen Vorrichtung aufgenommen wurde mit einer kürzeren Belichtungsdauer. Die Bitmaps 810A-810C sind Bitmaps, die von Kopien (mit unterschiedlichen Auflösungen) von dem Originalbild 800 erzeugt wurden. Die Bitmaps 815A-815C sind Bitmaps, die von Kopien (mit unterschiedlichen Auflösungen) des Originalbildes 805 erzeugt wurden. Das gekachelte Bitmap 820 ist eine Kopie von Bitmap 810C, das konzeptionell in Kacheln aufgeteilt wurde. Das gekachelte Bitmap 820 ist eine Kopie von Bitmap 815C, das konzeptionell in Kacheln aufgeteilt wurde.
-
Die Bitmaps in dieser Figur mit derselben Auflösung können miteinander verglichen werden, um nach der Verschiebung der Originalbilder 800 und 805 zu suchen. Die Verschiebung der Bilder 800 und 805 ist ein Vektor, der, wenn er auf eines der Bilder angewandt wird, es dazu veranlasst, sich mit dem anderen Bild auszurichten. In diesem Fall ist das Auto in dem Bild 800 näher an der rechten Seite des Bildes, wohingegen das Auto in dem Bild 805 näher zu der linken Seite seines Bildes ist. Deshalb würde die Anwendung einer Verschiebung auf das Bild 805, die seine Pixel nach rechts um den korrekten Betrag verschiebt, es mit dem Bild 800 ausrichten.
-
Die Bitmaps 810A und 815A sind um denselben Betrag wie die Bilder 800 und 805 verschoben, da die Bitmaps 810A und 815A direkt von den Originalbildern erzeugt wurden. Die Verschiebung der Bilder 800 und 805 könnte durch das Auffinden der Verschiebung der Bitmaps 810A und 815A gefunden werden. Jedoch würde das Auffinden der Verschiebung der Bitmaps 810A und 815A einfach durch das Versuchen jeder möglichen Verschiebung, um zu schauen, ob sie die Bitmaps ausrichtet, rechenmäßig aufwändig, aufgrund der großen Anzahl an möglichen Verschiebungen, die zu prüfen sind, um zwei hochaufgelöste Bitmaps auszurichten. Deshalb suchen die Verfahren einiger Ausführungsformen nach der korrekten Ausrichtung über ein hierarchisches Verfahren von nacheinander folgenden Annäherungen anstelle des Ausprobierens aller möglichen Verschiebungsvektoren für die hochaufgelösten Bitmaps.
-
Die niedrigere Auflösung der Bitmaps 810C und 815C resultiert in weniger möglichen Verschiebungen, die zu prüfen sind beim Ausrichten der Bitmaps 810C und 815C. Jedoch bedeutet die niedrigere Anzahl von möglichen Verschiebungen, die zu prüfen sind, auch geringere Genauigkeit der Verschiebung, die bei der Auflösung gefunden wird. Insbesondere repräsentiert eine Verschiebung von einem Pixel zwischen den Bitmaps 810C und 815C eine Verschiebung von mehreren Pixeln (zum Beispiel 64 Pixel) zwischen den Originalbildern 800 und 805, somit wird eine Verschiebung, die die Bitmaps 810 C und 815C ausrichtet, eine Verschiebung, die die Bitmaps 810A und 815A ausrichtet, nicht genau spezifizieren. Jedoch kann eine Verschiebung, die die Bitmaps 810C und 815C ausrichtet, als eine erste Annäherung der Verschiebung verwendet werden, die die Bitmaps 810A und 815A ausrichtet. Die Verschiebung, die die Bitmaps 810C und 815C ausrichtet, ist ein Startpunkt in dem hierarchischen Verfahren zum Auffinden von verschiedenen höher aufgelösten Bitmaps.
Die Sätze von aufeinander folgend größeren Bitmaps erlauben es, den Wert für die Verschiebung zu verfeinern mit Hilfe jedes nachfolgend höher aufgelösten Bitmaps. In 8 repräsentiert jedes nachfolgende Bitmap in einer gegebenen Spalte der Bitmaps konzeptionell ein Bitmap, das von einem Bild mit der Hälfte der Auflösung des Bildes erzeugt wird, das verwendet wird, um das vorhergehende Bitmap in der Spalte zu erzeugen, damit ist die Verschiebung von jedem Bitmap die Hälfte der Verschiebung der nächst höheren Auflösung. Zum Beispiel wurde das Bitmap 810A von einem Originalbild 800 mit der Auflösung 1920×1280 (Original) erzeugt, und das Bitmap 810B wurde von einer dezimierten Kopie (nicht gezeigt) des Originalbildes 800 mit einer Auflösung von 960×640 (das erste dezimierte Bild) erzeugt. Eine Verschiebung von 10 Pixeln nach rechts zwischen den Bitmaps 810B und 815B repräsentiert eine Verschiebung von 20 Pixeln (plus oder minus 1 Pixel) nach rechts zwischen den Bitmaps 810A und 815A. Wenn die Verschiebung für die höher aufgelösten Bitmaps 810A und 815A gefunden ist, wäre der Startpunkt für die Suche 20 Pixel nach rechts. Wie weiter mit Bezug auf die 9 bis 11 unten beschrieben, würde das Ausrichtungsverfahren dann mögliche Verschiebungen innerhalb eines Pixels von dem Startpunkt bewerten, um nach der tatsächlichen Verschiebung bei 19 Pixeln, 20 Pixeln und 21 Pixeln nach rechts zu suchen.
-
In 8 lässt die Auslassung zwischen den Bitmaps 810B und 810C Bitmaps von nacheinander folgenden kleineren Auflösungen aus, die von dezimierten Bildern erzeugt werden, von denen jedes die Hälfte der Auflösung (in jeder Dimension) des vorhergehenden dezimierten Bildes hat. Wie mit Bezug auf 7 beschrieben, fährt die Dezimierung und Erzeugung von Bitmaps für einige bestimmte Anzahlen von Niveaus von Auflösungen (zum Beispiel 6 Niveaus) fort. In 8 sind die Bitmaps 810A-810C und 815A-815C und die Originalbilder 800 und 805 nicht maßstabsgetreu gezeichnet.
-
Die oben beschriebenen Ausführungsformen erzeugen jedes Bitmap von einem dezimierten Bild mit derselben Auflösung wie das erzeugte Bitmap. Alternativ kann in einigen Ausführungsformen ein Bitmap einer niedrigeren Auflösung von einem Bitmap mit höherer Auflösung erzeugt werden, anstelle von einem dezimierten Bild. Das Erzeugen von Bitmaps von höher aufgelösten Bitmaps ist in einigen Ausführungsformen schneller, als das Erzeugen von Bitmaps von dezimierten Bildern. Jedoch tendiert das Erzeugen von Bitmaps von höher aufgelösten Bitmaps statt von dezimierten Bildern dazu, Artefakte in den Bitmaps zu erzeugen, die die Effizienz und/oder Genauigkeit der Suchen nach Verschiebungsvektoren verringern. Deshalb wird diese Technik nicht in allen Ausführungsformen verwendet.
Einige Ausführungsformen richten Bitmaps durch das Teilen eines oder beider Bitmaps in Kacheln und das Vergleichen der Pixel in einigen oder allen der Kacheln zu entsprechenden Pixeln in dem anderen Bitmap aus, um einen Verschiebungsvektor zu finden, der hervorruft, dass sich die Merkmale jedes Bildes überlagern. Die kurze Beschreibung unten ist für eine Ausführungsform, die ein Bitmap auf jeder Auflösung in Kacheln aufteilt.
-
Das Verfahren einiger Ausführungsformen vergleicht die zwei Bitmap Bilder mehrere Male unter Verwendung von mehreren Testverschiebungsvektoren. Die Vergleich vergleicht systematisch Pixel in einem Bitmap (das „gekachelte Bitmap“) mit dem entsprechenden Pixel in einem zweiten Bitmap (das „Zielbitmap“). Das Verfahren vergleicht Pixel in dem gekachelten Bitmap mit Pixeln in dem Zielbitmap, die um den Verschiebungsvektor verschoben sind. Für jeden Testverschiebungsvektor zählt das Verfahren einiger Ausführungsformen die Anzahl von entsprechenden Pixeln, die sich voneinander unterscheiden. Je näher der Testverschiebungsvektor zu der tatsächlichen Verschiebung zwischen den zwei Bildern ist, desto kleiner ist die Anzahl von Pixeln in den zwei Bitmaps, die sich von dem gekachelten Bitmap zu dem (verschobenen) Zielbitmap unterscheiden.
Einige Bitmaps, die von dezimierten Bildern erzeugt werden, umfassen Kacheln, die fast ganz schwarz oder fast ganz weiß sind. Die Auslassung der Kacheln, die ganz schwarz, fast ganz schwarz, ganz weiß oder fast ganz weiß sind, von dem Vergleich, beschleunigt den Vergleich, ohne den identifizierten Verschiebungsvektor in einigen Ausführungsformen zu ändern. Deshalb verwerfen einige Ausführungsformen die schwarzen, fast ganz schwarzen, weißen, und fast ganz weißen Kacheln von dem Vergleich.
-
Demgemäß sind die Bitmaps einiger Ausführungsformen konzeptionell in Kacheln geteilt, wie die gekachelten Bitmaps 820 und 825 als Teil eines Verfahrens (das mit Bezug auf 9 und 10 unten beschrieben wird) zum Auffinden des Verschiebungsvektors. Jede Kachel umfasst eine Anzahl an Pixeln. In dem Verfahren einiger Ausführungsformen zum Auffinden des Verschiebungsvektors von 2 Bitmaps werden Kacheln, die ganz schwarz oder fast ganz schwarz sind (zum Beispiel die obere Hälfte des Frontrades in dem gekachelten Bitmap 820) mit weniger als einer Schwellwertanzahl von weißen Kacheln, ignoriert, und Kacheln, die ganz weiß sind (zum Beispiel die linken und oberen Kantenkacheln des gekachelten Bitmaps 820) oder fast ganz weiß sind (zum Beispiel die vordere Windschutzscheibe des gekachelten Bitmaps 820) mit weniger als einer Schwellwertanzahl von schwarzen Kacheln werden ignoriert. Das bedeutet, die Pixel innerhalb dieser Kacheln werden nicht in die Vergleiche der 2 Bitmaps einbezogen, die ausgeführt werden bei der Suche nach einem Verschiebungsvektor, der diese 2 Bitmaps in Übereinstimmung bringt.
-
Hierarchische Ausrichtung der Bilder
-
Sobald Bitmaps mit mehreren Auflösungen erzeugt sind, verwenden einige Ausführungsformen die Bitmaps, um Verschiebungsvektoren aufzufinden, die diese Bilder ausrichten. 9 bis 10 stellen ein Verfahren 900 und ein Verfahren 1000 einiger Ausführungsformen zum Auffinden eines Verschiebungsvektors dar, der 2 Bilder ausrichtet. Der Klarheit halber beschreibt die Beschreibung des Verfahrens 900 die Ausrichtung von 2 Bildern miteinander. Jedoch empfängt das Verfahren 900 in einigen Ausführungsformen 3 Sätze von Bitmaps für die 3 Originalbilder mit unterschiedlichen Belichtungen und richtet die 3 Bilder aus. Beim Ausrichten der 3 Bilder richtet das Verfahren 900 zuerst 2 Bilder aus und richtet dann das dritte Bild mit einem der anderen 2 Bilder aus. Das Verfahren 900 ist ein hierarchisches Verfahren, das die Verschiebung zwischen 2 Bildern auffindet durch das Auffinden einer groben Näherung für die Verschiebung mithilfe eines niedrig aufgelösten Bitmaps, dann Annähern an den tatsächlichen Verschiebungswert durch das Auffinden nacheinander folgend näherer Annäherungen an den tatsächlichen Verschiebungsvektor mithilfe nacheinander folgender höher aufgelöster Bitmaps. Das Verfahren testet 9 Kandidatenverschiebungsvektoren bei jeder Auflösung, um herauszufinden, welcher Offsetvektor die Bitmaps am nächsten zur Ausrichtung bei der Auflösung bringt.
-
9-10 werden mit Bezug auf 11 beschrieben. 11 zeigt ein Beispiel des Auffindens eines Verschiebungsvektors, der 2 Bilder ausrichtet, in einigen Ausführungsformen. Diese Figur zeigt, mit je einem hierarchischen Niveau, wie ein Verschiebungsvektor zwischen 2 Bildern durch das Verfahren 900 gefunden wird. Die Figur umfasst Reihen/Stufen 1110-1140 und Spalten 1165-1180. Jede der Stufen 1110-1140 repräsentiert konzeptionell ein hierarchisches Niveau in der Identifikation eines Verschiebungsvektors zwischen 2 Bildern. Jede der Spalten 1165-1180 repräsentiert eine wichtige Eigenschaft von jeder Stufe. Die Stufen 1110-1140 umfassen jeweils eine dezimierte Auflösung (in Spalte 1165), einen Startverschiebungsvektor (in Spalte 1170), eine identifizierte Hinzufügung zu dem Verschiebungsvektor (in Spalte 1175) und einen neuen Verschiebungsvektor (in Spalte 1180).
-
Die dezimierten Auflösungswerte von Spalte 1165 identifizieren die Auflösung der Bitmaps, die zu vergleichen sind, in jeder Stufe. Dies illustriert konzeptionell die Auswahl von Auflösungen in dem Verfahren 900 (bei 920 und 970). Die Startverschiebungsvektoren der Spalte 1170 repräsentieren einen Verschiebungsvektor, der als ein Ursprung agiert, um welchen die Kandidatenvektoren getestet werden. Jede Reihe der Spalte 1175 umfasst 9 Kandidatenvektoren. Die Pfeile (und Kreise) in den verschiedenen Stufen der Spalte 1175 illustrieren konzeptionell einen Kandidatenvektor, der von dem Verfahren 1000 als der Kandidatenverschiebungsvektor gewählt wird, der die beste Ausrichtung der Bitmaps bei der Auflösung erzeugt. Die neuen Verschiebungsvektoren der Spalte 1180 repräsentieren die Vektorsummen des Startverschiebungsvektors und des Vektors, der in Spalte 1175 in derselben Stufe identifiziert wird. Der Verschiebungsvektor in der Spalte 1180, in der Endstufe 1140, repräsentiert die Verschiebung der 2 originalen, voll aufgelösten Bilder.
-
In einigen Ausführungsformen verwendet das Verfahren 900 Bitmaps, die durch ein Verfahren, wie das Verfahren 700 von 7 erzeugt wurden. Das Verfahren 900 beginnt mit dem Empfangen (bei 910) von zwei Sätzen von Bitmaps. Jeder Satz von Bitmaps wurde von einem Originalbild von der mobilen Vorrichtung erzeugt. Die empfangenen Sätze von Bitmaps umfassen einen Bereich von Auflösungen, von denen jede um einen Faktor 2 kleiner ist als die nächstgrößere Auflösung. Das Verfahren 900 wählt (bei 920) die am niedrigsten aufgelösten Bitmaps als das aktuelle Paar an Bitmaps, mit dem gearbeitet wird (zum Beispiel, um einen Verschiebungsvektor zu finden, der die Bitmaps ausrichtet). In dem Beispiel in 11 repräsentiert die Stufe 1110 das niedrigste hierarchische Niveau. Die Auflösung des Bitmaps in der Stufe 1110 ist 30×20, wie in Spalte 1165 gezeigt.
-
Wie oben mit Bezug auf die gekachelten Bitmaps 820 und 825 beschrieben, können die Bitmaps konzeptionell in Kacheln aufgeteilt werden. Das Verfahren 900 teilt (bei 930) das aktuelle Bitmap in jedem Satz in Kacheln auf. Einige Ausführungsformen teilen nur ein Bitmap in jedem Paar von Bitmaps (mit einer gemeinsamen Auflösung) in Kacheln auf. Jede Kachel umfasst einen bestimmten Satz an Pixeln. In diesem Kontext wird eine Kachel betrachtet als einen Pixel umfassend, wenn der Pixel innerhalb eines Bereiches von Orten ist, die durch diese Kachel identifiziert werden. Zum Beispiel könnte eine bestimmte Kachel unter Verwendung des unteren linken Pixels eines Bitmaps als Koordinate (0, 0) alle Kacheln mit x-Koordinaten zwischen 10 Pixeln und 19 Pixeln und y-Koordinaten zwischen 20 Pixeln und 29 Pixeln umfassen. Ein Pixel mit den Koordinaten (13, 25) würde ein Pixel in der Kachel sein und ein Pixel mit den Koordinaten (22, 25) würde ein Pixel in einer anderen Kachel sein. Der Fachmann wird verstehen, dass Kacheln unterschiedliche Größen in unterschiedlichen Ausführungsformen haben können und sogar unterschiedliche Größen in derselben Ausführungsform haben können. Zum Beispiel könnten Kacheln in verschiedenen Auflösungen unterschiedliche Größen haben. Kacheln einiger Ausführungsformen haben unterschiedliche Größen bezogen auf die Auflösung der Bitmaps.
-
Einige Kacheln enthalten eine signifikante Anzahl von sowohl schwarzen Pixeln als auch weißen Pixeln. Andere Kacheln enthalten insgesamt (oder fast insgesamt) schwarze Pixel oder insgesamt (oder fast insgesamt) weiße Pixel. Um spätere Vergleiche zu beschleunigen, die den Verschiebungsvektor finden, der 2 Kacheln ausrichtet, verwirft das Verfahren einiger Ausführungsformen (bei 940) alle Kacheln, die hauptsächlich eine Farbe von Pixeln (schwarz oder weiß) enthalten. Das bedeutet, beim Ausführen späterer Vergleiche, um herauszufinden, wie gut ein Kandidatenverschiebungsvektor die 2 Bitmaps ausrichtet, wird das Verfahren 900 die Pixel von den verworfenen Kacheln in jenen Vergleichen nicht mit einbeziehen. In einigen Ausführungsformen werden die Kacheln verworfen, wenn sie weniger als eine Schwellwertanzahl der Minderheitenfarbe haben. Die Schwellwertanzahl ist in einigen Ausführungsformen 5% von der Gesamtanzahl der Pixel in der Kachel. In anderen Ausführungsformen ist die Schwellwertanzahl der Minderheitenfarbe ein anderer Prozentsatz der Pixel in der Kachel. In einigen Ausführungsformen werden Kacheln von nur einem von dem Paar von Bitmaps verworfen. In anderen Ausführungsformen werden Kacheln von beiden Bitmaps verworfen.
-
Das Verfahren 900 identifiziert (bei 950) einen Verschiebungsvektor zum Ausrichten der 2 Bitmaps der aktuellen Auflösung. Eine Operation 950 zum Auffinden des Verschiebungsvektors wird weiter als das Verfahren 1000 von 10 beschrieben. 11 stellt konzeptionell die Operation 950 in der Spalte 1175 dar. Zum Beispiel, wie in Spalte 1175, Stufe 1110 gezeigt, bewertet die Operation 950 alle Vektoren innerhalb eines Pixels von dem Ursprung, um den Verschiebungsvektor zu finden, der die nächste Ausrichtung zwischen den Bitmaps bei dieser Auflösung (30×20) bereitstellt. Der Pfeil in Spalte 1175 auf Stufe 1110 zeigt an, dass die nächste Ausrichtung durch die Verschiebung (1, 1) erzeugt wird. In der niedrigsten Auflösungsstufe 1110, richtet die Operation 950 Bitmaps aus, die 1/64 der Auflösung (in jeder Dimension) des Originalbildes haben. Die Werte der identifizierten Verschiebungsvektoren verdoppeln sich auf jeder Stufe, weshalb sich der Beitrag eines Kandidatenverschiebungsvektors in einer Stufe mit jeder nachfolgenden Stufe verdoppelt. Zum Beispiel ist der ausgewählte Kandidatenverschiebungsvektor in Stufe 1110, Spalte 1180 (1, 1). Dieser Vektor verdoppelt sich in jeder der nachfolgenden Stufen (6mal), was seinen Gesamtbeitrag zu dem Endverschiebungsvektor zu (64, 64) macht. Auf ähnliche Weise verdoppelt sich der ausgewählte Kandidatenverschiebungsvektor in Stufe 1120 (-1, -1) 4mal, was seinen Gesamtbeitrag zu dem Endverschiebungsvektor zu einem Vektor von (-16,-16) macht.
Tatsächlich, bezüglich des tatsächlichen Verschiebungsvektors zwischen den voll aufgelösten (1920×1280) Bildern, findet die Operation 950 in Stufe 1110, dass die Verschiebung zwischen den 2 voll aufgelösten Bildern (64, 64) ist (das heißt 64mal der identifizierte Verschiebungsvektor). Die Verschiebung (64, 64) ist eine grobe Bestimmung, die in späteren Stufen verfeinert werden wird. Zum Beispiel könnte die Operation 950 in der Stufe 1115 den Verschiebungsvektor um 0 oder ± 32 in jeder Richtung (vertikal und horizontal) ändern; in der Stufe 1120 könnte sie den Verschiebungsvektor um 0 oder ± 16 in jeder Richtung ändern, und so weiter, bis zur Stufe 1140, die den Verschiebungsvektor um 0 oder ± 1 in jeder Richtung ändern kann. Demgemäß, unter der Annahme eines ganzen Bereiches von möglichen Verschiebungen in der späteren Stufe, statt den spezifischen Verschiebungsvektoren, die in 11 gezeigt sind, könnte die Operation 950 in späteren Stufen unter einer gegebenen Verschiebung von (1, 1) auf der niedrigsten Auflösung eine Endverschiebung für die Bilder von zwischen 1 und 127 Pixeln in der horizontalen Richtung und zwischen 1 und 127 Pixeln in der vertikalen Richtung finden. Auf ähnliche Weise richtet die Operation 950 in der Stufe 1115 Bitmaps aus, die 1/32 der Auflösung (in jeder Dimension) des tatsächlichen Bildes haben. Bezüglich des tatsächlichen Verschiebungsvektors zwischen den voll aufgelösten (1920×1280) Bildern, findet die Operation 950 in der Stufe 1115, dass die Verschiebung zwischen den zwei voll aufgelösten Bildern (96, 64) ist (das heißt 32mal der identifizierte Verschiebungsvektor). Die Verschiebung (96, 64) ist immer noch eine grobe Bestimmung, die in den späteren Stufen 1120 bis 1140 verfeinert werden wird. Die späteren Stufen könnten jeden der Werte des Vektors nach oben oder unten um bis zu 31 Pixel anpassen. Unter der Annahme eines ganzen Bereiches von möglichen Verschiebungen in der späteren Stufe, statt den spezifischen Verschiebungsvektoren, die in 11 gezeigt sind, könnte das Verfahren 900 in den späteren Stufen unter der Annahme, dass die Verschiebung (3, 2) ist bei dieser Auflösung (60, 40), eine Endverschiebung für die Bilder von zwischen 33 und 95 Pixeln in der horizontalen Richtung und zwischen 65 und 127 Pixeln in der vertikalen Richtung finden. Sobald ein Verschiebungsvektor bei einer gegebenen Auflösung gefunden wurde, bestimmt das Verfahren 900 (bei 960), ob weitere Bitmaps zum Ausrichten verbleiben. Wenn das Verfahren bestimmt (bei 960), dass weitere Bitmaps bewertet werden müssen, dann wählt das Verfahren (bei 970) das nächste am niedrigsten aufgelöste Bitmap als das aktuelle Bitmap. Zum Beispiel, in 11, nach der Stufe 1110, wählt die Operation 970 die nächsten am niedrigsten aufgelösten Bitmaps, 60×40. Das Verfahren verdoppelt dann (bei 980) den Verschiebungsvektor, der in der Operation 950 identifiziert wird zur Verwendung als ein Startpunkt zum Bewerten von Kandidatenverschiebungsvektoren für die Bitmaps mit der neuen Auflösung. Zum Beispiel wird in 11 der Verschiebungsvektor (1, 1) in Stufe 1110, Spalte 1180 verdoppelt von (1, 1) auf (2, 2) in Spalte 1170 von Stufe 1115. In jeder Stufe ist der Startverschiebungsvektor das Doppelte des neuen Verschiebungsvektors von der vorhergehenden Stufe, um der Tatsache Rechnung zu tragen, dass die Auflösung von einer Stufe das Doppelte der Auflösung der vorhergehenden Stufe ist. Tatsächlich verdoppelt sich jede Koordinate des Bitmaps von einer Auflösung zur nächsten und der neue Startverschiebungsvektor verdoppelt sich entsprechend.
-
Wenn das Verfahren bestimmt (bei 960), dass keine weiteren Bitmaps bewertet werden müssen (das heißt, wenn die zuletzt verglichenen Bitmaps die voll aufgelösten Bitmaps sind), hat das Verfahren 900 den Verschiebungsvektor aufgefunden, der die 2 Originalbilder ausrichten wird. Zum Beispiel gibt es in 11, nach der Stufe 1140, keine weiteren zu bewertenden Bitmaps. Demgemäß ist der Verschiebungsvektor in Stufe 1140, Spalte 1180, genau (87, 48) der Verschiebungsvektor, der die zwei Bilder ausrichtet. Das Verfahren 900 endet dann mit der erfolgreichen Ausrichtung der Bilder.
-
Wie oben bemerkt, wird die Operation 950, welche ein bestimmtes Paar von Bitmaps bei einer gegebenen Auflösung ausrichtet, in größerem Detail in 10 gezeigt. 10 zeigt ein Verfahren 1000 zum Auffinden eines Verschiebungsvektors zum Ausrichten von 2 Bitmaps. Das Verfahren 1000 vergleicht Pixel der 2 Bitmaps, wie durch verschiedene Kandidatenverschiebungsvektoren verschoben (und einen Startverschiebungsvektor, wenn vorhanden) und findet heraus, welcher Kandidatenverschiebungsvektor die beste Ausrichtung erzeugt. Das Verfahren 1000 ist Teil des Verfahrens 900 einiger Ausführungsformen.
-
Das Verfahren 1000 wählt (bei 1010) einen Kandidatenverschiebungsvektor. Der Kandidatenverschiebungsvektor ist ein Vektor, der von einem Satz von möglichen Verschiebungsvektoren ausgewählt wird. Die möglichen Verschiebungsvektoren sind alle Vektorverschiebungen vom Ausgangspunkt um 0 oder plus oder minus einen Pixel vertikal und um 0 oder plus oder minus einen Pixel horizontal. Die Kandidatenverschiebungsvektoren sind (-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 0), (0, 1), (1, -1), (1, 0) und (1, 1). Die Kandidatenverschiebungsvektoren sind in Spalte 1175 von 11 dargestellt.
-
Das Verfahren fügt (bei 1020) den Kandidatenverschiebungsvektor zu einem Startverschiebungsvektor hinzu, um einen kombinierten Vektor zu erzeugen. Der Startverschiebungsvektor ist der Verschiebungsvektor, der durch das Verfahren 1000 gefunden wurde beim Ausrichten der Bitmaps der vorherigen Auflösung (wenn vorhanden). In 11, im Schritt 1110, werden die am niedrigsten aufgelösten Bitmaps ausgerichtet. Es gibt keine vorherige Auflösung, sodass der Startverschiebungsvektor (0, 0) ist. In der ersten Stufe mit einem nicht-null Startverschiebungsvektor (zum Beispiel Stufe 1115) bewertet das Verfahren 1000 alle möglichen Verschiebungsvektoren innerhalb eines Pixels von dem Startverschiebungsvektor (2, 2). Das bedeutet, in der Stufe 1115 testet das Verfahren 1000 die Vektoren (1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2) und (3, 3).
-
Wie oben bemerkt, identifizieren die Pfeile (und der Kreis in Stufe 1130) in Spalte 1175 konzeptionell, welche Kandidatenverschiebungsvektoren die geringste Anzahl an Differenzen erzeugen beim Vergleichen der 2 Bitmaps in dem in 11 gezeigten Beispiel. Der Pfeil in Spalte 1175 in Stufe 1115 zeigt an, dass die beste Ausrichtung erzeugt wird, wenn der Kandidatenverschiebungsvektor (1, 0) zu dem Startverschiebungsvektor (2, 2) hinzugefügt wird. Wenn der Kandidatenverschiebungsvektor (1, 0) zu dem Startverschiebungsvektor (2, 2) hin- zugefügt wird, ist das Ergebnis ein Verschiebungsvektor (3, 2) wie in Spalte 1180 in Stufe 1115 gezeigt.
-
Das Verfahren vergleicht dann (bei 1030) die 2 Bitmaps mit Hilfe des kombinierten Vektors als ein Testverschiebungsvektor. Der Vergleich vergleicht systematisch jeden Pixel in jeder nicht verworfenen Kachel in dem gekachelten Bitmap mit dem entsprechenden Pixel in dem Zielbitmap. Der entsprechende Pixel in dem Zielbitmap ist der Pixel, dessen Koordinaten in dem Zielbitmap um den Testverschiebungsvektor von den Koordinaten des Pixels in dem gekachelten Bitmap verschoben sind. Zum Beispiel wird ein Pixel bei Koordinaten (x, y) des gekachelten Bitmaps bei einem Testverschiebungsvektor von (25, 30) mit einem Pixel bei den Koordinaten (x+25, y+30) des Zielbitmaps verglichen. Eine XOR-Operation wird verwendet in einigen Ausführungsformen, um zwei 1-Bit Werte zu vergleichen (zum Beispiel die Werte der Pixel in den 2 Bitmaps), um herauszufinden, ob sie voneinander unterschiedlich sind. Wenn die verglichenen Pixel unterschiedlich sind (das heißt, ein Pixel ist schwarz, und der andere Pixel ist weiß), dann erzeugt die XOR Operation eine Ausgabe von 1, wenn die Pixel dieselben sind (das heißt, beide Pixel sind schwarz oder beide Pixel sind weiß), dann erzeugt die XOR Operation eine Ausgabe von o. Für jeden Testverschiebungsvektor zählt das Verfahren 1000 einiger Ausführungsformen die Anzahl der entsprechenden Pixel, die sich voneinander unterscheiden. Je näher der Testverschiebungsvektor zu der tatsächlichen Verschiebung zwischen den 2 Bitmaps ist, desto kleiner wird die Anzahl von Pixeln in den 2 Bitmaps, die sich von den gekachelten Bitmaps zu dem (verschobenen) Zielbitmap unterscheiden.
-
Durch das Vergleichen der Bitmaps durch das Zählen, wie viele Pixel von einem Bitmap zu dem (verschobenen) anderen Bitmap verschieden sind, schließt das Verfahren 1000 einiger Ausführungsformen nicht die Pixel in den verworfenen Kacheln in den Vergleich ein. Nur Pixel, die in Kacheln mit einem signifikanten Prozentsatz (zum Beispiel mehr als 5% in manchen Ausführungsformen) von sowohl schwarzen als auch weißen Pixeln sind, werden in die Vergleiche einbezogen. In einigen Ausführungsformen, die Kacheln von nur einem der Bitmaps verwerfen, spezifizieren die nicht verworfenen Kacheln von dem gekachelten Bitmap, welche Pixel verglichen werden. Zum Beispiel wird, bei einem Testverschiebungsvektor von (25, 30) ein Pixel an den Koordinaten (x, y) des gekachelten Bitmaps gewöhnlich mit 1 Pixel an den Koordinaten (x+25, y+30) des Zielbitmaps verglichen. Jedoch, wenn die Koordinaten (x, y) innerhalb einer verworfenen Kachel des gekachelten Bitmaps liegen, wird der Pixel des gekachelten Bitmaps an diesen Koordinaten nicht mit irgendeinem Pixel des Zielbitmaps verglichen. Mit anderen Worten, wenn die Koordinaten (x, y) innerhalb einer verworfenen Kachel des gekachelten Bitmaps liegen, wird das Verfahren einiger Ausführungsformen einfach keinen Vergleich des Pixels bei (x, y) des gekachelten Bitmaps mit dem Pixel bei (x+25, y+30) des Zielbitmaps oder irgendeinem anderen Pixel des Zielbitmaps ausführen.
-
In einigen Ausführungsformen ist der Grund des Verwerfens der Kacheln, die fast ganz schwarz oder fast ganz weiß sind, dass diese Kacheln die Resultate nicht signifikant beeinflussen. Zum Beispiel, wenn eine ganz weiße Kachel in einer ganz weißen Region ist, dann würde jede kleine Verschiebung die weißen Pixel in dieser Kachel mit einer anderen Gruppe von insgesamt weißen Pixeln in dem entsprechenden Bereich des anderen Bitmaps ausrichten. Wenn jeder der Kandidatenvektoren hervorrufen würde, dass eine weiße Kachel mit einer anderen Gruppe von insgesamt weißen Pixeln verglichen wird, dann würden die Vergleiche der Pixel in der weißen Kachel mit entsprechenden Pixeln in dem Zielbitmap keine Daten bereitstellen, die verwendet werden könnten, um den Verschiebungsvektor von den anderen Kandidatenvektoren zu unterscheiden.
-
Das Verfahren speichert (bei 1040) einen Wert, der durch die Anzahl von Pixeln bestimmt wird, die als unterschiedlich von einem Bitmap zu dem anderen Bitmap mit dem gegebenen Testverschiebungsvektor bestimmt werden. In einigen Ausführungsformen ist der Wert einfach die Anzahl der Pixel, die unterschiedlich sind. In anderen Ausführungsformen ist der Wert nicht die tatsächliche Anzahl von Pixeln, die unterschiedlich sind, aber wird von der Anzahl der Pixel, die unterschiedlich sind, abgeleitet.
Das Verfahren bestimmt dann (bei 1050), ob mehr Kandidatenvektoren bewertet werden müssen. Wenn weitere Kandidatenvektoren bewertet werden müssen, kehrt das Verfahren nach 1010 zurück und wählt einen neuen Kandidatenvektor. Wenn alle Kandidatenvektoren bewertet worden sind, identifiziert das Verfahren (bei 1060) den Kandidatenvektor, der die beste Ausrichtung des Bitmaps bereitstellt, basierend auf den gespeicherten Werten für jeden. Zum Beispiel, wird der Kandidatenvektor in einigen Ausführungsformen, der in der niedrigsten Anzahl von Unterschieden zwischen dem gekachelten Bitmap und dem verschobenen Zielbitmap resultierte, als der Kandidatenvektor identifiziert, der die beste Ausrichtung bereitstellt. Der beste Kandidatenvektor wird zu dem Startverschiebungsvektor hinzugefügt (bei 1070), um einen neuen Verschiebungsvektor bereitzustellen. Das Verfahren 1000 endet dann und das Verfahren 900 fährt bei 960 fort.
-
Das nächste am höchsten aufgelöste Paar von Bitmaps repräsentiert dasselbe Bild wie die aktuelle Auflösung, aber mit einer feineren Skala. Aufgrund der feineren Skala identifiziert der neue Verschiebungsvektor nicht die exakte Verschiebung des nächsten am höchsten aufgelösten Paares an Bitmaps. Jedoch kreist das Auffinden des neuen Verschiebungsvektors, der Bitmaps bei einer Auflösung am besten ausrichtet, den Bereich von Verschiebungsvektoren ein, die möglicherweise die beste Ausrichtung der Bitmaps auf der nächsthöheren Auflösung bereitstellen könnten. In Ausführungsformen, die die Auflösung auf jedem Niveau verdoppeln, ist die Präzision einer Ausrichtung bei einer gegebenen Auflösung die Hälfte der Präzision einer Ausrichtung der nächsthöheren Auflösung. Der neue Verschiebungsvektor, der durch das Verfahren 1000 identifiziert wird, ist bis auf weniger als einen Pixel bei der aktuellen Auflösung genau. Demgemäß, wenn der neue Verschiebungsvektor zu der nächsten Auflösung hochskaliert wird (zum Beispiel in Operation 980) wird auch die Unsicherheit in dem Wert der Ausrichtung hochskaliert. Das bedeutet, wenn die nächste Auflösung doppelt so hoch ist wie die aktuelle Auflösung, dann wird der Startverschiebungsvektor innerhalb von weniger als 2 Pixeln (in jeder Richtung) der aktuellen Verschiebung bei dieser Auflösung sein. Der Satz von allen Verschiebungsvektoren, die weniger als 2 Pixel entfernt von dem Startverschiebungsvektor sind, beinhaltet 9 Vektoren. Insbesondere sind die 9 Vektoren die Vektorsummen des Startverschiebungsvektors und der neuen Kandidatenverschiebungsvektoren.
-
Der Startverschiebungsvektor für jede Auflösung wird von dem neuen Verschiebungsvektor abgeleitet, der die 2 Bitmaps bei der nächsten niedrigeren Auflösung ausrichtet. Es gibt keine nächste niedrigere Auflösung für die Bitmaps mit der niedrigsten Auflösung. Demgemäß hat das Verfahren 1000 keinen Startverschiebungsvektor, wenn es die am niedrigsten aufgelösten Bitmaps ausrichtet. Für die am niedrigsten aufgelösten Bitmaps ist der Bereich der möglichen Verschiebungen nicht verringert, deshalb kann der Verschiebungsvektor, der die Bitmaps auf der niedrigsten Auflösung ausrichtet, mehr als 1 Pixel entfernt von dem Startpunkt der Suche sein. Demgemäß bewertet das Verfahren 1000 in einigen Ausführungsformen einen größeren Bereich von Kandidatenverschiebungsvektoren für die am niedrigsten aufgelösten Bitmaps als für die höher aufgelösten Bitmaps.
-
Abhängig davon, welche Kandidatenvektoren auf welcher Stufe gewählt werden in einer Ausführungsform mit 6 Niveaus an Dezimierung, sind die möglichen Werte der Verschiebungsvektoren, die von der hierarchischen Suche des Verfahrens 900 gefunden werden, von -127 bis 127 horizontal und -127 bis 127 vertikal. Jede nachfolgende Stufe kreist den Bereich von möglichen Verschiebungsvektoren ein um ungefähr einen Faktor von 2. Ein Wert von 127 für die horizontale Komponente der Verschiebung wird erreicht, wenn der Kandidatenverschiebungsvektor, der auf jedem Niveau gewählt wird, einen Wert von 1 hat. In solch einem Fall trägt das am niedrigsten aufgelöste Niveau 64 Pixel zu der Gesamtheit bei; das nächste am niedrigsten aufgelöste Niveau trägt 32 Pixel zu der Gesamtheit bei usw., bis das am höchsten aufgelöste Niveau 1 Pixel zu der Gesamtheit beiträgt.
-
Während die vorhergehende Beschreibung 9 Kandidatenvektoren auf jeder Auflösung umfasste, wird der Fachmann verstehen, dass andere Ausführungsformen andere Anzahlen von Kandidatenvektoren verwenden. Einige Ausführungsformen dezimieren um Faktoren anders als 2. In solchen Ausführungsformen erhöht sich die Anzahl der Kandidatenvektoren, um die größere Zunahme der Auflösung auszugleichen, beim Fortschreiten von einer niedrigeren Auflösung zu einer höheren Auflösung. Zum Beispiel werden die Bilder um einen Faktor von 4 in jeder Richtung in einigen Ausführungsformen dezimiert. In einigen solcher Ausführungsformen wird der Startverschiebungsvektor um einen Faktor von 4 (von einer Auflösung zur nächsten) skaliert und die Kandidatenvektoren umfassen alle Vektoren innerhalb von 3 Pixeln von dem Startverschiebungsvektor. Einige solcher Ausführungsformen verwenden 49 Kandidatenvektoren.
Während die vorhergehende Beschreibung das Verwerfen von hauptsächlich weißen Kacheln und hauptsächlich schwarzen Kacheln auf jedem Auflösungsniveau beinhaltete, verwerfen einige Ausführungsformen Kacheln nur auf höheren Auflösungsniveaus. Bei niedrigen Auflösungen ist die Anzahl von Pixeln in einem Bild kleiner, sodass das Entfernen von Kacheln wahrscheinlicher das Ergebnis der Suche beeinflusst. Zusätzlich ist die Suche nach Verschiebungsvektoren, die niedrig aufgelöste Bitmaps ausrichten, selbst ohne das Verwerfen von Kacheln angemessen schnell. Aufgrund des erhöhten Risikos von Fehlern beim Verwerfen von Kacheln auf niedrigen Auflösungen und dem verringerten Gewinn der Geschwindigkeit der Suche nach Verschiebungsvektoren, verwerfen einige Ausführungsformen Kacheln nur für Bitmaps oberhalb eines gewissen Auflösungsniveaus. Zum Beispiel verwerfen einige Ausführungsformen Kacheln nur für Bitmaps, die von Bildern innerhalb von 5 Niveaus der Dezimierung erzeugt werden. Auf ähnliche Weise verwerfen einige Ausführungsformen Kacheln nur für Bitmaps, die von Bildern innerhalb von 4, 3, 2, 1 oder 0 Niveau(s) der Dezimierung erzeugt werden. Einige Ausführungsformen, die Kacheln nur für höher aufgelöste Bilder verwerfen, teilen die niedriger aufgelösten Bitmaps nicht in Kacheln. Einige solcher Ausführungsformen vergleichen die gesamten Bitmaps auf niedrigen Auflösungsniveaus. Einige Ausführungsformen schließen Pixel in der Nähe einer oder mehrerer Kanten von einem oder mehreren der Bitmaps aus, um dieselbe Anzahl von Pixeln für jede Verschiebung zu vergleichen.
-
BILDVERARBEITUNG: HDR-BILDERZEUGUNG UND SKALIERUNG
-
Einleitung
-
In der Fotografie werden verschiedene Szenen mit unterschiedlichen Belichtungsdauern fotografiert. Lange Belichtungsdauern stellen ein hohes Niveau von Details für dunkle Objekte bereit. Kurze Belichtungsdauern stellen ein hohes Niveau von Details für helle Objekte bereit. Jedoch kann eine Belichtungsdauer, die nicht auf die Helligkeit eines Objektes, das fotografiert wird, angepasst wird, schlechte Resultate erzeugen. Zum Beispiel, beim Aufnehmen eines Bildes eines hellen Objektes, resultiert eine zu lange Belichtungsdauer in der Sättigung der Sensoren, auf welche das Bild dieses hellen Objektes fokussiert ist. Details werden in diesem Fall verloren, weil jedes Lichtniveau oberhalb des Sättigungsniveaus einfach als Weiß (mit dem maximalen Wert) erscheint. Wenn alle Pixel als weiß erscheinen, werden die Unterschiede in Lichtniveaus, die ansonsten Details bereitstellen würden, nicht aufgenommen. Ein anderes Beispiel für schlechte Resultate resultiert daher, dass ein Bild eines dunklen Objektes mit einer zu kurzen Belichtungsdauer aufgenommen wird. Eine zu kurze Belichtungsdauer stellt unzureichendes Licht für die Sensitivität der Sensoren bereit, auf welche das Bild des dunklen Objektes fokussiert ist. Das Detail wird verloren, da die Sensoren nicht akkurat kleine prozentuale Unterschiede in dem schon geringen Betrag von empfangenem Licht identifizieren können. Da unterschiedliche Szenen besser aussehen bei unterschiedlichen Belichtungsdauern, passen Fotografen und automatische Kameras Belichtungsdauern an, um Beleuchtungsbedingungen anzupassen. Die mobilen Vorrichtungen einiger Ausführungsformen passen die Belichtungsdauern auch in Übereinstimmung mit den Beleuchtungsbedingungen der Szene an, die sie fotografieren. Lange Belichtungsdauern werden verwendet, um Details von dunklen Szenen aufzunehmen; kurze Belichtungsdauern werden verwendet, um Details von hellen Szenen aufzunehmen; und mittlere Belichtungsdauern nehmen die Details von Szenen auf, die zwischen hell und dunkel (Mitteltöne) sind.
Jedoch, wenn eine Szene helle und dunkle Objekte sowie Mitteltonobjekte beinhaltet, wird eine Belichtungsdauer, die lang genug ist, um die Details des dunklen Objektes aufzunehmen, das helle Objekt in dem Bild sättigen lassen und das Mitteltonobjekt übermäßig hell lassen.
-
Eine Belichtungsdauer, die kurz genug ist, um die Details des hellen Objekts aufzunehmen, wird das dunkle Objekt hauptsächlich schwarz lassen und das Mitteltonobjekt zu dunkel. Eine Belichtungsdauer, die gerade richtig ist, um die Mitteltongegenstände aufzunehmen, wird die dunklen Objekte zu dunkel und die hellen Objekte zu hell lassen.
-
Um die Sättigung von hellen Objekten und wenig Details von dunklen Objekten zu vermeiden, nehmen einige Ausführungsformen drei Bilder mit unterschiedlichen Belichtungen (überbelichtet, unterbelichtet, und normal belichtet) auf und setzen die Bilder auf eine Weise zusammen, die die Details in jeder der Aufnahmen hervorhebt, die diese bestimmte Aufnahme gut aufnimmt. Das überbelichtete Bild zeigt gute Details in den dunklen Bereichen; deshalb wird die Zusammensetzung so gewichtet, dass Pixel von dem überbelichteten Bild verwendet werden, um Pixel in den dunklen Bereichen des Bildes zu erzeugen. Das unterbelichtete Bild zeigt gute Details in den hellen Bereichen; deshalb wird die Zusammensetzung so gewichtet, dass Pixel von dem unterbelichteten Bild verwendet werden, um Pixel in den hellen Bereichen des Bildes zu erzeugen. Das normal belichtete Bild zeigt gute Details in den Mitteltonbereichen; deshalb wird die Zusammensetzung so gewichtet, dass Pixel von dem normal belichteten Bild verwendet werden für die Mitteltonbereiche des Bildes.
-
Nach dem Ausrichten der Bilder, wie in Abschnitt IV gezeigt, führt das Bildverarbeitungsmodul einiger Ausführungsformen das Zusammensetzen der drei ausgerichteten Bilder aus, um ein zusammengesetztes HDR-Bild zu erzeugen. In einigen Ausführungsformen verwendet das Bildverarbeitungsmodul unterschiedliche Techniken, um die drei Bilder zusammenzusetzen. Einige Ausführungsformen setzen die drei Bilder zusammen durch das Ausführen von unterschiedlichen Sätzen von Operationen für einen Lumakanal dieser Bilder, als für die Chromakanäle dieser Bilder. In einigen Ausführungsformen sind die separaten Operationen auf den Chromakanalbildern dieselben wie oder ähnlich zu den Operationen auf den Lumabildern. Ebenfalls könnten einige Ausführungsformen beim Erzeugen des HDRzusammengesetzten Bildes Luma- und Chromawerte erzeugen, die einen gewünschten Bereich von Werten übersteigen. Weiterhin führen einige Ausführungsformen beim Erzeugen des HDR-Bildes gleichzeitig Skalierungsoperationen aus, um sicherzustellen, dass die Luma- und Chromawerte des HDR-Bildes innerhalb ihrer gewünschten Bereiche erzeugt werden. In einigen Ausführungsformen wird die Erzeugung eines finalen HDR-Bildes konzeptionell in HDR-Aufnahmeoperationen und HDR-Bearbeitungsoperationen aufgeteilt. In den HDR-Aufnahmeoperationen wird ein ursprüngliches HDR-Bild von mehreren Bildern erzeugt, die mit unterschiedlichen Belichtungszeiten aufgenommen sind. In den HDR- Bearbeitungsoperationen von einigen Ausführungsformen wird das ursprüngliche HDR-Bild durch eine oder mehrere Operationen angepasst, die Hervorheben der Schatten des Bildes, Abschwächen der Highlights des Bildes, Histogramm-Strecken des Bildes und Chromasättigung der Chromakomponenten des Bildes umfassen.
-
Um zu identifizieren, welche Bereiche jedes Bildes verwendet werden sollten, um die entsprechenden Bereiche eines zusammengesetzten Lumabildes zu erzeugen, erzeugen einige Ausführungsformen drei Masken. Die drei Masken entsprechen den drei Belichtungsniveaus. Um die Bereiche von jeder Aufnahme zu identifizieren, die in der Zusammensetzung zu verwenden sind, stellt jede Maske einen Gewichtungsfaktor für jeden Punkt ihrer entsprechenden Belichtung bereit. In einigen Ausführungsformen wird das normal belichtete Bild verwendet, um helle, dunkle und Mitteltonbereiche des Bildes zu identifizieren, um die drei Masken zu erzeugen. Ein zusammengesetztes Bild wird dann erzeugt, Pixel um Pixel, mit Hilfe der Masken als ein Gewichtungsfaktor für jeden Pixel. Ein hoher Wert in einer bestimmten Maske für einen bestimmten Pixel bedeutet, dass der Pixel in der Aufnahme, die zu der Maske korrespondiert, den entsprechenden Pixel in dem zusammengesetzten Bild stark beeinflussen wird. Ein niedriger Wert in einer bestimmten Maske für einen bestimmten Pixel bedeutet, dass der Pixel in der Aufnahme, die zu der Maske korrespondiert, den entsprechenden Pixel in dem zusammengesetzten Bild schwach beeinflussen wird. An den extremen Enden der Skala bedeutet ein Wert von 1 für einen bestimmten Pixel in einer Maske einer bestimmten Aufnahme, dass der Wert des entsprechenden Pixels in der Zusammensetzung vollständig von dem Wert des entsprechenden Pixels in dieser Aufnahme abhängen wird. Auf gleiche Weise bedeutet ein Wert von o für einen bestimmten Pixel in einer Maske von einer bestimmten Aufnahme, dass der Wert des entsprechenden Pixels in der Zusammensetzung überhaupt nicht von dem Wert des entsprechenden Pixels in dieser Aufnahme abhängen wird.
-
Während die Masken die individuellen Pixel gewichten, gewichten einige Ausführungsformen auch alle Pixel in jedem Bild mit einem Faktor, der die relativen Belichtungsdauern von jeder Aufnahme ausgleicht. In einigen Ausführungsformen werden die Belichtungsdauern, die in diesen Berechnungen verwendet werden, durch die Kamera der mobilen Vorrichtung bereitgestellt.
-
In einigen Ausführungsformen werden die Chromawerte der Bilder, um die Farbskala mit den Lumawerten richtig zu machen, ebenfalls mit einem ähnlichen Gewichtungsschema wie die Lumawerte zusammengesetzt. Das heißt, die Chromakanäle (Cb und Cr) der Aufnahmen werden mit denselben Masken und derselben Skalierung wie die Lumakanäle der Aufnahmen zusammengesetzt. Die Farben und die Mitteltöne des Bildes werden in solchen Ausführungsformen verbessert, entweder während des Zusammensetzens oder nach dem Zusammensetzen.
-
Zusammensetzen von Luma oder Luminanz
-
Die mobilen Vorrichtungen einiger Ausführungsformen erzeugen HDR-Bilder durch ein Zusammensetzen von mehreren Bildern, die mit unterschiedlichen Belichtungsdauern aufgenommen sind. Das Zusammensetzen von Bildern erzeugt, in einigen Ausführungsformen, ein Bild, in welchem der Wert von jedem Pixel ein gewichteter Mittelwert der Werte von entsprechenden Pixeln in jedem der drei Bilder ist. In einigen Ausführungsformen ist die Zusammensetzung ein gewichteter Mittelwert von Lumakomponenten der Bilder. In einigen Ausführungsformen ist die Zusammensetzung ein gewichteter Mittelwert von Luminanzkomponenten der Bilder. Das bedeutet, dass verschiedene Ausführungsformen Bilder in verschiedenen unterschiedlichen Bildformaten zusammensetzen. Einige Ausführungsformen führen alle Operationen auf Bildern in einem Luma (Y') Format aus. In anderen Ausführungsformen werden alle Operationen auf Bildern in einem Luminanz (Y) Format ausgeführt. In weiter anderen Ausführungsformen beginnen die mobilen Vorrichtungen mit Bildern in einem Luma (Y') Format und wandeln die Luma (Y') Komponenten zu Luminanz (Y) Komponenten um, führen dann Operationen auf den Luminanz (Y) Komponenten aus. Nachdem Luminanzbilder zusammengesetzt sind, wandeln die mobilen Vorrichtungen einiger Ausführungsformen die resultierenden zusammengesetzten Bilder von Luminanz (Y) nach Luma (Y'). Die folgende Beschreibung identifiziert einige Stellen in dem Zusammensetzungsverfahren, wo solche Umwandlungen stattfinden können; jedoch wird der Fachmann verstehen, dass die Umwandlungen in anderen Ausführungsformen während anderen Abschnitten des Verfahrens stattfinden können.
12 stellt ein Verfahren 1200 zum Zusammensetzen der Lumakanalbilder von drei unterschiedlichen Aufnahmen derselben Szene und Anpassen verschiedener Lumawerte des resultierenden zusammengesetzten Bildes dar. Das Verfahren 1200 wird jedes Mal ausgeführt, wenn das Zusammensetzungsmodul 120 drei (in einigen Ausführungsformen zusammengeschnittene) Bilder von dem Ausrichtungsmodul 115 empfängt. Dieses Verfahren wird mit Bezug auf 13A beschrieben, welche ein Beispiel des Ausführens des Verfahrens 1200 auf einer bestimmten Szene darstellt. Das Verfahren 1200 wird mit Bezug auf Gegenstände in der 13A beschrieben, jedoch wird der Fachmann verstehen, dass dieses zum Zwecke der Erklärung ist und dass die Berechnungen nicht auf die bestimmte Szene in dieser Figur beschränkt sind.
-
Die Szene in 13A ist ein Auto, das auf einer Bergstraße steht. Die Szene beinhaltet einen hellen Himmel und Hintergrund-beleuchtete Berge, die dunkel sind, sowie ein Auto und eine Straße, die im Mitteltonbereich sind. 13A beinhaltet drei Bilder (z.B. Farbbilder), die mit unterschiedlichen Belichtungen 1310A-1310C aufgenommen sind. Die Lumakanalbilder (manchmal als Lumabilder bezeichnet) 1320A-1320C von jedem der Bilder, Masken 1330A-1330C, zusammengesetzte Lumabilder 1340, Gauß-weichgezeichnete Zusammensetzungen 1350, Bild 1360A mit abgeschwächten Highlights und Bild 1360B mit Schattenkorrektur, zusammengesetztes Bild 1370 und finales Lumabild 1380. Diese drei Bilder, die bei unterschiedlichen Belichtungen aufgenommen sind, 1310A-1310C, repräsentieren die Farbbilder, die mit unterschiedlichen Belichtungsniveaus aufgenommen sind. Das Bild 1310A ist das unterbelichtete Bild, 1310B ist das normal belichtete Bild, und 1310C ist das überbelichtete Bild. In einigen Ausführungsformen wird das Bild 1310A ¼-mal so lang wie Bild 1310B belichtet, und das Bild 1310C wird viermal so lang wie das Bild 1310B belichtet. Die Belichtungszeitverhältnisse können andere Zahlen als 4 sein in derselben Ausführungsform oder in anderen Ausführungsformen. Die Lumakanalbilder 1320A-1320C repräsentieren nur die Lumainformation der Farbbilder 1310A-1310C. In einigen Ausführungsformen werden die Lumakanaldaten separat von Chromakanaldaten bereitgestellt, während in anderen Ausführungsformen die Lumakanaldaten von den Farbbildern extrahiert werden.
Wie mit Bezug auf 1 beschrieben, erzeugt die mobile Vorrichtung einiger Ausführungsformen die drei Bilder (z.B. 1310A-1310C) unter Verwendung von unterschiedlichen Belichtungsdauern für jedes Bild. In einigen Ausführungsformen werden die Belichtungsdauern mittels der Belichtungswertkompensation (Exposure Value Compensation, EV) gemessen. Für eine gegebene Blende einer Kamera auf einer mobilen Vorrichtung ist der Betrag der Belichtungsdauer proportional zu zwei hoch EV. Zum Beispiel erhöht ein EV von 3 die Belichtungsdauer um einen Faktor von 8. In einigen Ausführungsformen wird das überbelichtete Bild, bezogen auf das normal belichtete Bild mit einem EV von +2 aufgenommen und das unterbelichtete Bild wird mit einem EV von -2 aufgenommen. In solchen Ausführungsformen wird das überbelichtete Bild viermal so lang wie das normal belichtete Bild belichtet und das unterbelichtete Bild wird ¼-mal so lang wie das normal belichtete Bild belichtet. Verschiedene Ausführungsformen verwenden unterschiedliche EV-Werte als plus oder minus 2. Einige Ausführungsformen passen EVs für unterschiedliche Beleuchtungsbedingungen an. Zum Beispiel bestimmen einige Ausführungsformen, welche Belichtungswerte verwendet werden sollen, basierend auf einem Histogramm des normal belichteten Bildes (z.B. ein Histogramm, das von einem normal belichteten Vorschaubild erzeugt wird). Einige solcher Ausführungsformen behalten eine konstante Differenz zwischen dem EV+ Wert und dem EV- Wert bei. In einigen Ausführungsformen kann die EV der Überbelichtung einen unterschiedlichen Betrag von der EV der Unterbelichtung haben in einigen Beleuchtungsbedingungen. Zum Beispiel verwenden einige Ausführungsformen EV -3 und EV +1 für das unterbelichtete beziehungsweise überbelichtete Bild in sehr hellen Szenen. Einige Ausführungsformen verwenden EV -1 und EV +3 für das unterbelichtete beziehungsweise überbelichtete Bild in sehr dunklen Szenen.
Das Zusammensetzungsverfahren 1200 von 12 führt zu Beginn die HDR- Aufnahmeoperationen aus, beginnend mit drei Lumabildern, die mit unterschiedlichen Belichtungsdauern aufgenommen sind (z.B. Lumabilder 1320A-1320C). Das Verfahren erzeugt (bei 1210) drei Masken, die den drei Lumabildern 1320A-1320C entsprechen, von dem normal belichteten Lumabild 1320B. Das normal belichtete Lumabild 1320B wird verwendet, um zu identifizieren, welche Teile der Szene, die fotografiert wird, hell sind, welche Teile im Mitteltonbereich liegen, und welche Teile der Szene dunkel sind. In 13A beinhalten die hellen Bereiche des normal belichteten Lumabildes 1320B den Himmel und die Räder des Autos, die dunklen Bereiche beinhalten die Berge und die Mitteltonbereiche beinhalten den Körper des Autos und die Straße. Die Masken sind ein Satz von Gewichtungen zum Zusammensetzen der Pixel. In einigen Ausführungsformen hat jede Maske dieselbe Auflösung wie die zu zusammensetzenden Bilder. Die Masken können als ein Bild repräsentiert werden und es ist bequem, die Werte in einer Maske als Pixelwerte zu beschreiben, jedoch sind die Daten in den Masken zur Verwendung in Zusammensetzungsberechnungen bestimmt, nicht primär zur visuellen Anzeige.
-
Die drei Masken entsprechen den drei Lumabildern 1320A-1320C. Das unterbelichtete Lumabild 1320A stellt die besten Details in hellen Bereichen dar. Deshalb hat die Maske 1330A für das unterbelichtete Lumabild 1320A hohe Werte für Pixel, die hellen Pixeln entsprechen in dem normal belichteten Lumabild 1320B, und niedrige Werte für Pixel, die zu mittleren und dunklen Pixeln in dem normal belichteten Lumabild 1320B korrespondieren. Das überbelichtete Lumabild 1320C stellt die besten Details in dunklen Bereichen dar. Deshalb hat die Maske 1330C für das überbelichtete Lumabild 1320C hohe Werte für Pixel, die dunklen Pixeln in dem normal belichteten Lumabild 1320B entsprechen, und niedrige Werte für Pixel, die mittleren und hellen Pixeln in dem normal belichteten Lumabild 1320B entsprechen. Das normal belichtete Lumabild 1320B stellt die besten Details in Mitteltonbereichen dar. Deshalb hat die Maske 1330B für das normal belichtete Lumabild 1320B hohe Werte für Pixel, die Mitteltonpixeln in dem normal belichteten Lumabild 1320B entsprechen, und niedrige Werte für Pixel, die hellen und dunklen Pixeln in dem normal belichteten Lumabild 1320B entsprechen.
-
Einige Ausführungsformen stellen Masken mit einem Bereich an Werten bereit, um die Pixel von unterschiedlichen Lumabildern 1320A-1320C übereinander zu blenden, anstelle des Verwendens von separaten Pixeln für jedes Bild. Je höher der Wert eines Pixels in einer Maske ist, desto mehr Einfluss hat der entsprechende Pixel in dem entsprechenden Bild auf den Wert des entsprechenden Pixels in dem zusammengesetzten Bild. Um die Identifikation der Bereiche von jedem Bild zu vereinfachen, haben die Masken 1330A-1330C nur schwarze Bereiche und weiße Bereiche in 13A. Jedoch würde eine visuelle Repräsentation der Masken einiger Ausführungsformen graue Pixel umfassen. Solche grauen Pixel würden Pixel repräsentieren, die den Wert des entsprechenden Pixels in dem zusammengesetzten Bild beeinflussen, aber nicht komplett bestimmen.
Die folgenden Gleichungen (1)-(3) werden in einigen Ausführungsformen verwendet, um die Masken zu erzeugen. Diese Gleichungen resultieren in drei Kurven, basierend auf hyperbolischen Tangenten, die drei Sätze an Gewichtungsfaktoren bereitstellen, die einen ursprünglichen Bias bereitstellen zum Zusammensetzen des HDR-Bildes durch das Nehmen von Details von dunklen Bereichen von dem überbelichteten Bild, das Nehmen von Details von hellen Bereichen von dem unterbelichteten Bild, und das Nehmen von Details von Mitteltönen von dem normal belichteten Bild, wie oben ausgeführt. Statt dem Verwenden von Gleichungen/Kurven basierend auf hyperbolischen Tangenten verwenden andere Ausführungsformen andere Typen von sigmoidalen oder anderen nichtlinearen Funktionen/Kurven, um die Maskierungswerte zu spezifizieren, die verwendet werden zum selektiven Gewichten der Bilder, um ein zusammengesetztes Bild zu erzeugen.
-
Die Gleichungen hierin folgen einer Konvention, dass jede Variable durch einen einzigen großen Buchstaben repräsentiert wird, in manchen Fällen folgt dem Großbuchstaben ein einziger Kleinbuchstabe, insbesondere, wenn Variablen, die derselben Funktion für unterschiedliche Masken oder Bilder dienen, verwendet werden. Variablen, die unterschiedliche Werte für unterschiedliche individuelle Pixel in den Bildern haben, werden durch ein [x,y] bezeichnet, die den Anfangsbuchstaben folgen, um anzuzeigen, dass ihr Wert in der Gleichung auf einer pro-Pixel-Basis bestimmt wird, wobei x und y die Koordinaten von dem Pixel in dem Bild repräsentieren. Die Variablen mit unterschiedlichen Werten für unterschiedliche Pixel werden für jeden Pixel über den gesamten Bereich von Pixeln in dem Bild berechnet. Die Gleichungen werden mit Bezug auf Gegenstände in der 13A erklärt, jedoch wird der Fachmann verstehen, dass dies zum Zwecke der Erklärung ist und dass die Berechnungen nicht auf die bestimmte Szene in dieser Figur beschränkt sind.
-
In einigen Ausführungsformen werden die Werte für die Pixel in den Masken
1330A-1330C mit Hilfe der folgenden Gleichungen erzeugt:
-
In Gleichung (1), repräsentiert Mb[x,y] den Wert der überbelichteten Maske 1330C an den Koordinaten [x,y] und ist eine Funktion des Lumawertes Ln[x,y] des entsprechenden Pixels des normal belichteten Lumabildes 1320B. Tb ist ein Schwellwertlumawert für das überbelichtete Bild. Sb beeinflusst die Steigung der Funktion. In jeder Gleichung, in welcher es hierin erscheint, ist tanh der hyperbolische Tangens. Anstelle des Ausführens einer tanh Berechnung in Echtzeit verwenden einige Ausführungsformen eine Nachschlagetabelle, um Werte zu identifizieren, die durch tanh für eine gegebene Eingabe erzeugt werden. Einige Ausführungsformen verwenden Nachschlagetabellen anstelle von anderen Berechnungen anstelle von oder zusätzlich zu tanh.
-
In Gleichung (2) repräsentiert Mu[x,y] den Wert der unterbelichteten Maske 1330A bei Koordinaten [x,y]. Wie Mb[x,y] ist es auch eine Funktion des Lumawertes Ln[x,y] des entsprechenden Pixels des normal belichteten Lumabildes 1320B. Tu ist ein Schwellwertlumawert für das unterbelichtete Bild. Su beeinflusst die Steigung der Funktion. In Gleichung (3) repräsentiert Mn[x,y] den Wert der Maske 1330B für die normal belichtete Maske bei Koordinaten [x,y].
-
Der Zweck der Überbelichtungsmaske 1330C ist es, den Einfluss der Pixel in dunklen Bereichen zu erhöhen (wo das überbelichtete Lumabild 1320C gute Details bereitstellt) und den Einfluss der Pixel in hellen Bereichen (wo das überbelichtete Lumabild 1320C höchstwahrscheinlich gesättigt ist) zu verringern. Demgemäß ist die Gewichtung eines Pixels von dem überbelichteten Lumabild 1320C in Gleichung 1 eine glatte, fallende Funktion des Lumawertes des entsprechenden Pixels in dem normal belichteten Lumabild 1320B. Sb hat ein negatives Zeichen vor sich, was anzeigt, dass positive Werte von Sb, wie sie in manchen Ausführungsformen verwendet werden, in einer Funktion resultieren, die mit dem Lumawert fällt. Für einen positiven Wert von Sb gilt, je heller ein Pixel in dem normal belichteten Lumabild 1320B ist, desto weniger Gewicht wird dem entsprechenden Pixel in dem überbelichteten Bild gegeben, beim Erzeugen des zusammengesetzten Bildes.
-
Wie oben bemerkt, ist Tb ein Schwellwertlumawert für das überbelichtete Bild. Wenn ein Pixel in dem normal belichteten Lumabild 1320B einen Wert unter Tb (dunkler als der Schwellwert) hat, hat der entsprechende Pixel der Überbelichtungsmaske 1330C einen Wert von mehr als ½. Wenn ein Pixel in dem normal belichteten Lumabild 1320B einen Wert von Tb (beim Schwellwert) hat, hat der entsprechende Pixel der Überbelichtungsmaske 1330C einen Wert von ½. Wenn ein Pixel in dem normal belichteten Lumabild 1320B einen Wert über Tb (heller als der Schwellwert) hat, hat der entsprechende Pixel der Überbelichtungsmaske 1330C einen Wert von weniger als ½. In einigen Ausführungsformen wird der Wert von Tb bestimmt durch das Teilen von 0,015 durch den Medianwert des Lumas der Pixel in dem normal belichteten Lumabild 1320B. Zum Beispiel, wenn der Medianwert für die Lumas der Pixel in dem normal belichteten Lumabild 1320B 0,1 ist, dann würde der Wert von Tb 0,15 sein. In einigen Ausführungsformen wird der Wert von Tb bestimmt durch das Teilen von 0,02 (oder einem anderen Wert) durch den Medianwert des Lumas der Pixel in dem normal belichteten Lumabild 1320B. Einige Ausführungsformen haben verschiedene Arten des Berechnens von Tb abhängig von Eigenschaften der Bilder. Zum Beispiel berechnen einige Ausführungsformen Tb basierend auf dem Durchschnitts- (Mittelwert-) Luma von einem Lumabild (z.B. 1320B) anstelle von dem Medianluma.
-
Sb bestimmt, wie schnell die Funktion Mb [x,y] sich um den Schwellwert Tb herum ändert. Ein sehr hoher Wert für Sb resultiert in einer schnellen Änderung. Für einen hohen Wert von Sb werden Pixel in dem normal belichteten Lumabild 1320B mit einem Lumawert gerade oberhalb des Schwellwertes Tb in einem entsprechenden Pixel in der Maske 1330C resultieren, das einen sehr niedrigen Wert hat. Der niedrige Wert des Pixels in der Maske bedeutet, dass der entsprechende Pixel in dem überbelichteten Lumabild 1320C nahezu keinen Einfluss auf den Wert des entsprechenden Pixels des zusammengesetzten Bildes 1340 hat. Pixel in dem normal belichteten Lumabild 1320B mit einem Lumawert gerade unterhalb des Schwellwertes werden in dem korrespondierenden Pixel in der Maske 1330 resultieren, der einen sehr hohen Wert hat (mit einem Maximum von 1). Der Wert des entsprechenden Pixels in dem überbelichteten Lumabild 1320C wird fast vollständig den Wert des entsprechenden Pixels in dem zusammengesetzten Bild 1340 bestimmen. Im Gegensatz dazu wird ein niedriger Wert von Sb in einem allmählichen Umschalten des Einflusses resultieren beim Kreuzen des Schwellwertes. Für einen niedrigen Wert von Sb werden Pixel in dem normal belichteten Lumabild 1320B mit einem Lumawert gerade unterhalb des Schwellwertes in dem korrespondierenden Pixel in der Maske 1330C resultieren, der gerade mehr als 50% Einfluss auf den entsprechenden Pixel in dem zusammengesetzten Bild 1340 hat. Für einen niedrigen Wert von Sb werden Pixel in dem normal belichteten Lumabild 1320B mit einem Lumawert gerade oberhalb des Schwellwertes in dem entsprechenden Pixel in der Maske 1330C resultieren, der gerade weniger als 50% Einfluss auf den entsprechenden Pixel in dem zusammengesetzten Bild 1340 hat. In einigen Ausführungsformen ist der Wert von Sb 10.
-
Der Zweck der unterbelichteten Maske 1330A ist es, den Einfluss der Pixel in hellen Bereichen (wo das unterbelichtete Lumabild 1320A gute Details bereitstellt) zu erhöhen und den Einfluss der Pixel in dunklen Bereichen (wo das unterbelichtete Lumabild 1320A höchstwahrscheinlich zu dunkel ist, um Details zu zeigen) zu verringern. Demgemäß sollten in Gleichung (2) die Werte der Pixel in der Unterbelichtungsmaske 1330A eine steigende Funktion des Lumawertes des entsprechenden Pixels in dem normal belichteten Lumabild 1320B sein. Der Steigungsbestimmer Su hat kein minus vor sich, deshalb resultieren positive Werte von Su in einer positiven Funktion von Luma. Der Schwellwert Tu in Gleichung (2) unterscheidet sich von dem Schwellwert Tb in Gleichung (1). In einigen Ausführungsformen wird der Wert von Tu bestimmt durch das Multiplizieren des Medianlumawertes des normal belichteten Lumabildes 1320B mit 6 (oder einem anderen Wert). In einigen Ausführungsformen, wenn das Produkt des Medianlumawertes und der Faktor (z.B. 6) größer ist als 1, wird der Wert von Tu auf 1 gesetzt. Einige Ausführungsformen haben unterschiedliche Arten, Tu zu berechnen, abhängig von Eigenschaften des Bildes. Ähnlich wie für den Fall von Sb, bestimmt der Betrag von Su, wie schnell der Einfluss (auf das zusammengesetzte Bild 1340) von Pixeln des unterbelichteten Lumabildes 1320A sich ändert, als eine Funktion des Lumawertes des entsprechenden Pixels in dem normal belichteten Lumabild 1320B. Ein hoher Wert für Su stellt eine schnelle Änderung von keinem Einfluss zu großem Einfluss bereit, wenn der Lumawert der Pixel des normal belichteten Lumabildes 1320B von unterhalb des Schwellwertes Tu nach oberhalb des Schwellwertes läuft. Ein niedriger Wert für Su stellt eine graduelle Änderung von keinem Einfluss zu großem Einfluss bereit, wenn der Lumawert der Pixel des normal belichteten Lumabildes 1320B von unterhalb des Schwellwertes Tu nach oberhalb des Schwellwertes läuft.
-
Die Pixel der Normalbelichtungsmaske 1330B haben einen Wert von 1 minus dem Wert der entsprechenden Pixel in den anderen Masken 1330A und 1330C. Die normale Belichtungsmaske 1330B hat höhere Werte, wo beide der anderen Masken niedrigere Werte haben, und niedrigere Werte, wo eine der anderen Masken (oder ihre Summe) höhere Werte haben. Zum Beispiel, angenommen, der Su Wert ist gleich dem Sb Wert, der verwendet wird, um die anderen Masken zu erzeugen, dann sind die kombinierten Werte von den anderen zwei Masken am niedrigsten für Pixel bei dem Durchschnittswert von Tb und Tu. Deshalb hat die Normalbelichtungsmaske 1330B ihren höchsten Wert für Pixel, die Pixeln in dem normal belichteten Lumabild 1320B mit Lumawerten beim Mittelwert von Tb und Tu entsprechen.
-
Eine visuelle Repräsentation einer Maske, die einen graduellen Übergang hat (z.B. mit einem niedrigen Betrag von Su oder Sb) von einer Maske, die den Wert eines Pixels dominiert, zu einer anderen Maske, die den Wert des Pixels dominiert, hätte graue Bereiche, die Bereichen der Zusammensetzung entsprechen, die teilweise durch eine Maske und teilweise durch eine andere Maske beeinflusst wären. Im Gegensatz dazu hätte eine visuelle Repräsentation einer Maske, die abrupte Übergänge hat (z.B. mit einem hohen Betrag von Su oder Sb) von einer Maske zu einer anderen, fast vollständig schwarze Pixel und weiße Pixel, mit wenigen grauen Pixeln (wenn überhaupt). Die Masken 1330A-1330C werden erzeugt mit Hilfe sehr hoher Werte von Su und Sb, deshalb haben sie keine grauen Pixel. Ein Pixel in dem normal belichteten Lumabild 1320B, der ein bisschen dunkler als der Schwellwert Tb ist, resultiert in einem weißen Pixel in der Überbelichtungsmaske 1330C. Ein Pixel in dem normal belichteten Lumabild 1320B, der ein bisschen heller als der Schwellwert Tb ist, resultiert in einem schwarzen Pixel in der Überbelichtungsmaske 1330C. Ein Pixel in dem normal belichteten Lumabild 1320B, der ein bisschen dunkler als der Schwellwert Tu ist, resultiert in einem schwarzen Pixel in der Unterbelichtungsmaske 1330A. Ein Pixel in dem normal belichteten Lumabild 1320B, der ein bisschen heller als der Schwellwert Tu ist, resultiert in einem weißen Pixel in der Überbelichtungsmaske 1330A. Ein Pixel in dem normal belichteten Lumabild 1320B, der zwischen den Schwellwerten Tu und Tb ist, resultiert in einem weißen Pixel in der Normalbelichtungsmaske 1330B. Ein Pixel in dem normal belichteten Lumabild 1320B, der nicht zwischen den Schwellwerten Tu und Tb ist, resultiert in einem schwarzen Pixel in der Normalbelichtungsmaske 1330B. In Summe stellt die Unterbelichtungsmaske 1330A die gesamte Gewichtung (in der Zusammensetzung) der hellen Pixel bereit, die Normalbelichtungsmaske 1330 B stellt die gesamte Gewichtung der Mitteltonpixel bereit und die Überbelichtungsmaske stellt die gesamte Gewichtung der dunklen Pixel bereit. Die extremen Abschneidungen in den Masken 1330A-1330C werden bereitgestellt, weil diese es einfach machen, die verschiedenen Bereiche von hoher und niedriger Gewichtung in einer schwarzen und weißen Figur zu identifizieren. Jedoch würden in einigen Ausführungsformen mit niedrigeren Werten von Sb und Su die entsprechenden Masken einen Bereich an Werten umfassen. Visuell beschrieben würden die Masken graue Bereiche umfassen, die einen geteilten Einfluss auf das Luma der Pixel in der Zusammensetzung repräsentieren.
-
Um eine Überbelichtungsbildmaske zu erzeugen, passen einige Ausführungsformen den Schwellwert Lumawert Tb von dem oben beschriebenen Wert an. Einige Ausführungsformen passen den Schwellwert Lumawert Tb an, weil das Signal-zu-Rausch-Verhältnis des überbelichteten Bildes sich mit steigender Belichtungsdauer verringert (z. B. verursachen längere Belichtungsdauern mehr Rauschen in dem Bild). Demgemäß, um das Rauschen in dem zusammengesetzten Bild zu verringern, passen einige Ausführungsformen den Schwellwert Lumawert Tb an, um weniger des überbelichteten Bildes in der finalen Zusammensetzung zu erfassen. In einigen Ausführungsformen wird die folgende Gleichung verwendet, um den Schwellwert anzupassen:
-
In Gleichung (4) ist das erste Tb der Schwellwert Lumawert nach der Anpassung; das zweite Tb ist der Schwellwert Lumawert vor der Anpassung. Fb ist das Signal-zu-Rausch-Verhältnis in Dezibel (dB) des überbelichteten Bildes. Ft ist ein Schwellwert Signal-zu-Rausch-Verhältnis. Signal-zu-Rausch-Verhältnisse über dem Ft-Schwellwert erhöhen das Schwellwert-Luma des überbelichteten Bildes, was die Anzahl von Pixeln in dem überbelichteten Bild erhöht, die einen hohen Einfluss auf das zusammengesetzte Bild 1340 haben. In einigen Ausführungsformen ist Ft 24 dB. Während der Kalibrierung der mobilen Vorrichtung (oder eines Prototyps der mobilen Vorrichtung) wird in einigen Ausführungsformen das Signal-zu-Rausch-Verhältnis für eine Serie von Lichtniveaus gemessen (z. B. fünf Lichtniveaus). Diese gemessenen Signal-zu-Rausch-Verhältnisse werden verwendet, um das Signal-zu-Rausch-Verhältnis für ein gegebenes Bild zu bestimmen. In einigen Ausführungsformen wird die Kalibrierung auf jeder mobilen Vorrichtung ausgeführt. In anderen Ausführungsformen wird die Kalibrierung auf einem Testgerät (eines oder mehrere) der mobilen Vorrichtung ausgeführt, um die Kalibrierungspunkte für diesen Typ der mobilen Vorrichtung zu bestimmen, diese Kalibrierungspunkte werden dann für andere mobile Vorrichtung desselben Typs verwendet. Einige Ausführungsformen haben Standardkalibrierungspunkte, aber erlauben, dass neue Kalibrierungspunkte für eine bestimmte mobile Vorrichtung berechnet werden. Das Lichtniveau eines bestimmten Bildes wird durch die mobile Vorrichtung bestimmt, wenn das Bild aufgenommen wird. In Ausführungsformen mit einer kalibrierten mobilen Vorrichtung, basierend auf dem Lichtniveau wird das Signal-zu-Rausch-Verhältnis des Bildes von dem Signal-zu-Rausch-Verhältnis der Kalibrierungspunkte interpoliert.
-
In einigen Ausführungsformen kann das Maskieren basierend auf individuellen Pixeln in einem Verlust von Kontrast resultieren. Mehr Details werden beibehalten, wenn Pixel, die nicht mit Pixeln in der Nähe übereinstimmen (helle Pixel in ansonsten dunklen Bereichen, usw.), stärker durch die Bilder, die die meisten Details für diesen Bereich bereitstellen, beeinflusst werden, anstelle des Bildes, das das beste Detail für diesen Pixelwert bereitstellt. Zum Beispiel wäre in solchen Ausführungsformen der zusammengesetzte Wert für einen dunklen Pixel in einem hellen Hintergrund am meisten durch den entsprechenden Pixel des unterbelichteten Bildes beeinflusst, das besser ist zum Bereitstellen von Details für helle Pixel (wie der Hintergrund) anstelle des überbelichteten Bildes, welches besser ist zum Bereitstellen von Details für dunkle Pixel. Weiterhin kann ein Zusammensetzen ohne Weichzeichnen der Maske zu Hochfrequenzübergängen in der Zusammensetzung führen zwischen Pixeln, die von unterschiedlichen Aufnahmen abgeleitet werden, weil die Gewichte räumlich nicht glatt sind. Deshalb weichzeichnen einige Ausführungsformen die Masken, um Hochfrequenzübergänge in der Zusammensetzung zu reduzieren durch das räumliche Glätten der Gewichte zusätzlich oder anstelle des Weichzeichnens der Masken, um Kontrast an den Grenzen zwischen hellen und dunklen Bereichen zu verbessern. Deshalb passt das Verfahren
1200 in einigen Ausführungsformen (bei
1215) die Masken an, um den Kontrast an den Grenzen zwischen hellen und dunklen Bereichen zu verbessern und/oder um Hochfrequenzübergänge in der Zusammensetzung zu verringern. Demgemäß werden die Masken von einigen Ausführungsformen weichgezeichnet vor dem Anwenden als Gewichtungen für das zusammengesetzte Bild
1340. In einigen solchen Ausführungsformen werden die Masken weichgezeichnet mithilfe einer Gleichung wie:
-
In Gleichung (5) repräsentiert das erste Mb[x,y] die Maske, nachdem der Weichzeichnungsfilter angewandt wird, das zweite Mb[x,y] repräsentiert die Maske bevor der Weichzeichnungsfilter angewandt wird. Der Filter in Gleichung (5) und (6) ist eine 2D-Filteroperation mithilfe eines Filters k. Das Element k ist ein 2D Gaußscher Filterkernel. In einigen Ausführungsformen wird ein 7×7 oder ein 9×9-Filterkernel verwendet mit einer Pixelvarianz von 3. In Gleichung (6) repräsentiert das erste Mu[x,y] die Maske, nachdem der Weichzeichnungsfilter angewandt wurde; das zweite Mu[x,y] repräsentiert die Maske, bevor der Weichzeichnungsfilter angewandt wird.
-
Die Größe des Filterkernels (k) kann die Resultate der Weichzeichnungsoperation beeinflussen. Große Werte von k können in großen Halo-Effekten resultieren aber kleine Werte von k können in einem Verlust von Kontrast innerhalb eines Bereiches resultieren. Das Weichzeichnen stellt sicher, dass die Masken Gewichte bereitstellen, basierend auf der Helligkeit des Bereiches, in dem sich ein Pixel befindet, anstelle des Bereitstellens von Gewichten basierend auf der Helligkeit des individuellen Pixels. In einigen Ausführungsformen verbessert dies den Kontrast innerhalb von Bereichen, die Pixel von mehreren Bereichen haben (dunkel, Mittelton und/oder hell). Die Gleichungen (5) und (6) werden ausgeführt vor der Gleichung (3), in einigen Ausführungsformen, so dass die Normalbelichtungsmaske 1330B von den weichgezeichneten Masken erzeugt wird, die durch Gleichungen (5) und (6) erzeugt werden, anstelle durch die Masken, die durch die Gleichungen (1) und (2) erzeugt wurden.
-
Die obige Beschreibung von Maskenerzeugung beschreibt die Erzeugung von Masken mithilfe von Daten von einem normal belichteten Lumabild 1320B, aber nicht der anderen Lumabilder 1320A und 1320C. Jedoch kann das Verwenden des normal belichteten Lumabildes 1320B, um alle drei Masken 1330A - 1330C zu erzeugen, zu Situationen führen, in denen überlastete (z. B. gesättigte Bereiche) von dem überbelichteten Bild verwendet werden. Es kann auch zu Situationen führen, in denen Bereiche des unterbelichteten Bildes, die zu dunkel sind, verwendet werden. Deshalb werden in einigen Ausführungsformen Masken von Lumabildern erzeugt, die Lumawerte von dem überbelichteten und dem unterbelichteten Bild verwenden anstelle von oder zusätzlich zu Lumawerten von dem normalen Bild. 13B zeigt ein Beispiel des Ausführens des Verfahrens 1200 und Erzeugens von Masken 1330A- 1330C von jedem Bild. In 13B wird die unterbelichtete Maske 1330A von dem unterbelichteten Lumabild 1320A erzeugt, die überbelichtete Maske 1330C wird von dem überbelichteten Lumabild 1320C und die Normalbelichtungsmaske 1330B wird von dem überbelichteten Lumabild 1320C und unterbelichteten Lumabild 1320A erzeugt. Obwohl 13B die Normalbelichtungsmaske als mithilfe des unterbelichteten Lumabildes 1320A und des überbelichteten Lumabildes 1320C erzeugt zeigt, wird in manchen Ausführungsformen die Normalbelichtungsmaske 1330B von der Unterbelichtungsmaske 1320A und der Überbelichtungsmaske 1320C erzeugt mithilfe der Gleichung (3). In einigen Ausführungsformen wird die Normalbelichtungsmaske 1330B von der Unterbelichtungsmaske 1320A und der Überbelichtungsmaske 1320C erzeugt, nachdem die Unterbelichtungsmaske 1320A und die Überbelichtungsmaske 1320C unscharf gemacht wurden.
-
In einigen Ausführungsformen, die Masken von den unterbelichteten und überbelichteten Bildern erzeugen, werden die Masken mit zu Gleichungen (1)-(6) ähnlichen Gleichungen erzeugt, aber die Lumawerte (Lb[x,y]) von den überbelichteten Bildern ersetzen die Ln[x,y] für die Überbelichtungsmaske, die Lumawerte (Lu[x,y]) von dem unterbelichteten Bild ersetzen die Ln[x,y] für die Unterbelichtungsmaske und die Schwellwerte werden entsprechend angepasst. In einigen solcher Ausführungsformen werden die Schwellwertwerte zum Berechnen der Überbelichtungs- und Unterbelichtungsmasken von den Median-Lumawerten der entsprechenden Bilder abgeleitet. In einigen Ausführungsformen werden die Schwellwertwerte von dem Median-Lumawert des normal belichteten Bildes abgeleitet (z. B. auf dieselbe Art wie in den oben beschriebenen Ausführungsformen, die Masken von dem normal belichteten Bild erzeugen). In einigen Ausführungsformen werden die Schwellwertwerte auf Standardwerte von 0,4 für Tb (für die Überbelichtungsmaske) und 0,5 für Tu (für die Unterbelichtungsmaske) gesetzt. In weiteren anderen Ausführungsformen werden die Schwellwertwerte auf Standardwerte von 0,5 für Tb (für die Überbelichtungsmaske) und 0,5 für Tu (für die Unterbelichtungsmaske) gesetzt.
-
Nachdem das Verfahren
1200 (bei
1210) die Masken erzeugt hat (z. B. Masken
1330A-1330C), erzeugt das Verfahren (bei
1220) ein zusammengesetztes Lumabild (z. B. Lumabild
1340), welches Details umfasst, die von jeder individuellen Lumaaufnahme genommen sind (z. B.
1320A-1320C). In dem zusammengesetzten Lumabild
1340 sind alle Details von dem Autokörper und der Straße des normal belichteten Lumabildes
1320B vorhanden, alle Details von den Bergen des überbelichteten Lumabildes
1320C vorhanden und alle Details von dem Himmel und Rädern des unterbelichteten Lumabildes
1320A vorhanden. In einigen Ausführungsformen werden die Lumabilder
1330A-1330C mithilfe der folgenden Gleichung zusammengesetzt:
-
In Gleichung (7A) ist Lc[x,y] der Lumawert für den Pixel an den Koordinaten [x,y] in dem zusammengesetzten Bild 1340. Lb[x,y] ist der Lumawert für den Pixel an den Koordinaten [x,y] in dem überbelichteten (hellen) Lumabild 1320C. Ln[x,y] und Lu[x,y] sind die Lumawerte für das normal belichtete Lumabild 1320B bzw. das unterbelichtete Lumabild 1320A. Eb ist ein Belichtungsskalierungsfaktor für die Belichtung des überbelichteten Lumabildes 1320C. En und Eu sind die entsprechenden Skalierungsfaktoren für das normal belichtete Lumabild 1320B bzw. das unterbelichtete Lumabild 1320A. Mb[x,y] repräsentiert den Wert für die Überbelichtungsmaske 1330C an den Koordinaten [x,y]. Mn[x,y] und Mu[x,y] repräsentieren die Werte für die Normalbelichtungsmaske 1330B bzw. Unterbelichtungsmaske 1330A. Der Wert eines Pixels in der Maske 1330C bestimmt wie viel Einfluss der entsprechende Pixel in dem überbelichteten Lumabild 1320C auf das zusammengesetzte Bild hat. Der Wert eines Pixels in der Maske 1330B bestimmt wie viel Einfluss der entsprechende Pixel in dem normal belichteten Lumabild 1320B auf das zusammengesetzte Bild hat. Der Wert eines Pixels in der Maske 1330A bestimmt, wie viel Einfluss der entsprechende Pixel in dem unterbelichteten Lumabild 1320A auf das zusammengesetzte Bild hat. In jeder Maske 1330A-1330C bedeuten höhere Werte mehr Einfluss auf das zusammengesetzte Bild.
-
Die Belichtungsskalierungsfaktoren (Eu, En und Eb) gleichen die unterschiedlichen Belichtungsdauern des Bildes aus (z. B. wenn das überbelichtete Bild 4-mal mehr Belichtungsdauer hat als das normal belichtete Bild, dann ist Eb=En/4). Die länger belichteten Bilder haben höhere Lumawerte, weil sie länger belichtet werden, nicht weil ihre Daten „besser“ sind oder weil sie hellere Teile des Bildes repräsentieren. Ohne das Ausgleichen der längeren Belichtungsdauer würden die Daten von dem überbelichteten Bild das Ergebnis mehr dominieren als ihr Informationswert anzeigen würde. In einigen Ausführungsformen ist das Verhältnis der Belichtungsdauern ein anderes als 4. Die Verhältnisse von Unterbelichtungsdauer zu normaler Belichtungsdauer sind verschieden von den Verhältnissen von normaler Belichtungsdauer zu Überbelichtungsdauer in einigen Ausführungsformen. In solchen Ausführungsformen würden die Belichtungsskalierungsfaktoren angepasst werden, um die unterschiedlichen Verhältnisse der Belichtungsdauern widerzuspiegeln.
-
In Ausführungsformen, die Formate verwenden, in welchen die Werte der Pixel eine lineare Funktion des Lichts sind, das die entsprechenden Sensoren erreicht, kompensieren die Belichtungsskalierungsfaktoren gleichmäßig die Unterschiede der Pixelwerte, die durch die unterschiedlichen Belichtungsdauern hervorgerufen werden. Wenn der Wert der Pixel eine lineare Funktion des Lichts ist, das die Sensoren erreicht, dann würde, bei Abwesenheit anderer Faktoren (z. B. variierende Helligkeit des Teils der Szene, die durch einen bestimmten Sensor aufgenommen wird), der Wert eines Pixels 4-mal größer in einem überbelichteten Bild mit 4-mal der Normalbelichtungsdauer sein, als der Wert für den entsprechenden Pixel in einem normal belichteten Bild derselben Szene. In solch einem Format haben die Pixel in jeder Aufnahme derselben Szene dieselben Werte bezogen aufeinander. D. h., wenn ein Pixel in dem normal belichteten Bild das Doppelte des Wertes eines anderen Pixels in dem normal belichteten Bild ist, wird der Pixel des überbelichteten Bildes, der dem ersten Pixel in dem normalen Bild entspricht, den doppelten Wert des Pixels in dem überbelichteten Bild haben, der dem zweiten Pixel in dem normalen Bild entspricht.
-
Einige mobile Vorrichtungen nehmen Bilder in einem Format auf, das eine Komponente (Luminanz) umfasst, die eine lineare Funktion des Betrags von Licht ist, das die Sensoren erreicht (bis zu einem Sättigungspunkt). Jedoch wandeln einige solcher Vorrichtungen automatisch die Luminanzbilder in Lumabilder mithilfe einer nichtlinearen Transformation (z. B. Gammakorrektur). Aufgrund der nichtlinearen Transformierung von Luminanz zu Luma sind Lumawerte nicht eine lineare Funktion der Belichtungsdauer. Die Lumawerte sind keine lineare Funktion, da die Gammakorrektur die Werte in der Nähe des Bodens des Luminanzbereichs mehr als Werte in der Nähe der Mitte und des oberen Endes des Luminanzbereichs ändert. Überbelichtete Bilder, welche mit langen Belichtungsdauern aufgenommen sind, sind heller als normal belichtete Bilder und haben Luminanzwerte, die in der Nähe des oberen Bereiches des Luminanzbereichs der Kamera gehäuft sind. Unterbelichtete Bilder, welche mit kurzen Belichtungsdauern aufgenommen sind, sind dunkler als der Durchschnitt und haben Luminanzwerte, die in der Nähe des Bodens des Luminanzbereichs der Kamera gehäuft sind. Die Bilder, die mit normalen Belichtungen aufgenommen sind, haben Luminanzwerte, die in der Mitte des Luminanzbereichs der Kamera gehäuft sind. Aufgrund der unterschiedlichen Niveaus der Helligkeit der unterschiedlichen Belichtungen kann die Gammakorrektur die Werte der relativen Helligkeit der entsprechenden Objekte in den unterschiedlichen Aufnahmen unterschiedlich ändern. Das Ändern der relativen Helligkeit der Objekte in den unterschiedlichen Aufnahmen beeinflusst das Ergebnis des Zusammensetzens der Bilder.
-
Demgemäß, um die Bilder in ein Format zurückzubringen, in welchem die Werte eine lineare Funktion der Belichtungsdauer sind, kehren einige Ausführungsformen die Gammakorrektur der Luma-(Y')-Komponenten des Bildes um, um Luminanz-(Y)-Bilder zu erzeugen. Einige solcher Ausführungsformen führen Operationen auf den Luminanzbildern aus, wenden dann eine neue Gammakorrektur nach den Operationen an, um ein finales Bild mit einer Luma-(Y')-Komponente zu erzeugen. Die inverse Gammakorrektur wird ausgeführt während des Zusammensetzens in einigen Ausführungsformen. Einige solcher Ausführungsformen erzeugen das zusammengesetzte Bild mithilfe der folgenden Gleichung (7B) anstelle des Verwendens der Gleichung (7A).
-
Gleichung (7B) ist fast dieselbe wie Gleichung (7A), außer dass die Lumawerte Lb[x,y], Ln[x,y] und Lu[x,y] mit der Potenz (1/γ) versehen sind. Und die Lc[x,y]-Werte sind Luminanzwerte anstelle von Lumawerten. In einigen Ausführungsformen stellt die mobile Vorrichtung Lumawerte bereit, die auf Luminanzwerten eines aufgenommen Bildes basieren, das mit der Potenz Gamma (γ) versehen ist (in einigen Ausführungsformen ist Gamma = 1/2,2).
-
Die mobilen Vorrichtungen von einigen Ausführungsformen stellen den Wert von Gamma als Metadaten des bereitgestellten Bildes bereit. In einigen solcher Ausführungsformen wird das bereitgestellte Gamma in der Gleichung (7B) verwendet, um die original Luminanzwerte wieder herzustellen, während die Bilder zusammengesetzt werden. Andere solcher Ausführungsformen führen die inverse Gammakorrektur aus vor dem Zusammensetzen der Bilder und verwenden Gleichung (7A) für Luminanzwerte, die in einer separaten Operation von der Zusammensetzungsoperation erzeugt werden.
-
Ähnlich, während die obigen Gleichungen mithilfe von Masken beschrieben werden, die von Lumabildern erzeugt werden, wird der Fachmann verstehen, dass die Masken von einigen Ausführungsformen von Bildern in anderen Formaten erzeugt werden. Zum Beispiel werden die Masken in einigen Ausführungsformen von Luminanzversionen von einem oder mehreren der Bilder erzeugt anstelle von Lumaversionen. In einigen Ausführungsformen ist der Typ des Bildes, der verwendet wird, um die Masken zu erzeugen (z. B. Luma oder Luminanz), derselbe wie der Typ des Bildes, der verwendet wird, um die Zusammensetzung zu erzeugen. In anderen Ausführungsformen ist der Typ des Bildes, der verwendet wird, die Masken zu erzeugen (z. B. Luma oder Luminanz) unterschiedlich von dem Typ von Bild, das verwendet wird, um die Zusammensetzung zu erzeugen.
-
Um das zusammengesetzte Bild mithilfe der Gleichung (7A) oder (7B) zu erzeugen, wird der Skalierungsfaktor des überbelichteten Bildes (Eb) von dem tatsächlichen Verhältnis von Belichtungszeiten angepasst, in einigen Ausführungsformen. Einige Ausführungsformen verwenden die folgende Gleichung, um den Skalierungsfaktor des überbelichteten Bildes anzupassen, um die Schatten zu verbessern:
-
In Gleichung (8) ist Eb der Skalierungsfaktor des überbelichteten Bildes; En ist der Skalierungsfaktor des normal belichteten Bildes. Er ist das Verhältnis der Belichtungszeit des normal belichteten Bildes zu der Belichtungszeit des überbelichteten Bildes (z. B. 1/4 wenn das überbelichtete Bild eine 4-mal so lange Belichtung hat wie das normal belichtete Bild), Ts ist ein Schwellwertfaktor. In einigen Ausführungsformen wird Ts auf 0,4 gesetzt. N ist der Median-Luma (auf einer Lumaskala von 0 bis 1). Die Median-Luminanz wird für N verwendet anstelle des Median-Lumas in einigen Ausführungsformen.
-
In einigen Ausführungsformen wird, sobald Gleichung (7A) oder (7B) ausgeführt wurde, das errechnete zusammengesetzte Bild zurück abgebildet (z. B. neu skaliert) auf einen bestimmten Bereich (z. B. 0-1 oder 0-255) durch eine Normalisierung.
-
In Gleichung (9A) ist das erste Lc[x,y] das Luma des Pixels bei Koordinaten [x,y] in dem zusammengesetzten Bild 1340 nach der Normalisierung, das zweite Lc[x,y] ist das Luma des Pixels an den Koordinaten [x,y] in dem zusammengesetzten Bild vor der Normalisierung, max(Lc) ist der maximale Lumawert für irgendeinen Pixel in dem zusammengesetzten Bild vor der Normalisierung und Ec ist ein Skalierungsfaktor, der den Bereich spezifiziert. Einige Ausführungsformen normalisieren mit dem höchsten möglichen Pixelwert, welcher 1*Eu ist. Dies wird ausgeführt, um das Ändern der Überhelligkeit des HDR-Bildes verglichen mit EVo zu vermeiden.
-
Einige Ausführungsformen wenden einen anderen Normalisierungsfaktor an als max(Lc). Gleichung (9B) stellt eine alternative Gleichung zum Normalisieren des zusammengesetzten Bildes bereit.
-
In Gleichung (9B) ist das erste Lc[x,y] das Luma des Pixels an den Koordinaten [x,y] in dem zusammengesetzten Bild 1340 nach der Normalisierung, das zweite Lc[x,y] ist der Lumawert des Pixels an den Koordinaten [x,y] in dem zusammengesetzten Bild vor der Normalisierung, En/Eb ist ein Belichtungsskalierungsfaktor für die Belichtung des überbelichteten Bildes (z. B. wenn das überbelichtete Bild 4-mal die Belichtungsdauer der normalen Belichtung hat, dann ist En/Eb=4) und Ec ist ein Skalierungsfaktor, der den Bereich spezifiziert. In einigen Ausführungsformen wird Ec auf 1 gesetzt, in anderen Ausführungsformen wird Ec auf 1,2 gesetzt, in anderen Ausführungsformen wird Ec auf andere Werte gesetzt.
-
In einigen Ausführungsformen enden die Aufnahmeoperationen nach dem Neuskalieren von Gleichungen (9A) oder (9B). In solchen Ausführungsformen beginnen die Bearbeitungsoperationen dann, wenn das Verfahren
1200 eine zusammengesetzte 1350 Version des zusammengesetzten Lumabildes
1340 mit Gaußscher Weichzeichnung erzeugt (bei
1230). Die Gauß-weichgezeichnete Zusammensetzung
1350 wird aus einem Grund erzeugt, der ähnlich ist zu dem Grund des Erzeugens der Gauß-Weichzeichung der individuellen Masken. Die Gauß-weichgezeichnete Zusammensetzung
1350 wird als eine Gewichtung zum Anpassen anderer Bilder in anderen Teilen des Verfahrens
1200 verwendet und die Unschärfe verbessert die Effekte (auf den finalen Bildern) von Pixeln, die sehr unterschiedliche Werte von den sie umgebenden Pixeln haben. Die Gauß-Weichzeichnung wird durch ein ähnliches Verfahren erzeugt, wie das Masken-Unscharfmachen der Gleichungen (5) und (6).
-
In Gleichung (10) repräsentiert G[x,y] die Gauß-weichgezeichnete Zusammensetzung 1350. Lc[x,y] repräsentiert das Luma eines Pixels bei [x,y] des zusammengesetzten Bildes 1340. Der Filter ist eine 2D-Filteroperation mithilfe des Filters k. Das Element k ist ein 2D Gaußscher Filter. In einigen Ausführungsformen wird ein 7×7 oder ein 9×9-Filter verwendet mit einer Pixelvarianz von 3. Derselbe Filter und Kernel werden in einigen Ausführungsformen zum Weichzeichnen der Masken in den Gleichungen (5) und (6) verwendet und dem Weichzeichnen des Gauß-weichgezeichneten Bildes in Gleichung (10), in anderen Ausführungsformen, werden verschiedene Filter und/oder Kernel verwendet.
-
Wie mit den Masken können große Werte von k in großen Halo-Effekten resultieren, aber kleine Werte von k können in einem Kontrastverlust innerhalb eines Bereiches resultieren. Das Weichzeichnen stellt sicher, dass die Gauß-weichgezeichnete Zusammensetzung 1350 gewichtet wird basierend auf der Helligkeit des Bereiches, in dem ein Pixel ist, anstelle des Gewichtens basierend auf der Helligkeit eines individuellen Pixels. In einigen Ausführungsformen verbessert das Gewichten basierend auf dem Bereich den Kontrast innerhalb von Bereichen, die Pixel von mehreren Bereichen (dunkel, mittel und/oder hell) aufweisen.
-
Sobald die Gauß-weichgezeichnete Zusammensetzung 1350 erzeugt wird, erzeugt das Verfahren 1200 (bei 1240) ein Hervorhebungen-abgeschwächtes Bild 1360A und ein schattenverbessertes Bild 1360B. Das schattenverbesserte Bild 1360B beinhaltet einen ausgedehnten Bereich von Lichtniveaus in den dunklen Bereichen des Bildes und einen komprimierten Bereich von Lichtniveaus in den hellen Bereichen. Mit anderen Worten, in den dunklen Bereichen wird der Unterschied zwischen Lumawerten in dem schattenverbesserten Bild vergräö-ßert. Zum Beispiel könnte ein Pixel in dem zusammengesetzten Bild 1340 mit einem Luma von 0,02 in einen Pixel in dem schattenverbesserten Bild von 0,14 umgewandelt werden und ein Pixel in dem zusammengesetzten Bild 1340 mit einem Lumawert von 0,03 könnte in einen Pixel in dem schattenverbesserten Bild von 0,19 umgewandelt werden. In jedem Fall erhöht sich der Betrag der Lumawerte der Pixel, aber wichtiger ist, dass die Differenz der Beträge der Lumawerte sich erhöht. Für Pixel in den helleren Bereichen erhöht sich der Betrag der Lumawerte für die Pixel auch, aber die Differenz zwischen den Beträgen der Lumawerte von zwei Pixeln verringert sich. Mit anderen Worten erhöht die Schattenverbesserung die Helligkeitswerte über den ganzen Bereich hinweg, aber in dem unteren Ende des Bereichs ist die Zunahme zwischen benachbarten Pixeln mehr als am oberen Ende des Bereichs (z. B. die Erhöhung der Helligkeit in dunklen Bereichen ist mehr als die Erhöhung der Helligkeit in hellen Bereichen).
-
Ähnlich erweitert das Hervorhebungen-abgeschwächte Bild 1360A den Bereich der Lumas für die helleren Pixel und zieht den Bereich von Lumas für die dunkleren Pixel des zusammengesetzten Bildes 1340 zusammen. Mit anderen Worten, die Hervorhebungsabschwächung verringert die Helligkeitswerte über den ganzen Bereich hinweg, aber in dem oberen Ende des Bereichs ist die Abnahme zwischen benachbarten Pixeln größer als am unteren Ende des Bereichs (z. B. die Abnahme der Helligkeit der hellen Regionen ist größer als die Abnahme der Helligkeit der dunklen Regionen).
-
In einigen Ausführungsformen wird das schattenverbesserte Bild
1360B durch die folgende Gleichung erzeugt:
-
In Gleichung (11) ist Ls[x,y] der Lumawert des Pixels an den Koordinaten [x,y] in dem schattenverbesserten Bild 1360B. G[x,y] ist der Wert des Pixels an Koordinaten [x,y] in der Gauß-weichgezeichneten Zusammensetzung 1350. Bs ist ein Skalierungsfaktor. Bs ist gleich 0,83 in einigen Ausführungsformen. In anderen Ausführungsformen werden andere Werte verwendet.
-
Das Hervorhebungen-abgeschwächte Bild
1360A wird durch die folgende Gleichung in einigen Ausführungsformen erzeugt:
-
In Gleichung (12) ist Lh[x,y] der Lumawert des Pixels an Koordinaten [x,y] in dem Hervorhebungen-abgeschwächten Bild 1360A. G[x,y] ist der Wert des Pixels an den Koordinaten [x,y] in der Gauß-weichgezeichneten Zusammensetzung 1350. Bs ist ein Skalierungsfaktor. In einigen Ausführungsformen ist Bs gleich 0,7. In anderen Ausführungsformen werden andere Werte für den Skalierungsfaktor verwendet.
-
Das Verfahren
1200 setzt das schattenverbesserte Bild
1360B und das Hervorhebungen-abgeschwächte Bild
1360A zusammen (bei 1250), um ein zusammengesetztes Bild
1370 zu erzeugen. Das zusammengesetzte Bild
1370 einiger Ausführungsformen wird durch die folgende Gleichung erzeugt:
-
In Gleichung (13) ist Lc[x,y] der Lumawert des Pixels an den Koordinaten [x,y] in dem zusammengesetzten Bild
1370. Lh[x,y] ist der Lumawert des Pixels an den Koordinaten [x,y] in dem Hervorhebungen-abgeschwächten Bild
1360A. G[x,y] ist der Wert des Pixels an den Koordinaten [x,y] in der Gauß-weichgezeichneten Zusammensetzung
1350. Ls[x,y] ist der Lumawert des Pixels an den Koordinaten [x,y] in dem schattenverbesserten Bild
1360B. Die Kombination des schattenverbesserten Bildes
1360B und des Hervorhebungen-abgeschwächten Bildes
1360A, wie in Gleichung (13) gewichtet hat den resultierenden Effekt des Hervorhebens von Details in sowohl den hellen, als auch den dunklen Bereichen des Bildes. In einigen Ausführungsformen, als Teil der Zusammensetzung des schattenverbesserten Bildes
1360B und des Hervorhebungen-abgeschwächten Bildes
1360A werden alle Pixel, die einen Luma größer als die Grenze des erlaubten Bereichs aufweisen, auf den Grenzwert des erlaubten Bereichs reduziert (z. B. ein Luma von 1,1 in einem Bereich von 0 bis 1 würde auf einen Luma von 1 reduziert).
Einige Ausführungsformen beenden das Verbessern und Abschwächen von Lumawerten an diesem Punkt und fahren mit Operation
1260 fort. Jedoch, in einigen Ausführungsformen umfasst das Zusammensetzen der Bilder
1360A und
1360B auch das Verbessern der Mitteltonpixel. Einige solcher Ausführungsformen implementieren die folgende Gleichung, um die Mitteltöne zu verbessern:
-
In Gleichung (14) ist das erste Lc[x,y] das Luma des Pixels an den Koordinaten [x,y] in dem zusammengesetzten Bild 1370 nach dem Verbessern der Mitteltonpixel. Das zweite Lc[x,y] ist das Luma der Pixel an den Koordinaten [x,y] in dem zusammengesetzten Bild vor dem Verbessern der Mitteltonpixel. G[x,y] ist der Wert der Pixel an den Koordinaten [x,y] in der Gauß-weichgezeichneten Zusammensetzung 1350. Bm ist ein Skalierungsfaktor, der die Verbesserungskurve bestimmt. Einige Ausführungsformen verwenden andere Gleichungen, um die Mitteltöne zu verbessern. Wie oben beschrieben verbessern einige Ausführungsformen die Mitteltöne nicht.
-
In einigen Ausführungsformen, die ein zusammengesetztes Luminanzbild 1340 erzeugen (z. B. mithilfe von Gleichung (7B)) anstelle eines zusammengesetzten Lumabildes 1340 (z. B. mithilfe von Gleichung (7A)) ist das schattenverbesserte Bild 1360B und Hervorhebungen-abgeschwächte Bild 1360A und das zusammengesetzte Bild 1370 ein Luminanzbild anstelle eines Lumabildes. D.h., die Bilder 1360A und 1360B und 1370 sind alles Luminanzbilder, weil sie (direkt oder indirekt) von einem Luminanzbild 1340 erzeugt werden anstelle von einem Lumabild 1340. In einigen Ausführungsformen wird das Luminanzbild 1370 in ein Lumabild 1370 umgewandelt durch eine Gammakorrektur (z. B. durch Erhöhen der Luminanzwerte von dem Bild 1370 mit der Potenz von Gamma). Die mobile Vorrichtung von einigen Ausführungsformen stellt den Gammawert bereit, der verwendet wird, das Luminanzbild 1370 in das Lumabild 1370 umzuwandeln. Der Gammawert ist 1/2,2 in einigen Ausführungsformen.
-
Die verschiedenen Zusammensetzungsverfahren können zu Bildern mit Lumawerten führen, die sich in einem kleinen Bereich des verfügbaren Bereiches von Werten häufen. Zum Beispiel kann das Bild Pixel aufweisen, die fast alle dunkler als 50 % der verfügbaren Skala sind oder Pixel haben, die fast alle heller als 50 % der verfügbaren Skala sind. Um den Bereich von Lumawerten in dem Bild zu vergrößern, um die verfügbare Skala auszunutzen, wendet das Verfahren
1200 von einigen Ausführungsformen (bei
1260) ein Histogrammstrecken auf die Lumaversion des zusammengesetzten Bildes
1370 an, um es auf die ungefähre Lumaverteilung des original normal belichteten Lumabildes
1320B zurückzuführen. Das Histogrammstrecken erzeugt ein Histogramm der Lumas des zusammengesetzten Bildes
1370 und bestimmt den Lumabereich zwischen dem 0,5-te Perzentil und dem 99,5-te Perzentil für Bild
1370. Das Verfahren trifft dann dieselben Bestimmungen für die Pixel des normal belichteten Lumabildes
1320B. Das Verfahren wendet die folgende Gleichung auf die Pixel des zusammengesetzten Bildes
1370 an:
-
In Gleichung (15) ist Lf[x,y] das Luma der Pixel an den Koordinaten [x,y] in dem finalen zusammengesetzten Bild 1380. Das Lc[x,y] ist der Luma des Pixels an den Koordinaten [x,y] in dem zusammengesetzten Bild 1370. L1 ist ein Lumawert, der dunkler als 99,5 % der Pixel in dem zusammengesetzten Bild 1370 ist. H1 ist ein Lumawert, der heller als 99,5 % der Pixel in dem zusammengesetzten Bild 1370 ist. L2 ist ein Lumawert, der dunkler als 99,5 % der Pixel in dem normal belichteten Lumabild 1320B ist. H2 ist ein Lumawert, der heller als 99,5 % der Pixel in dem normal belichteten Lumabild 1320B ist. In einigen Ausführungsformen können die Perzentile unterschiedlich sein. Das Histogrammstrecken gibt dem Bild denselben gesamten Lichtbereich wie das normal belichtete Lumabild 1320B. Der Grund für den Perzentilabschnitt ist es, zu vermeiden, dass irgendwelche Pixel mit weitabliegenden Lumas ein Bild mit einem zu zusammengedrückten oder zu breiten Bereich erzeugen, verglichen mit dem original normal belichteten Lumabild 1320B. Einige Ausführungsformen ändern dann die Lumawerte der Pixel mit Lumawerten oberhalb der Grenze des verfügbaren Bereichs zu dem oberen Grenzwert des Bereichs. Einige Ausführungsformen ändern die Lumawerte der Pixel mit Lumawerten unterhalb der Grenze des verfügbaren Bereichs zu dem unteren Grenzwert des Bereichs.
-
Einige Ausführungsformen verbreitern die Lumawerte auf einen beliebigen Bereich (z. B. den gesamten verfügbaren Bereich), um den gesamten Bereich der verfügbaren Lumas vorteilhaft auszunutzen. Zum Beispiel verbreitern einige Ausführungsformen das Luma des gesamten Bereiches, wenn das originale normal belichtete Lumabild 1320B einen engen Bereich von Lumas hat. Nach dem Histogrammstrecken endet der Prozess 1200.
-
Die obige Beschreibung des Histogrammstreckens beschreibt Ausführungsformen, die das Histogramm auf ein Luma-zusammengesetztes Bild 1370 anwenden. Jedoch wird in einigen Ausführungsformen das Histogrammstrecken auf das Luminanz-zusammengesetzte Bild 1370 angewandt und die Gammakorrektur wird auf eine Luminanzversion des finalen zusammengesetzten Bildes 1380 angewandt, um eine Lumaversion des zusammengesetzten Bildes 1380 zu erzeugen.
-
Zusammensetzung von Chromakanalbildern
-
Bilder in einem Luma-, Blauchroma-, Rotchroma- (Y'CbCr-) Format oder Luminanz, Blauchroma-, Rotchroma- (YCbCr-) Format haben Chrominanzkomponenten (Cb und Cr), die Farbinformationen enthalten. Das Verfahren 1200 setzt die Luma- (oder Luminanz-) Komponenten der Bilder in diesen Formaten zusammen, aber andere Ausführungsformen setzen die Chrominanzkanalbilder der Bilder 1310A-1310C separat von dem Zusammensetzen der Lumakomponenten zusammen. In einigen Ausführungsformen werden dieselben Masken, die beim Zusammensetzen der Lumabilder verwendet werden, verwendet beim Zusammensetzen der Chrominanzbilder. 14 stellt das Verfahren 1400 einiger Ausführungsformen zum Zusammensetzen von Chromakanalbildern dar. 14 wird beschrieben mit Bezug auf 15. 15 zeigt ein Beispiel des Zusammensetzens von Chromakanalbildern in einigen Ausführungsformen. 15 beinhaltet unterbelichtete Chromakanalbilder 1520A, normalbelichtete Chromakanalbilder 1520B, überbelichtete Chromakanalbilder 1520C, zusammengesetzte Chromakanalbilder 1530C, und importierte Daten 1540 von dem Lumazusammensetzen. Die unterbelichteten Chromakanalbilder 1520A enthalten Chromawerte (z.B. Cr und Cb) von dem Bild 1310A. Normal belichtete Chromakanalbilder 1520B enthalten Chromawerte (z.B. Cr und Cb) von dem Bild 1310B. Überbelichtete Chromakanalbilder 1520C enthalten Chromawerte (z.B. Cr und Cb) von dem Bild 1310C. In einigen Ausführungsformen werden dieselben Operationen auf jedem Satz von Chromakanalbildern (Cb und Cr) ausgeführt. Das zusammengesetzte Chromabild 1530 von einigen Ausführungsformen umfasst auch zwei Kanäle von Chromadaten. Der Fachmann wird verstehen, dass in einigen solcher Ausführungsformen der Zusammensetzungsprozess separat auf jedem Chromakanal ausgeführt wird. Jedoch bezieht sich aus Gründen der Klarheit die Beschreibung des Chromazusammensetzungsprozesses unten manchmal auf „Pixel des zusammengesetzten Bildes“ anstelle von „Pixel eines Kanals des zusammengesetzten Bildes“.
-
Das Verfahren 1400 beginnt mit dem Empfangen (bei 1410) von überbelichteten, unterbelichteten und normalbelichteten Masken (z.B. die Masken, die während des Lumazusammensetzungsprozesses 1200 erzeugt wurden). In 15 enthalten die importierten Daten 1540 diese Masken. In einigen Ausführungsformen werden diese Masken separat für das Verfahren 1400 erzeugt, statt Kopien der Masken in den Lumazusammensetzungsverfahren zu sein. Unterschiedliche Masken werden für die Chromazusammensetzung verwendet, statt für die Lumazusammensetzung in einigen Ausführungsformen. Z.B. werden die Masken für die Chromazusammensetzung von dem finalen Lumazusammensetzungsbild erzeugt. Einige Ausführungsformen erzeugen einen Satz von Masken von dem normalbelichteten Lumabild, und einen anderen Satz von Masken von den individuellen Lumabildern, und verwenden jeden Satz zum Zusammensetzen eines unterschiedlichen Typs von Bildkomponente (z.B. einen für Luma und den anderen für Chroma).
-
Nachdem die Masken empfangen (oder erzeugt) wurden, erzeugt das Verfahren
1400 (bei
1420) einen Chromakanal eines zusammengesetzten Bildes von den Masken (z.B. Masken
1330A-1330C) und einen Kanal (d.h. entweder den Cb oder Cr) der Chromabilder
1520A-1520C. In einigen Ausführungsformen wird der Kanal der Chromabilder
1520A-1520C mithilfe der folgenden Gleichung zusammengesetzt:
-
In Gleichung (16) ist Cc[x,y] der Chromawert des Pixels an den Koordinaten [x,y] in dem zusammengesetzten Chromakanalbild 1530 (von 15). Cb[x,y] ist der Chromawert des Pixels an den Koordinaten [x,y] in dem überbelichteten (hellen) Chromakanalbild 1520C. Cn[x,y] und Cu[x,y] sind die Chromawerte für das normale Chromakanalbild 1520B bzw. unterbelichtete Chromakanalbild 1520A. Eb ist ein Belichtungsskalierungsfaktor für die Belichtung des überbelichteten Chromakanalbildes 1520C. En und Eu sind die Belichtungsskalierungsfaktoren für das normale Chromakanalbild 1520B bzw. unterbelichtete Chromakanalbild 1520A. Mb[x,y] repräsentiert den Wert der Überbelichtungsmaske 1330C bei Koordinaten [x,y]. Mn[x,y] und Mu[x,y] repräsentieren die Werte für die Normalbelichtungsmaske 1330B bzw. Unterbelichtungsmaske 1330A. Der Wert eines Pixels in der Maske 1330C bestimmt, wie viel Wirkung der entsprechende Pixel in dem überbelichteten Chromakanalbild 1520C auf das zusammengesetzte Chroma hat. Der Wert eines Pixels in der Maske 1330B bestimmt, wie viel Wirkung der entsprechende Pixel in dem normalen Chromakanalbild 1520B auf das zusammengesetzte Chroma hat. Der Wert eines Pixels in der Maske 1330A bestimmt, wie viel Wirkung der entsprechende Pixel in dem unterbelichteten Chromakanalbild 1520A auf das zusammengesetzte Chroma hat. In jeder Maske 1330A-1330C bedeuten höhere Werte mehr Wirkung. Durch das Verwenden derselben Masken wie für die Lumabilder stellt die Chromaanpassung sicher, dass die Farbdaten von jedem Pixel in den Chromakanalbildern 1520A-1520C die entsprechenden Lumadaten für jeden Pixel in den Lumabildern übereinstimmen werden. Z.B. ein bestimmter Pixel, der 62% seines Lumawertes von dem entsprechenden Pixel in dem überbelichteten Lumabild 1320C erhält, wird auch 62% seines Chromawertes von dem entsprechenden Pixel der überbelichteten Chromakanalbilder 1520C erhalten.
-
Das Verfahren 1400 empfängt (bei 1430) eine Gauß-weichgezeichnete Maske. In einigen Ausführungsformen ist dies eine Kopie derselben Gauß-weichgezeichneten Zusammensetzung 1350, die von dem Lumazusammensetzungsbild 1340 erzeugt wurde. Der Fachmann wird verstehen, dass die Gauß-weichgezeichnete Zusammensetzung 1350 auch an einem früheren oder späteren Punkt in Verfahren 1400 empfangen werden kann. Das Verfahren 1400 empfängt (bei 1440) einen Histogrammstreckwert (z.B. (H2-L2)/(H1-L1), wie in Gleichung (15) gesehen). Dieser Wert wird unabhängig in einigen Ausführungsformen während des Verfahrens 1400 berechnet, anstelle während des Verfahrens 1200 gespeichert zu werden, und während des Verfahrens 1400 empfangen zu werden.
-
Das Verfahren
1400 verwendet die Gauß-weichgezeichnete Zusammensetzung
1350 und den Histogrammstreckwert, um das zusammengesetzte Chroma anzupassen (bei
1450). Diese Anpassung beinhaltet auch das Multiplizieren des zusammengesetzten Chromabildes mit einem Sättigungsfaktor in einigen Ausführungsformen. Einige Ausführungsformen stellen einen vorprogrammierten Sättigungsfaktor bereit. Ein Benutzer-anpassbarer Sättigungsfaktor wird zusätzlich zu dem oder anstelle des vorprogrammierten Sättigungsfaktors in einigen Ausführungsformen bereitgestellt. In weiter anderen Ausführungsformen wird die Chromabildanpassung bestimmt durch Gleichungen (17)-(19):
-
Der Sättigungsfaktor F[x,y] in Gleichung (17) wird in einigen Ausführungsformen verwendet, um das Chroma eines Pixels bei den Koordinaten [x,y], wie in Gleichung (19) gezeigt, anzupassen. L1 ist ein Lumawert, der dunkler als 99,5% der Pixel in dem zusammengesetzten Bild 1370 (von 13A oder 13B) ist. H1 ist ein Lumawert, der heller als 99,5% der Pixel in dem zusammengesetzten Bild 1370 ist. L2 ist ein Lumawert, der dunkler als 99,5% der Pixel in dem normalbelichteten Lumabild 1320B ist. H2 ist ein Lumawert, der heller als 99,5% der Pixel in dem normalbelichteten Lumabild 1320B ist. X ist ein Sättigungsfaktor (z.B. 1,2), der in verschiedenen Ausführungsformen unterschiedlich ist und verändert werden kann (z.B. durch den Benutzer der mobilen Vorrichtung) in einigen Ausführungsformen. In einigen Ausführungsformen können die Perzentile, die verwendet werden, den Histogrammstreckungsfaktor zu berechnen, unterschiedlich von denen sein, die oben gezeigt sind. G[x,y] ist der Wert des Pixels an den Koordinaten [x,y] in der Gauß-weichgezeichneten Zusammensetzung 1350. Der Faktor G*(1-G) wird maximiert für G=0,5 und minimiert, wenn G=1 oder G=0. Demgemäß verbessert die Verwendung der Gauß-weichgezeichneten Zusammensetzung 1350 auf diese Weise die Chromawerte von jenen Teilen des Bildes, die Mitteltonlumas haben, mehr als die Chromawerte von jenen Teilen des Bildes, die helle oder dunkle Pixel haben. Das Verbessern der Farben der Mitteltonpixel stellt ein anderes Endbild bereit als das gleichmäßige Verbessern der Farben.
-
In einigen Ausführungsformen wird das zusammengesetzte Chroma normalisiert (bei 1460) durch das Teilen der Chromawerte durch einen Normalisierungsfaktor, der mithilfe der folgenden Gleichung erzeugt wird:
-
Der Normalisierungsfaktor N[x,y] in Gleichung (18) wird in manchen Ausführungsformen verwendet, um das Chroma eines Pixels bei Koordinaten [x,y] anzupassen, wie in Gleichung (19) gezeigt. Eb ist ein Belichtungsskalierungsfaktor für das überbelichtete Chromakanalbild 1520C. En und Eu sind die Belichtungsskalierungsfaktoren für das normale Chromakanalbild 1520B bzw. das unterbelichtete Chromakanalbild 1520A. Mb[x,y] repräsentiert den Wert für eine Überbelichtungsmaske 1330C bei den Koordinaten [x,y]. Mn[x,y] und Mu[x,y] repräsentieren die Werte der Normalbelichtungsmaske 1330B bzw. Unterbelichtungsmaske 1330A.
-
Demgemäß wird in einigen Ausführungsformen das finale zusammengesetzte Chromakanalbild
1530 durch die folgende Gleichung bestimmt:
-
In Gleichung (19) ist Cf[x,y] der Chromawert des Pixels bei Koordinaten [x,y] in dem zusammengesetzten Chromakanalbild 1530 (nach der Sättigung). N[x,y] ist ein Normalisierungsfaktor (z.B. der Normalisierungsfaktor von Gleichung (18)), der verwendet wird, um die Chromawerte des zusammengesetzten Chromabildes zu teilen. Cc[x,y] ist der Chromawert des Pixels bei Koordinaten [x,y] in dem zusammengesetzten Chromakanalbild 1530. F[x,y] ist ein Sättigungsfaktor (z.B. der Sättigungsfaktor von Gleichung (17)), der verwendet wird, um das Chroma eines Pixels bei Koordinaten [x,y] zu multiplizieren. In Ausführungsformen, die diese Anpassungen machen, erzeugen die Anpassungen das finale zusammengesetzte Chromakanalbild 1530. Der Fachmann wird verstehen, dass einige Ausführungsformen, die die Gleichung (19) verwenden, F[x,y] oder N[x,y] mithilfe von Gleichungen berechnen, die von Gleichungen (17) und (18) abweichen.
-
Das Verfahren 1400 bestimmt dann (bei 1470), ob es ein anderes Chromakanalbild zum Zusammensetzen gibt. Wenn es ein anderes Chromakanalbild zum Zusammensetzen gibt (z.B., wenn das Verfahren 1400 das Zusammensetzen des Cb-Chromabildes beendet hat, aber nicht des Cr-Chromabildes, dann wird es das Cr-Chromabild anpassen), kehrt das Verfahren 1400 zu Operation 1420 zurück, um die Masken auf die neuen Chromakanalbilder anzuwenden. In einigen Ausführungsformen werden die einzelnen Operationen der Reihe nach auf jedes Chromakanalbild angewandt, anstelle des Ausführens der Operationen 1420-1460 auf einem Chromakanalbild und dann des Ausführens von 1420-1460 auf dem anderen Chromakanalbild. Das Verfahren 1400 wird auf allen Chromakanälen in einigen Ausführungsformen ausgeführt.
-
Während die Chroma-bezogenen Gleichungen oben das Zusammensetzen von Chromakomponenten von Bildern beschreiben, die dieselbe Auflösung wie die entsprechenden Luma-(oder Luminanz-) Komponenten der Bilder haben, wird der Fachmann verstehen, dass in einigen Ausführungsformen die Chromakomponenten der Bilder eine andere Auflösung als die Luma- (oder Luminanz-) Komponenten der Bilder haben. In einigen solcher Ausführungsformen werden die Masken angepasst, um den Unterschieden in der Auflösung Rechnung zu tragen. Z.B. verwenden einige Ausführungsformen ein 4:2:2-Format, wobei jeder Pixel in der Chromakomponente des Bildes zwei horizontal angrenzenden Pixel in der Luma-/Luminanzkomponente des Bildes entspricht. Weil die Masken von solchen Ausführungsformen dieselbe Auflösung wie die Luma-/Luminanzkomponenten des Bildes haben, entspricht jedes Pixel in einer Chromakomponente des Bildes zwei horizontal angrenzenden Pixel in der entsprechenden Maske. In einigen solcher Ausführungsformen wird der Wert eines Chromapixels eines Bildes durch den Mittelwert des entsprechenden Paares von horizontal angrenzenden Pixeln in der entsprechenden Maske gewichtet. In anderen solcher Ausführungsformen wird der Wert eines Chromapixels durch den Wert des einen oder des anderen des entsprechenden Paares von horizontal angrenzenden Pixeln in der Maske gewichtet (z.B. der Wert des am weitesten linken Pixels des Paares). Auf ähnliche Weise verwenden einige Ausführungsformen ein 4:2:0-Format, in welchem jeder Chromapixel einem zwei-malzwei-Quadrat von Pixeln in der Luma-/Luminanzkomponente (und in den Masken) entspricht. In einigen solcher Ausführungsformen wird der Wert eines Chromapixels mit dem Mittelwert der entsprechenden vier Pixel in der Maske gewichtet. In anderen solcher Ausführungsformen wird der Wert eines Chromapixels durch den Wert von einem der vier entsprechenden Pixel in der Maske gewichtet (z.B. der Wert des Pixels oben links der vier Pixel). Alternativ wird die Zusammensetzung der Chromakomponenten mit der Auflösung der Maske erzeugt, was eine zusammengesetzte Chromakomponente mit derselben Auflösung, wie die zusammengesetzte Luma-/Luminanzkomponente. In einigen solcher Ausführungsformen wird die zusammengesetzte Chromakomponente zurück auf die Auflösung der Originalchromakomponente gewandelt, an irgendeiner Stelle.
Das Zusammensetzungsmodul von einigen Ausführungsformen führt das finale Lumabild 1380 (von 13A oder 13B) und jeden Kanal des finalen zusammengesetzten Chromakanalbildes 1530 (von 15) zusammen, um ein finales HDR-Bild zu erzeugen. Alternativ konvertiert das Zusammensetzungsmodul in einigen Ausführungsformen das finale Lumabild 1380 und das finale zusammengesetzte Chromakanalbild 1530 in ein RGB-Format (z.B. sRGB), um ein finales HDR-Bild zu erzeugen.
-
Anpassen für Belichtungsbedingungen
-
Die mobilen Vorrichtungen einiger Ausführungsformen passen automatisch die Belichtungszeit der normal belichteten Bilder an, um den lokalen Beleuchtungsbedingungen zu der Zeit, als die mobile Vorrichtung Bilder aufgenommen hat, Rechnung zu tragen. In einigen Ausführungsformen ist die Belichtungsdauer die Zeit zwischen den Auffrischungen des CMOS-Sensors der Kamera. Die mobile Vorrichtung gleicht niedrigere Beleuchtungsbedingungen aus durch das Erhöhen der Beleuchtungsdauer der normalen Belichtungsdauer. In einigen solcher Ausführungsformen hat die mobile Vorrichtung auch eine obere Grenze der Dauer einer Belichtung. Die Belichtungsdauer für das überbelichtete Bild ist in einigen Ausführungsformen ein Vielfaches der normalen Belichtungsdauer (z.B. viermal die normale Belichtungsdauer). In Wenig-Licht-Bedingungen kann die erhöhte Dauer der normalen Belichtung und der Standardmultiplizierer für die Belichtungsdauer des überbelichteten Bildes in einer Belichtungszeit für das überbelichtete Bild resultieren, die länger als die obere Grenze ist, die durch die mobile Vorrichtung erlaubt wird. Um sich an diese Bedingungen anzupassen, verwenden manche Ausführungsformen einen Belichtungsmultiplizierer für das überbelichtete Bild, der unterhalb des Standardwertes ist (z.B. einen Multiplizierer von 2 anstelle eines Standardmultiplizierers von 4). Die Zusammensetzungsprozesse von einigen Ausführungsformen erhöhen den Skalierungsfaktor Eb entsprechend.
-
In einigen Fällen ist das Licht so dunkel, dass die normale Belichtungsdauer auf oder nahe der oberen Grenze der erlaubten Belichtungszeiten ist. In solchen Fällen wird die Überbelichtungsdauer gezwungen, nicht länger als dieselbe Länge (oder fast dieselbe Länge) zu sein wie die normale Belichtungsdauer. Die mobile Vorrichtung einiger Ausführungsformen nimmt das überbelichtete Bild mit demselben Betrag an Zeit (oder fast demselben Betrag an Zeit) auf wie das normal belichtete Bild und führt die Zusammensetzung trotzdem aus. Der Fachmann wird verstehen, dass in Fällen, in denen das normal belichtete Bild und das überbelichtete Bild mit derselben Belichtungsdauer aufgenommen werden, die Bilder als zwei normal belichtete Bilder bezeichnet werden könnten, anstelle eines normal belichteten Bildes und eines überbelichteten Bildes.
In Fällen, in denen die normale Belichtungsdauer die maximal erlaubte Belichtung der mobilen Vorrichtung ist, setzen einige Ausführungsformen zwei normal belichtete Bilder, die mit derselben Belichtungsdauer aufgenommen sind zusammen, um Rauschniveaus in dem finalen Bild zu reduzieren. In Fällen, in denen die normale Belichtungsdauer in der Nähe der maximal erlaubten Dauer der mobilen Vorrichtung ist, ist das überbelichtete Bild mit einer Belichtungsdauer aufgenommen, welche nur leicht länger als die Belichtungsdauer des normal belichteten Bildes ist. Aufgrund des geringen Verhältnisses der Belichtungsdauern erhöht das überbelichtete Bild in solchen Fällen den dynamischen Bereich nicht so sehr, wie es dies normalerweise tun würde. Jedoch setzen einige Ausführungsformen das überbelichtete Bild und das normal belichtete Bild wegen der kleinen Erhöhung des dynamischen Bereiches und/oder, um Rauschniveaus in dem finalen Bild zu verringern, zusammen.
-
In Ausführungsformen, die die Belichtungsdauer begrenzen, wird der Skalierungsfaktor Eb erhöht, in Übereinstimmung mit dem geänderten Verhältnis der Belichtungszeiten, wenn die Überbelichtungsdauer begrenzt ist. In einigen der gleichen oder anderen Ausführungsformen verwendet die mobile Vorrichtung ein Blitzlicht beim Aufnehmen des überbelichteten Bildes und verwendet den Blitz nicht beim Aufnehmen des normal belichteten Bildes, um das Fehlen einer längeren Belichtungsdauer für das überbelichtete Bild zu kompensieren. In einigen Ausführungsformen wird der Blitz verwendet, wenn die normale Belichtungsdauer innerhalb eines speziellen Schwellwertes der maximalen Belichtungsdauer liegt. Z.B. wird in einigen Ausführungsformen das Blitzlicht verwendet, wenn die normale Belichtungsdauer mehr als 50% der maximalen Belichtungsdauer ist. In anderen Ausführungsformen werden andere Prozentsätze als Schwellwert verwendet. In einigen Ausführungsformen, wenn die normale Belichtungsdauer oberhalb des Schwellwertes ist, wird die Überbelichtungsdauer auf die maximale Belichtungsdauer gesetzt (z.B. ein niedrigerer Multiplizierer der normalen Belichtungsdauer, als er in helleren Beleuchtungsbedingungen verwendet würde) und das Blitzlicht wird für die Überbelichtungsdauer verwendet, aber nicht für die normale Dauer oder die Unterbelichtungsdauer. In einigen Ausführungsformen, in Fällen, in denen das Blitzlicht verwendet wird, nimmt die mobile Vorrichtung die überbelichteten und normal belichteten Bilder auf und fügt diese zusammen, aber nimmt kein unterbelichtetes Bild auf und/oder setzt kein unterbelichtetes Bild mit den anderen zwei Bildern zusammen.
-
Die mobilen Vorrichtungen einiger Ausführungsformen haben eine niedrigere Grenze für die Länge einer Belichtung. In solchen Ausführungsformen kann, in hellen Beleuchtungsbedingungen, der Standardmultiplizierer für die Belichtungsdauer des unterbelichteten Bildes in einer Belichtungsdauer resultieren, die kürzer als die untere Grenze ist, die die mobile Vorrichtung erlaubt. In einigen solcher Ausführungsformen verwendet das unterbelichtete Bild einen Belichtungsmultiplizierer, der höher ist als er ansonsten wäre (z.B. einen Belichtungsmultiplizierer von ½ anstelle eines Standard-Belichtungsmultiplizierers von ¼). In manchen Fällen ist das Licht so hell, dass die normale Belichtungszeit an der unteren Grenze der erlaubten Belichtungszeiten ist. In solchen Fällen wird die Unterbelichtung für denselben Betrag an Zeit aufgenommen wie das normal belichtete Bild (was in zwei normal belichteten Bildern resultiert) und beim Zusammensetzen verwendet, um Rauschniveaus in dem finalen Bild zu verringern. In einigen solcher Ausführungsformen ist der Skalierungsfaktor Eu verringert, in Übereinstimmung mit dem geänderten Verhältnis von Belichtungsdauern.
-
Während die Beschreibung von vielen der hierin beschriebenen Ausführungsformen sich auf das Aufnehmen und Zusammensetzen von drei Bildern (z.B. eines unterbelichteten Bildes, eines normal belichteten Bildes und eines überbelichteten Bildes) bezieht, wird der Fachmann verstehen, dass in anderen Ausführungsformen andere Anzahlen von Bildern aufgenommen und/oder zusammengesetzt werden können. Z.B. setzen einige Ausführungsformen zwei Bilder (z.B. ein unterbelichtetes Bild und ein normal belichtetes Bild) anstelle von drei Bildern zusammen.
-
Weiterhin nehmen einige Ausführungsformen andere Anzahlen von Bildern auf, abhängig von den Beleuchtungsbedingungen. Z.B. setzen einige solcher Ausführungsformen drei Bilder zusammen, wenn die mobile Vorrichtung Bilder einer Szene mit sowohl dunklen Bereichen als auch hellen Bereichen aufnimmt, und setzt zwei Bilder zusammen, wenn die mobile Vorrichtung Bilder mit wenigen oder keinen dunklen Bereichen oder wenigen oder keinen hellen Bereichen aufnimmt. Wenn eine Szene wenige oder keine dunklen Bereiche aufweist, setzen einige dieser Ausführungsformen ein normal belichtetes und ein unterbelichtetes Bild zusammen. Wenn eine Szene wenige oder keine hellen Bereiche hat, setzen einige solcher Ausführungsformen ein normal belichtetes und ein unterbelichtetes Bild zusammen. Einige solcher Ausführungsformen verwenden ein Histogramm von einem oder mehreren Bildern (z.B. ein Vorschaubild), um zu bestimmen, ob eine Szene wenige oder keine hellen Bereiche aufweist oder wenige oder keine dunklen Bereiche aufweist. Einige Ausführungsformen, die zwei Bilder zusammensetzen, wenn entweder helle oder dunkle Bereiche klein sind oder fehlen, verwenden weiterhin drei Bilder, wenn sowohl helle als auch dunkle Bereiche klein sind oder fehlen (z.B. eine Szene, die hauptsächlich Mitteltöne aufweist). Alternativ, anstelle des Ausschließens von Typen von Bildern, basierend auf Qualitäten der individuellen Bereiche einer Szene, die aufzunehmen ist, schließen einige Ausführungsformen das überbelichtete Bild aus, beim Aufnehmen von Szenen, die über einem bestimmten Gesamtlichtniveau sind, und einige Ausführungsformen schließen das unterbelichtete Bild aus beim Aufnehmen von Szenen, die unterhalb eines bestimmten Gesamtlichtniveaus sind.
-
Während die obigen Beschreibungen den Begriff „Bild“ oder „Bilder“ für viele Sätze von Daten (z.B. ein Gauß-weichgezeichnetes Bild, schattenverbessertes Bild, überbelichtetes Bild, usw.) einschließen, wird der Fachmann verstehen, dass in einigen Ausführungsformen die Daten in diesen „Bildern“ nicht in einer visuellen Form bei der normalen Ausführung der Ausführungsform angezeigt werden. In solchen Ausführungsformen werden die Daten in den „Bildern“ verwendet, um andere Daten zu manipulieren und anzupassen, die schließlich in visueller Form angezeigt werden. Einige Ausführungsformen zeigen nur das finale Produkt, das HDR-Bild, an. Weiterhin zeigen andere Ausführungsformen eines oder mehrere der anderen Bilder, sowie das finale HDR-Bild an.
-
Die Ausführungsformen, die ein Blitzlicht-belichtetes Bild mit einem oder mehreren Nicht-Blitzlicht-belichteten Bildern kombinieren, ermöglichen es dem HDR-Bildaufnahmemodus der Vorrichtung, gemeinsam mit dem Blitzlichtmodus der Vorrichtung zu operieren. Andere Ausführungsformen jedoch ermöglichen der Vorrichtung, nur entweder im Blitzlichtmodus oder dem HDR-Modus zu operieren. Demgemäß, wenn der automatische Blitzlichtmodus aktiviert ist, deaktivieren diese Ausführungsformen den HDR-Bildaufnahmemodus.
-
Bildformate
-
Viele der oben beschriebenen Ausführungsformen werden mittels einem oder mehrerer Bildformate beschrieben. Der Fachmann wird verstehen, dass verschiedene Ausführungsformen Bilder in verschiedenen Formaten bereitstellen und manipulieren. In einigen Ausführungsformen werden Farbbilder als drei Informationskanäle bereitgestellt, sowie als ein Lumakanal und zwei Chromakanäle. Ein Farbformat, das in diesem Typ von Information verwendet wird, ist das Y'CbCr- (Luma-, Blauchroma-, und Rotchroma-) Farbformat. Die Kamerafunktion der mobilen Vorrichtung von einigen Ausführungsformen stellt automatisch die Bilder in einem Y'CbCr-Format bereit. Lichtsensoren (z.B. eine ladungsgekoppelte Vorrichtung) der mobilen Vorrichtung misst die Intensität des Lichts, das jeden Sensor erreicht, und erzeugt einen Luminanzwert (Y) proportional zu der Intensität. Die mobile Vorrichtung erzeugt die Y'-Komponente des Bildes durch Aufnehmen von Luminanzdaten, die von Lichtsensoren der Kamera empfangen werden, und durch Anwenden einer Gammakorrektur auf die Luminanzdaten (z.B. mathematisches Erhöhen des Luminanzwertes durch eine Potenz wie 1/2,2). In dem Y'CbCr-Format trägt der Luma- (Y'-) Kanal die Helligkeitsinformation des Bildes; der Cb- (manchmal in anderen Referenzen als CB-) Kanal trägt die Information, um wie viel die Blauwerte des Bildes von dem Luma- (Y'-) Wert abweichen; und der Cr- (manchmal in anderen Referenzen als CR-) Kanal trägt die Information, um wie viel die Rotwerte des Bildes von dem Luma- (Y'-) Wert abweichen. Tatsächlich stellt der Lumakanal (Y') ein Schwarz-und-Weiß- (und Grau-) Bild bereit und die Chromakanäle (Cb und Cr) fügen Farbe zu dem Bild hinzu. In einigen Ausführungsformen kann die Skala der Y'CbCr-Werte willkürlich geändert werden. Für die hierin beschriebenen Berechnungen ist das Luma (Y') auf ein Maximum von 1 und ein Minimum von 0 skaliert für die Berechnungen und die Chroma (Cb und Cr) sind von -0,5 bis 0,5 skaliert. Jedoch sind andere Skalen innerhalb des Bereiches einiger Ausführungsformen möglich. Z.B. wird das Luma (Y') von o bis 255 in einigen Ausführungsformen skaliert. Andere Ausführungsformen skalieren Luma von 16 bis 235 und skalieren Chroma von 16 bis 240. Andere Farbformate, wie YUV, usw., werden in einigen Ausführungsformen verwendet.
-
Einige mobile Vorrichtungen nehmen Bilder in dem YCbCr-Farbformat direkt auf und wandeln die Bilder in RGB-Bilder (z.B. Standard-RGB) oder in Y'CbCr-Bilder um. In einigen Ausführungsformen werden die oben beschriebenen Operationen auf den Bildern wie im Y'CbCr-Format aufgenommen ausgeführt (mit jedem notwendigen Umskalieren von der Skala der mobilen Vorrichtung). In anderen Ausführungsformen werden die Operationen auf Bildern ausgeführt, die ursprünglich in einem RGB-Format empfangen wurden und in Y'CbCr umgewandelt wurden. Die Operationen und mathematischen Gleichungen unten nehmen ein Y'CbCr-Farbformat an, jedoch verwenden andere Ausführungsformen andere Formate (z.B. YUV, usw.). In einigen Ausführungsformen mit anderen Farbformaten werden die Operationen und Gleichungen entsprechend angepasst. Ähnlich verwenden einige Ausführungsformen Luminanzwerte anstelle von Lumawerten beim Erzeugen der dezimierten Bilder und der Bitmaps, die verwendet werden, um die Bilder wie oben beschrieben auszurichten.
-
Während die Verfahren und Gleichungen, die oben beschrieben sind, mittels spezifischer Bildformate beschrieben sind, wird der Fachmann verstehen, dass die Verfahren und Gleichungen auf anderen Bildformaten in einigen Ausführungsformen verwendet werden können. Z.B. bezieht sich die obige Beschreibung an einigen Stellen auf Lumadaten und an anderen Stellen auf Luminanzdaten. Jedoch, wenn nicht anders spezifiziert, werden die Gleichungen und Verfahren, die hierin als angewandt auf Lumawerte in einigen Ausführungsformen beschrieben sind, auf Luminanzwerte in anderen Ausführungsformen angewandt und umgekehrt. Der Fachmann wird verstehen, dass Luma und Luminanz nur zwei Beispiele von Formaten für Bildintensitätsdaten sind, und dass die beschriebenen Prozesse und Gleichungen, die hierin beschrieben sind, in Bezug auf Luminanz und Luma in einigen Ausführungsformen auf andere Formate angewendet werden können, die Intensitätsinformation speichern. Z.B. führen einige Ausführungsformen die oben beschriebenen Operationen auf den roten, blauen, und grünen Komponenten der Bilder in einem RGB-Format aus, einem sRGB-Format, einem R'G'B'-Format (d.h. einem Gamma-korrigierten RGB-Format), oder anderen Formaten, die keine Intensitätsdaten und Farbdaten als separate Komponenten bereitstellen. Einige Ausführungsformen, die solche Operationen auf roten, blauen, und grünen Komponenten ausführen, wandeln zwischen Gamma-korrigierten und nicht-Gamma-korrigierten Formaten hin und her mithilfe derselben Operationen wie oben beschrieben oder ähnlichen Operationen.
-
Auf ähnliche Weise können die Gleichungen und Verfahren, die hierin als auf Chromadaten angewandt beschrieben sind in einigen Ausführungsformen auf andere Formate angewandt werden, die Farbdaten separat von Intensitätsdaten speichern. Weiterhin, obwohl die obige Beschreibung spezifische Teile von Verfahren darstellt, in denen eine Umwandlung von einem Format in ein anderes stattfinden kann (z.B. Luma nach Luminanz oder RGB nach Luma), wird der Fachmann verstehen, dass diese Umwandlungen von einem Bildformat in ein anderes auf jeder Stufe oder Stufen der Verfahren in einigen Ausführungsformen stattfinden können.
-
MOBILE VORRICHTUNG
-
16 ist ein Beispiel einer mobilen Rechenvorrichtung 1600 einiger Ausführungsformen. Die Implementierung einer mobilen Rechenvorrichtung beinhaltet eine oder mehrere Verarbeitungseinheiten 1605, Speicherschnittstelle 1610 und Peripheriegeräteschnittstelle 1615. Jede dieser Komponenten, die die Rechenvorrichtungsarchitektur ausmachen, können separate Komponenten sein oder in einen oder mehrere integrierte Schaltkreise integriert sein. Diese verschiedenen Komponenten können auch durch einen oder mehrere Kommunikationsbusse oder Signalleitungen zusammen gekoppelt sein.
-
Die Peripheriegeräteschnittstelle 1615 koppelt mit verschiedenen Sensoren und Untersystemen, umfassend ein Kamerasubsystem 1620, ein drahtloses Kommunikationssubsystem/- subsysteme 1625, Audiosubsystem 1630, I/O-Subsystem 1635, usw. Die Peripheriegeräteschnittstelle 1615 ermöglicht Kommunikation zwischen Prozessoren und Peripheriegeräten. Peripheriegeräte, wie ein Orientierungssensor 1645 oder ein Beschleunigungssensor 1650 können mit der Peripheriegeräteschnittstelle 1615 gekoppelt sein, um die Orientierungs- und Beschleunigungsfunktionen zu ermöglichen.
-
Das Kamerasubsystem 1620 kann mit einem oder mehreren optischen Sensoren 1640 (z. B. eine ladungsgekoppelte Vorrichtung (Charged Coupled Device, CCD) optischer Sensor, ein komplementärer Metalloxid Halbleiter (Aufnahmemodule/ optischer Sensor) für eine oder mehrere Kameras der Vorrichtung gekoppelt sein. In einigen Ausführungsformen hat die Vorrichtung nur eine Kamera, während die Vorrichtung mehr als eine (z. B. zwei) Kameras in anderen Ausführungsformen hat. In einigen Ausführungsformen hat die Vorrichtung auf verschiedenen Seiten der Vorrichtung Kameras (z. B. eine Kamera auf der Vorderseite der Vorrichtung und eine Kamera auf der Rückseite der Vorrichtung). Das Kamerasubsystem 1620, das mit den Sensoren gekoppelt ist, kann Kamerafunktionen bereitstellen, wie Bild- und/oder Videodatenaufnahme. Die drahtlosen Kommunikationssubsysteme 1625 können dazu dienen, Kommunikationsfunktionen zu ermöglichen. Die drahtlosen Kommunikationssubsysteme 1625 können Funkfrequenzempfänger und -sender und optische Empfänger und Sender umfassen. Diese können so implementiert sein, dass sie über ein oder mehrere Kommunikationsnetzwerke, wie ein GSM-Netzwerk, ein WiFi-Netzwerk, ein Bluetooth-Netzwerk, usw. arbeiten. Die Audiosubsysteme 1630 sind mit einem Lautsprecher 1631 und einem Mikrofon 1632 gekoppelt, um sprachbasierte Funktionen, wie Spracherkennung, digitales Aufzeichnen, usw. zu ermöglichen.
-
Das I/O-Subsystem 1635 beinhaltet den Transfer zwischen Eingabe-/Ausgabeperipheriegerätevorrichtungen, wie eine Anzeige, einen Berührungsbildschirm, usw. und dem Datenbus der CPU durch die Peripheriegeräteschnittstelle 1615. Das 1/0-Subsystem 1635 kann einen Berührungsbildschirmcontroller 1655 und andere Eingabecontroller 1660 umfassen, um diese Funktionen zu ermöglichen. Der Berührungsbildschirmcontroller 1655 kann mit dem Berührungsbildschirm 1665 gekoppelt sein und Kontakt und Bewegung auf dem Bildschirm detektieren mithilfe irgendeiner von Mehrfach-Berührungsempfindlichkeitstechnologien. Andere Eingabecontroller 1660 können mit anderen Eingabe-/Steuervorrichtungen gekoppelt sein, wie einem oder mehreren Knöpfen.
-
Die Speicherschnittstelle 1610 kann mit dem Speicher 1670 gekoppelt sein, welcher Hochgeschwindigkeits-Wahlfreierzugriffs-Speicher und/oder nicht volatilen Speicher wie Flash-Speicher umfassen kann. Der Speicher kann ein Betriebssystem (Operating System, OS) 1672 speichern. Das OS 1672 kann Anweisungen zum Handhaben von Basissystemdiensten umfassen und zum Ausführen von Hardware-abhängigen Aufgaben.
-
Der Speicher kann auch Kommunikationsanweisungen 1674 umfassen, um die Kommunikation mit einer oder mehreren zusätzlichen Vorrichtungen zu ermöglichen; graphische Benutzerschnittstellenanweisungen 1676 um graphische Benutzerschnittstellenverarbeitung zu ermöglichen, Bildverarbeitungsanweisungen 1678, um bildbezogene Verarbeitung und Funktionen zu ermöglichen; Telefonanweisungen 1680, um telefonbezogene Verarbeitung und Funktionen zu ermöglichen; Medienaustausch- und -verarbeitungsanweisungen 1682, um Medienkommunikation und verarbeitungsbezogene Prozesse und Funktionen zu ermöglichen; Kameraanweisungen 1684, um kamerabezogene Verarbeitung und Funktionen zu ermöglichen und HDR-Bilderzeugungsanweisungen 1686, um die HDR-Erzeugungsprozesse und -funktionen zu ermöglichen. Die oben identifizieren Anweisungen müssen nicht als separate Softwareprogramme oder -module implementiert sein. Verschiedene Funktionen von mobilen Rechenvorrichtungen können in Hardware und/oder in Software implementiert sein, umfassend in einem oder mehreren Signalverarbeitungs- und/oder - anwendungsspezifischen integrierten Schaltkreis.
-
17 zeigt eine Berührungs-I/O-Vorrichtung. Die oben beschriebenen Ausführungsformen können die Berührungs-I/O-Vorrichtung 1701 umfassen, die Berührungseingaben zum Interagieren mit einem Rechensystem 1703 empfangen kann, wie in 17 gezeigt, über einen drahtgebundenen oder drahtlosen Kommunikationskanal 1702. Die Berührungs-I/O-Vorrichtung 1701 kann verwendet werden, um Nutzereingaben an das Rechensystem 1703 bereitzustellen anstelle von oder in Kombination mit anderen Eingabevorrichtungen, wie eine Tastatur, Maus, usw. Eine oder mehrere Berührungs-I/O-Vorrichtungen 1701 können verwendet werden, um Benutzereingabe an das Rechensystem 1703 bereitzustellen. Die Berührungs-I/O-Vorrichtung 1701 kann ein integraler Teil des Rechensystems 1703 sein (z. B. Berührungsbildschirm auf einem Laptop) oder kann von der Rechenvorrichtung 1703 separat sein.
-
Die Berührungs-I/O-Vorrichtung 1701 kann eine berührungsempfindliche Tafel umfassen, die ganz oder teilweise transparent, halbtransparent, nichttransparent, lichtundurchlässig oder jede Kombination davon ist. Die Berührungs-I/O-Vorrichtung 1701 kann als ein Berührungsbildschirm, ein Berührungsfeld, ein Berührungsbildschirm, der wie ein Berührungsfeld funktioniert (z. B. ein Berührungsbildschirm, der das Berührungsfeld eines Laptops ersetzt), ein Berührungsbildschirm oder Berührungsfeld, das mit irgendeiner anderen Eingabevorrichtung kombiniert ist oder darin integriert ist (z. B. ein Berührungsbildschirm oder Berührungsfeld, das auf einer Tastatur angeordnet ist) oder irgendein mehrdimensionales Objekt, das eine berührungsempfindliche Oberfläche zum Empfangen von Berührungseingaben hat, ausgeführt sein.
-
In einem Beispiel kann die Berührungs-I/O-Vorrichtung 1701, die als ein Berührungsbildschirm ausgeführt ist, eine transparente und/oder halbtransparente berührungsempfindliche Tafel umfassen, die teilweise oder ganz über zumindest einem Teil einer Anzeige positioniert ist. Gemäß dieser Ausführungsform arbeitet die Berührungs-I/O-Vorrichtung 1701 so, dass sie graphische Daten, die von dem Rechensystem 1703 (und/oder einer anderen Quelle) übertragen werden, anzeigt und auch Benutzereingaben empfängt. In anderen Ausführungsformen kann die Berührungs-I/O-Vorrichtung 1701 als ein integrierter Berührungsbildschirm ausgeführt sein, in dem berührungsempfindliche Komponenten/Vorrichtungen in die Anzeigenkomponenten/-vorrichtungen integriert sind. In weiter anderen Ausführungsformen kann ein Berührungsbildschirm als ein zusätzlicher oder ergänzender Anzeigenbildschirm verwendet werden zum Anzeigen von zusätzlichen oder denselben graphischen Daten wie eine primäre Anzeige und zum Empfangen von Berührungseingaben.
-
Die Berührungs-I/O-Vorrichtung 1701 kann dazu konfiguriert sein, den Ort von einer oder mehreren Berührungen oder Fastberührungen auf der Vorrichtung 1701 zu erfassen basierend auf kapazitiven, resistiven, optischen, akustischen, induktiven, mechanischen, chemischen Messungen oder jedem Phänomen, das bezogen auf die Auftritte von einem oder mehreren Berührungen oder Fastberührungen in der Nähe der Vorrichtung 1701 gemessen werden können. Software, Hardware, Firmware oder jede Kombination davon kann verwendet werden, um die Messungen der erfassten Berührungen zu identifizieren und eine oder mehrere Gesten zu verfolgen. Eine Geste kann stationären oder nichtstationären, einzelnen oder mehreren Berührungen oder Fastberührungen auf der Berührungs-I/O-Vorrichtung 1701 entsprechen. Eine Geste kann durch das Bewegen von einem oder mehreren Fingern oder anderen Objekten auf eine bestimmte Weise auf der Berührungs-I/O-Vorrichtung 1701 ausgeführt werden, wie antippen, drücken, schwenken, wischen, drehen, ändern der Orientierung, drücken mit unterschiedlichem Druck und ähnlichem bei zumindest derselben Zeit, angrenzend nacheinander oder nacheinander folgend. Eine Geste kann charakterisiert werden durch, aber ist nicht begrenzt auf kneifen, gleiten, wischen, rotieren, biegen, ziehen oder Antipp-Bewegung zwischen oder mit irgendeinem der Finger oder Fingern. Eine einzelne Geste kann mit einer oder mehreren Händen, durch einen oder mehrere Benutzer oder eine Kombination davon ausgeführt werden.
-
Das Rechensystem 1703 kann eine Anzeige mit graphischen Daten treiben, um eine graphische Benutzerschnittstelle (GUI) anzuzeigen. Die GUI kann dazu konfiguriert sein, Berührungseingaben über die Berührungs-I/O-Vorrichtung 1701 zu empfangen. Als ein Berührungsbildschirm ausgeführt kann die Berührungs-I/O-Vorrichtung 1701 die GUI anzeigen. Alternativ kann die GUI auf einer Anzeige angezeigt werden, die separat ist von der Berührungs-I/O-Vorrichtung 1701 ist. Die GUI kann graphische Elemente umfassen, die an bestimmten Orten innerhalb der Schnittstelle angezeigt werden. Die graphischen Elemente können umfassen, ohne darauf begrenzt zu sein, eine Vielzahl von angezeigten virtuellen Eingabevorrichtungen, darunter virtuelle Scrollräder, eine virtuelle Tastatur, virtuelle Knäufe, virtuelle Tasten oder irgendein virtuelles UI und ähnliches. Ein Benutzer kann Gesten auf einem oder mehreren bestimmten Orten auf der Berührungs-I/O-Vorrichtung 1701 ausführen, welche mit den graphischen Elementen der GUI assoziiert sein können. In anderen Ausführungsformen kann der Benutzer Gesten an einem oder mehreren Orten ausführen, die unabhängig von den Orten der graphischen Elemente der GUI sind. Gesten, die auf der Berührungs-I/O-Vorrichtung 1701 ausgeführt werden, können direkt oder indirekt graphische Elemente, wie Cursor, Icons, Mediendateien, Listen, Text, alles oder Teile von Bildern oder ähnliches innerhalb der GUI manipulieren, steuern, modifizieren, bewegen, aktivieren, initiieren oder allgemein beeinflussen. Zum Beispiel, im Fall eines Berührungsbildschirms kann ein Benutzer direkt mit einem graphischen Element interagieren durch das Ausführen einer Geste über dem graphischen Element auf dem Berührungsbildschirm. Alternativ stellt ein Berührungsfeld allgemein indirekte Interaktion bereit. Gesten können auch nicht angezeigte GUI Elemente beeinflussen (z. B. hervorrufen, dass Benutzerschnittstellen erscheinen) oder können andere Aktionen innerhalb des Rechensystems 1703 beeinflussen (z. B. einen Zustand oder Modus einer GUI, Anwendung, oder Betriebssystems beeinflussen). Gesten können auf einer Berührungs-I/O-Vorrichtung 1701 im Zusammenhang mit einem angezeigten Cursor ausgeführt werden oder nicht. Zum Beispiel, in dem Fall, in dem Gesten auf einem Berührungsfeld ausgeführt werden, kann ein Cursor (oder Zeiger) auf einem Anzeigenbildschirm oder Berührungsbildschirm angezeigt werden und der Cursor kann über Berührungseingaben auf dem Berührungsfeld gesteuert werden, um mit graphischen Objekten auf dem Anzeigenbildschirm zu interagieren. In anderen Ausführungsformen, in welchen Gesten direkt auf einem Berührungsbildschirm ausgeführt werden, kann ein Benutzer direkt mit Objekten auf dem Berührungsbildschirm interagieren mit oder ohne der Anzeige eines Cursors oder Zeigers auf dem Berührungsbildschirm.
-
Rückmeldung kann dem Benutzer über den Kommunikationskanal 1702 in Antwort auf oder basierend auf der Berührung oder Fastberührungen auf der Berührungs-I/O-Vorrichtung 1701 bereit gestellt werden. Die Rückmeldung kann optisch, mechanisch, elektrisch, durch Gerüche, akustisch, oder ähnliches oder jede Kombination davon und in einer variablen oder nichtvariablen Weise übertragen werden.
-
Diese oben beschriebenen Funktionen können durch digitale elektronische Schaltkreise, in Computer-Software, Firmware oder Hardware implementiert sein. Die Techniken können implementiert sein mithilfe eines oder mehrerer Computerprogrammprodukte. Programmierbare Prozessoren und Computer können in mobilen Vorrichtungen umfasst sein oder als mobile Vorrichtungen gepackt sein. Die Verfahrens- und Logikflüsse können durch einen oder mehrere programmierbare Prozessoren und durch einen oder mehrere programmierbare Logikschaltkreise ausgeführt werden. Allgemeine und auf einen bestimmten Zweck ausgerichtete Rechenvorrichtungen und Speichervorrichtungen können durch Kommunikationsnetzwerke verbunden sein.
-
Einige Ausführungsformen umfassen elektronische Komponenten wie Mikroprozessoren, Speicher und Speicherkapazität, die Computerprogrammanweisungen in einem maschinenlesbaren oder computerlesbaren Medium speichern (alternativ als ein computerlesbares Speichermedium, maschinenlesbares Medium oder maschinenlesbares Speichermedium bezeichnet). Solche Beispiele von computerlesbaren Medien umfassen RAM, ROM, Read-Only Compact Discs (CD-ROM), beschreibbare Compact Discs (CD-R), wiederbeschreibbare Compact Discs (CD-RW), Read-Only Digital Versatile Discs (z. B. DVD-ROM, Zweischicht-DVD-ROM), eine Vielzahl von beschreibbaren/wiederbeschreibbaren DVDs (z. B. DVD-RAM, DVD-RW, DVD+RW, etc.), Flash-Speicher (z. B. SD-Karten, Mini-SD-Karten, Mikro-SD-Karten, etc.), magnetische und/oder Festkörperfestplatten, Nur-Lese und beschreibbare Blu-Ray®-Discs, Ultradensity Optical Discs und jedes andere optische und magnetische Medium und Disketten. Das computerlesbare Medium kann einen Computercode speichern, der durch zumindest eine Verarbeitungseinheit ausführbar ist und Sätze von Instruktionen umfasst zum Ausführen von verschiedenen Operationen. Beispiele von Computerprogrammen oder Computercode umfassen Maschinencode, wie durch einen Compiler erzeugt und Dateien, die Code auf höherem Niveau umfassen, die durch einen Computer, eine elektronische Komponente oder einen Mikroprozessor mithilfe eines Interpreters ausgeführt werden.
Während die obige Beschreibung sich primär auf Mikroprozessoren oder Mehrkernprozessoren bezieht, die Software ausführen, werden einige Ausführungsformen durch einen oder mehrere integrierte Schaltkreise, wie anwendungsspezifische integrierte Schaltkreise (ASICS) oder feldprogrammierbare Gatterlogik (FPGAs) ausgeführt. In einigen Ausführungsformen führen solche integrierten Schaltkreise Anweisungen aus, die in dem Schaltkreis selbst gespeichert sind.
-
Wie in dieser Spezifikation und irgendwelchen Ansprüchen dieser Anmeldung verwendet bezeichnen die Wörter „Computer“, „Server“, „Prozessor“ und „Speicher“ alle elektronische oder anderen technologische Vorrichtungen. Diese Begriffe schließen Menschen oder Gruppen von Menschen aus. Für die Zwecke dieser Beschreibung bedeuten die Wörter Anzeige oder anzeigen das Anzeigen auf einer elektronischen Vorrichtung. Wie in dieser Spezifikation verwendet und in irgendwelchen Ansprüchen dieser Anmeldung sind die Begriffe „Computerlesbares Medium“, „computerlesbare Medien“, „maschinenlesbares Medium“ oder „maschinenlesbare Medien“ alle insgesamt auf körperliche physikalische Objekte beschränkt, die Informationen in einer Form speichern, die durch einen Computer, Rechenvorrichtung oder andere elektronische Vorrichtungen mit einer oder mehreren Verarbeitungseinheiten gelesen werden können. Diese Begriffe schließen jegliche drahtlosen Signale, drahtgebundene heruntergeladene Signale, und irgendwelche anderen flüchtigen Signale aus.
-
Während diese Erfindung mit Bezug auf verschiedene spezifische Details beschrieben wurde, wird der Fachmann verstehen, dass die Erfindung in anderen spezifischen Formen ausgeführt sein kann, ohne von dem Geist der Erfindung abzuweichen. Zum Beispiel, obwohl verschiedene Ausführungsformen oben für mobile Vorrichtungen beschrieben sind, wird der Fachmann verstehen, dass die Vorrichtung in anderen Ausführungsformen nicht mobile Vorrichtungen, wie ein Desktop-Computer sein können.
Zusätzlich zeigt eine Anzahl von Figuren (umfassend 4, 6, 7, 9, 10, 12 und 14) konzeptionell Verfahren. Die spezifischen Operationen dieser Verfahren müssen nicht in der genauen gezeigten und beschriebenen Reihenfolge ausgeführt werden. Die spezifischen Operationen müssen nicht in einer kontinuierlichen Serie von Operationen ausgeführt werden und unterschiedliche Operationen können in unterschiedlichen Ausführungsformen ausgeführt werden. Weiterhin könnte das Verfahren mithilfe verschiedener Unterprozesse oder als ein Teil eines größeren Makroverfahrens implementiert sein. Ebenfalls könnten Operationen, die sequenziell erscheinen, in einer durchwürfelten Weise ausgeführt werden. Deshalb würde der Fachmann verstehen, dass die Erfindung nicht durch die vorgehenden illustrativen Details begrenzt ist, sondern stattdessen durch die beigefügten Ansprüche definiert wird.