-
Technisches Gebiet
-
Die vorliegende Offenbarung betrifft allgemein das Umwandeln eines Eingabebildes in ein niedriger aufgelöstes oder herunterskaliertes Bild. Insbesondere, jedoch nicht beschränkungshalber, betrifft die vorliegende Offenbarung das Herunterskalieren von Bildern durch Auswählen von Pixelsätzen mittels einer für blaues Rauschen gegebenen Abtastung.
-
Hintergrund
-
Bildbearbeitungsanwendungen werden oftmals benutzt, um durch herunterskalierende Neuabtastung kleinere Bilder zu generieren. Bildbearbeitungsanwendungen verfügen beispielsweise über die Fähigkeit, Bilder herunterzuskalieren, indem sie ein Eingabebild in ein niedriger aufgelöstes Ausgabebild umwandeln. Herunterskalierende Vorgänge verringern inhärent die Menge an Information, die im Vergleich zum Eingabebild im Ausgabebild beinhaltet ist, und sind daher anfällig für verschiedene Artefakte, darunter Unschärfe, Rauschen und Aliasing.
-
Bestehende Techniken der herunterskalierenden Neuabtastung erzwingen einen Kompromiss zwischen Unschärfe und Aliasing, was oftmals als der am wenigsten erwünschte Artefakt infolge einer Neuabtastung betrachtet wird. Bei einem Beispiel erzeugt eine Nächster-Nachbar-Neuabtastung (nearest-neighbor-resampling), die eine Technik der herunterskalierenden Neuabtastung ist, Ausgabebilder mit minimaler Unschärfe und starkem Aliasing. Bei einem anderen Beispiel erzeugen Techniken wie die lineare Neuabtastung und die bikubische Neuabtastung herunterskalierte Ergebnisse mit weniger Aliasing und mehr Unschärfe (beispielsweise durch Vorfiltern des Eingabebildes vor der herunterskalierenden Neuabtastung). Bestehende Verfahren zum Herunterskalieren von Bildern sind daher nicht in der Lage, herunterskalierte Bilder mit verringerter Unschärfe und verringertem Aliasing zu generieren.
-
Zusammenfassung
-
Bestimmte Ausführungsformen implizieren ein Herunterskalieren von Bildern durch Auswählen von Pixelsätzen mittels einer für blaues Rauschen gegebenen Abtastung (blue noise sampling). Eine Rechenvorrichtung nutzt beispielsweise einen für blaues Rauschen gegebenen abtastenden Vorgang zum Identifizieren von Quellpixeln aus einem Eingabebild, das jeweilige Pixelsätze definiert. Jeder Pixelsatz ist einer jeweiligen Gewichtungsmatrix für einen herunterskalierenden Vorgang zugeordnet. Der für blaues Rauschen gegebene abtastende Vorgang verursacht einen Überlappungsbereich zwischen ersten und zweiten Pixelsätzen. Die Rechenvorrichtung weist der ersten Gewichtungsmatrix ein Überlappungspixel in dem Überlappungsbereich auf Grundlage dessen zu, dass das Überlappungspixel dem ersten Quellpixel näher ist. Die Rechenvorrichtung modifiziert die zweite Gewichtungsmatrix, um das Überlappungspixel aus einem Abschnitt des herunterskalierenden Vorganges, der die zweite Gewichtungsmatrix impliziert, auszuschließen. Die Rechenvorrichtung generiert ein herunterskaliertes Bild mittels Durchführen des herunterskalierenden Vorganges an dem Eingabebild. Das Durchführen des herunterskalierenden Vorganges impliziert ein Kombinieren des ersten Pixelsatzes zu einem ersten Zielpixel mit der ersten Gewichtungsmatrix und ein Kombinieren des zweiten Pixelsatzes zu einem zweiten Ziel bzw. Zielpixel mit der modifizierten zweiten Gewichtungsmatrix.
-
Diese illustrativen Ausführungsformen sind nicht zur Beschränkung oder Definition der Offenbarung aufgeführt, sondern stellen Beispiele zur Förderung von deren Verständnis bereit. Zusätzliche Ausführungsformen sind in der Detailbeschreibung erläutert, und die weitere Beschreibung erfolgt dort.
-
Figurenliste
-
Merkmale, Ausführungsformen und Vorteile der vorliegenden Offenbarung erschließen sich besser bei einem Studium der nachfolgenden Detailbeschreibung in Zusammenschau mit der begleitenden Zeichnung.
- 1 zeigt ein Beispiel eines bildverarbeitenden Rechensystems, das eine herunterskalierende Neuabtastung von Bildern unter Nutzung einer für blaues Rauschen gegebenen Abtastung entsprechend gewissen Ausführungsformen der vorliegenden Offenbarung durchführt.
- 2 zeigt ein Beispiel für einen Prozess zur spezifischen herunterskalierenden Neuabtastung von Bildern unter Nutzung einer für blaues Rauschen gegebenen Abtastung entsprechend einigen Ausführungsformen der vorliegenden Offenbarung.
- 3 zeigt ein Beispiel für eine herunterskalierende Neuabtastung von zwei benachbarten Pixelsätzen entsprechend bestimmten Ausführungsformen der vorliegenden Offenbarung.
- 4 zeigt ein Beispiel für Quellpixel, die auf Grundlage eines konfigurierbaren Grades der Zufälligkeit ausgewählt sind, entsprechend gewissen Ausführungsformen der vorliegenden Offenbarung.
- 5 zeigt ein Beispiel einer Ausgabe der hier beschriebenen Techniken des für blaues Rauschen gegebenen Herunterskalierens im Vergleich zu Ausgaben bestehender Techniken der herunterskalierenden Neuabtastung entsprechend gewissen Ausführungsformen der vorliegenden Offenbarung.
- 6 zeigt ein Beispiel für ein Rechensystem zum Implementieren einer oder mehrerer Ausführungsformen der vorliegenden Offenbarung.
-
Detailbeschreibung
-
Gewisse Ausführungsformen implizieren ein Herunterskalieren von Bildern durch Auswählen von Pixelsätzen mittels einer für blaues Rauschen gegebenen Abtastung. Ein herunterskalierender Vorgang impliziert beispielsweise ein Auswählen mehrerer Sätze von Pixeln aus einem Bild und ein Kombinieren von Farbinformation aus jedem Satz von Pixeln zu einem einzigen Zielpixel. Bei einem vereinfachten Beispiel wird ein 16×16-Pixelbild auf ein 4×4-Pixelbild herunterskaliert, indem vier Sätze bzw. 4×4 Sätze von Pixeln identifiziert werden, von denen jeder in Bezug auf ein zentrales Pixel oder ein anderes Quellpixel definiert ist, und indem jeder 4x4-Pixelsatz zu einem jeweiligen Zielpixel kombiniert wird. Eine hier beschriebene herunterskalierende Engine wendet einen für blaues Rauschen gegebenen abtastenden Vorgang an, um abhängig von gewissen Bedingungen diejenigen Quellpixel, die diese Bildsätze definieren, zufällig auszuwählen. Der für blaues Rauschen gegebene abtastende Vorgang stellt sicher, dass die „zufällige“ Auswahl weiterhin bewirkt, dass Quellpixel im Eingabebild repräsentativ ausgewählt werden. Die für blaues Rauschen gegebene abtastende Engine führt zudem verschiedene Verarbeitungsvorgänge durch, um sicherzustellen, dass die Überlappung zwischen Pixelsätzen keine Kombination von Farbinformation aus überlappenden Pixelsätzen bewirkt, was merkliche Aliasing- oder andere Artefakte in das Ausgabebild einbringen würde.
-
Das nachfolgende nichtbeschränkende Beispiel ist aufgeführt, um gewisse Ausführungsformen vorzustellen. Bei einem Beispiel greift ein Bildverarbeitungssystem auf ein Eingabebild zur Herunterskalierung zu, so beispielsweise auf ein Bild mit einer Höhe von 6 Pixeln und einer Breite von 9 Pixeln. Das Bildverarbeitungssystem identifiziert Quellpixel zur Neuabtastung durch Anwenden eines für blaues Rauschen gegebenen abtastenden Vorganges. Der für blaues Rauschen gegebene abtastende Vorgang wählt Quellpixel, die im Eingabebild verteilt sind, zufällig aus. Der für blaues Rauschen gegebene abtastende Vorgang wählt beispielsweise ein erstes Quellpixel an einem Ort (3, 4) und ein zweites Quellpixel an einem Ort (7, 3) aus. Jedes Quellpixel definiert einen Satz von Pixeln, die benachbart zu dem Quellpixel sind. Ein erster Satz von Pixeln ist beispielsweise von einem 5×5-Gitter umschlossen, das um das erste Quellpixel herum zentriert ist, während ein zweiter Satz von Pixeln von einem 5×5-Gitter umschlossen ist, das um das zweite Quellpixel herum zentriert ist. Da der für blaues Rauschen gegebene abtastende Vorgang zufallsbasiert ist, können einige der Pixelsätze überlappen. Beim aktuellen Beispiel ist das Pixel an dem Ort (5, 6) sowohl innerhalb des 5x5-Gitters, das um das erste Quellpixel herum zentriert ist, wie auch innerhalb des 5x5-Gitters, das um das zweite Quellpixel herum zentriert ist, befindlich und ist daher in beiden Pixelsätzen beinhaltet.
-
Weiter impliziert ein herunterskalierender Vorgang, der von dem Bildverarbeitungssystem benutzt wird, bei diesem Beispiel ein Anwenden einer Gewichtungsmatrix auf jeden Pixelsatz. Eine Gewichtungsmatrix für eine Faltung beinhaltet beispielsweise Koeffizienten, die jeweils mit Pixeln in einem Pixelsatz multipliziert werden. Beim aktuellen Beispiel wird ein gegebener 5×5-Pixelsatz durch Herunterskalieren unter Nutzung einer 5x5-Gewichtungsmatrix kombiniert. In Fällen, die überlappende Pixelsätze implizieren, kann ein Pixel im Überlappungsbereich jedoch sowohl bei einer ersten Faltung, die die erste Gewichtungsmatrix impliziert, wie auch bei einer zweiten Faltung, die die zweite Gewichtungsmatrix impliziert, genutzt werden, was jedoch ein Aliasing ins Ausgabebild einbringen kann. Um dieses Problem zu lösen, identifiziert das Bildverarbeitungssystem Überlappungspixel, die sowohl in dem ersten Pixelsatz wie auch dem zweiten Pixelsatz beinhaltet sind. Das Bildverarbeitungssystem weist auf Grundlage dessen, ob jedes Überlappungspixel näher an dem ersten Quellpixel oder dem zweiten Quellpixel ist, jedes Überlappungspixel entweder dem ersten Satz von Pixeln oder dem zweiten Satz von Pixeln zu.
-
Weiter modifiziert das Bildverarbeitungssystem bei diesem Beispiel die Gewichtungsmatrix, die dem ersten Satz von Pixeln zugeordnet ist, um Pixel, die dem zweiten Satz von Pixeln zugewiesen sind, auszuschließen, oder umgekehrt. Ein bestimmtes Überlappungspixel kann beispielsweise einem Koeffizient x1 in der ersten Gewichtungsmatrix und einem Koeffizient x2 in der zweiten Gewichtungsmatrix entsprechen. Wird das Überlappungspixel dem ersten Pixelsatz zugewiesen, so modifiziert das Bildverarbeitungssystem die zweite Gewichtungsmatrix, indem es den Koeffizient x2 auf 0 setzt. Hierdurch wird bewirkt, dass das Überlappungspixel aus einem Faltungsvorgang, der den zweiten Pixelsatz impliziert, ausgeschlossen wird, was das Aliasing in dem herunterskalierten Ausgabebild verringert. Das Bildverarbeitungssystem wendet den herunterskalierenden Vorgang an, indem es die erste Gewichtungsmatrix auf den ersten Satz von Pixeln und die modifizierte zweite Gewichtungsmatrix auf den zweiten Satz von Pixeln anwendet. Der herunterskalierende Vorgang gibt ein erstes Zielpixel, das aus dem ersten Pixelsatz berechnet wird, und ein zweites Zielpixel, das aus den zweiten Pixelsatz berechnet wird, aus.
-
Im Sinne des Vorliegenden wird der Begriff „herunterskalierender Vorgang“ benutzt, um einen Bildbearbeitungsvorgang zu bezeichnen, der bei einem Eingabebild angewendet wird und bei dem hierdurch ein Ausgabebild erzeugt wird, das eine niedrigere Auflösung als das Eingabebild aufweist.
-
Im Sinne des Vorliegenden wird der Begriff „Bild“ benutzt, um elektronische Daten zu bezeichnen, die ein oder mehrere Contentobjekte visuell darstellen. Beispiele für ein Bild beinhalten eine elektronische Version eines Fotos, einen oder mehrere Frames aus elektronischem Videocontent, elektronischen grafischen Content, der mit Zeichenwerkzeugen generiert oder modifiziert worden ist, und dergleichen mehr.
-
1 zeigt ein Beispiel für ein bildverarbeitendes Rechensystem 100, das eine herunterskalierende Neuabtastung von Bildern unter Nutzung einer für blaues Rauschen gegebenen Abtastung durchführt, entsprechend einigen Ausführungsformen der vorliegenden Offenbarung. Bei diesem Beispiel führt das bildverarbeitende Rechensystem 100 eine für blaues Rauschen gegebene herunterskalierende neuabtastende Engine 110 aus, die auf ein Eingabebild 112 zugreift und ein Ausgabebild 120 durch herunterskalierende Neuabtastung des Eingabebildes 112 generiert. Die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine 110 nutzt die für blaues Rauschen gegebene Abtastung zur Bestimmung von Quellpixeln, die zum Herunterskalieren eines Bildes genutzt werden, modifiziert den Algorithmus der herunterskalierenden Neuabtastung, um Überlappungsbereiche zu berücksichtigen, die durch den für blaues Rauschen gegebenen abtastenden Prozess verursacht werden, und führt den herunterskalierenden neuabtastenden Vorgang durch. Das sich ergebende Ausgabebild 120 wird in einer Anzeigevorrichtung 130 angezeigt.
-
Die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine 110 verarbeitet das Eingabebild 112 unter Nutzung eines für blaues Rauschen gegebenen abtastenden Moduls 114. Die für blaues Rauschen gegebene Abtastung ist ein Verfahren zum Bestimmen eines zufälligen Satzes von Quellpixeln, die für den herunterskalierenden neuabtastenden Vorgang benutzt werden sollen, während sichergestellt ist, dass kein Quellpixel zu nahe an einem anderen Quellpixel ist. Ein herunterskalierender neuabtastender Vorgang impliziert ein Gruppieren der Pixel eines Bildes zu Sätzen von Pixeln und ein für jeden Satz von Pixeln erfolgendes mathematisches Kombinieren der Farbwerte innerhalb des Satzes zu einem Farbwert für ein den Satz darstellendes Zielpixel. Bei einem vereinfachten Beispiel, das ein Bild aus 16 Pixeln impliziert, werden die 16 Pixel zu vier Sätzen von Pixeln gruppiert, und es wird jeder Pixelsatz derart zu einem jeweiligen Zielpixel kombiniert, dass das sich ergebende herunterskalierte Bild vier Zielpixel aufweist.
-
Ein Quellpixel ist ein Pixel, das derart ausgewählt ist, dass es das zentrale Pixel eines Satzes von Pixeln eines herunterskalierenden neuabtastenden Vorganges ist, sodass ein mathematischer Vorgang bei dem Satz von Pixeln angewendet werden kann, um den Wert eines einzelnen Zielpixels zu berechnen. Der Satz von Pixeln um jedes Zielpixel herum weist eine vorbestimmte Form, so beispielsweise diejenige eines Gitters, auf, damit derselbe Vorgang an jedem Satz von Pixeln durchgeführt werden kann. Die für blaues Rauschen gegebene Abtastung erzeugt einen Satz von Quellpixeln, die zufällig bestimmt sind, jedoch einen Grad der Gleichförmigkeit im Bild aufweisen. Bei einigen Beispielen kann dieser für blaues Rauschen gegebene abtastende Vorgang sicherstellen, dass bei keinem Quellpixel der Abstand zu einem anderen Quellpixel unter einer vorbestimmten Schwelle ist.
-
Das für blaues Rauschen gegebene abtastende Modul 114 stellt Daten, die das ausgewählte Quellpixel identifizieren, für ein Überlappungsbereichsverarbeitungsmodul 116 bereit. Da die Quellpixel zufällig ausgewählt sind, können die Bereiche, die jedes Quellpixel umgeben, das durch den herunterskalierenden neuabtastenden Vorgang verarbeitet wird, mit den umgebenden Bereichen benachbarter Quellpixel überlappen. Zwei Quellpixel können beispielsweise derart zufällig ausgewählt sein, dass ein Pixel innerhalb des Gitters, das beide Quellpixel umgibt, liegt. Wird der herunterskalierende neuabtastende Vorgang ohne Anpassung durchgeführt, so werden die Daten jenes Pixels bei der Berechnung zweier verschiedener Zielpixel benutzt, was bewirkt, dass Pixel gegenüber Pixeln, die nur im Gitter eines einzigen Quellpixels vorzufinden sind, stärker gewichtet werden. In diesen Fällen muss am Algorithmus der herunterskalierenden Neuabtastung eine derartige Anpassung vorgenommen werden, dass jedes Pixel nur von dem herunterskalierenden neuabtastenden Vorgang, der einem Quellpixel zugeordnet ist, benutzt wird.
-
Das Überlappungsbereichsverarbeitungsmodul 116 stellt für das herunterskalierende neuabtastende Modul 118 Information bereit, die die Überlappungsbereiche bei dem herunterskalierenden neuabtastenden Vorgang berücksichtigt. Das herunterskalierende neuabtastende Modul 118 führt den herunterskalierenden neuabtastenden Vorgang durch. Das herunterskalierende neuabtastende Modul nutzt einen Kernel oder eine Gewichtungsmatrix zur Durchführung der herunterskalierenden Neuabtastung, indem es die erste Gewichtungsmatrix auf den Satz von Pixeln anwendet, um Zielpixel in einem Faltungsvorgang zu berechnen. Das Ergebnis ist ein Ausgabebild 120, das an einer Anzeigevorrichtung 130 angezeigt werden kann.
-
2 zeigt ein Beispiel für einen Prozess 200 zur speziellen herunterskalierenden Neuabtastung von Bildern unter Nutzung der für blaues Rauschen gegebenen Abtastung entsprechend einigen Ausführungsformen der vorliegenden Offenbarung. Eine Verarbeitungsvorrichtung ist derart dargestellt, dass sie die Vorgänge des Prozesses 200 implementiert. Anweisungen zum Durchführen der Vorgänge des illustrativen Ablaufes können als computerlesbare Anweisungen auf einem nichttemporären computerlesbaren Medium der für blaues Rauschen gegebenen herunterskalierenden neuabtastenden Engine 110 gespeichert sein. Die gespeicherten Anweisungen stellen programmierbare Module (beispielsweise das für blaues Rauschen gegebene abtastende Modul 114 und das Überlappungsbereichsverarbeitungsmodul 116) dar, die Code oder Daten beinhalten, die von einer oder mehreren Verarbeitungsvorrichtungen ausführbar sind. Die Ausführung derartiger Anweisungen konfiguriert die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine 110 dafür, die spezifischen Vorgänge, die in den Figuren gezeigt sind und hier beschrieben werden, durchzuführen. Jedes programmierbare Modul stellt in Kombination mit dem Prozessor ein Mittel zur Durchführung eines jeweiligen Vorganges dar. Während die Vorgänge in einer bestimmten Reihenfolge dargestellt sind, sollte einsichtig sein, dass keine bestimmte Reihenfolge notwendig ist und dass ein oder mehrere Vorgänge auch weggelassen, übersprungen, umgeordnet oder einer Kombination hieraus unterzogen werden können.
-
Bei Vorgang 202 greift die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine 110 auf Eingabebilddaten zu. Die Eingabebilddaten können ein Eingabebild 112 oder Bilddaten, die aus dem Eingabebild 112 hergeleitet sind, sein. Die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine 110 konfiguriert eine oder mehrere Verarbeitungsvorrichtungen beispielsweise dafür, die Eingabebilddaten aus einem nichttemporären Speichermedium abzurufen. Das nichttemporäre Speichermedium kann lokal an dem bildverarbeitenden Rechensystem 100 angeordnet sein oder kann in der Ferne (remote) über ein oder mehrere Datennetzwerke zugänglich sein.
-
Bei Vorgang 204 bestimmt die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine 110 aus den Bilddaten Quellpixel, die wiederum zum Bestimmen von Pixelsätzen zur herunterskalierenden Neuabtastung benutzt werden. Bei der Bildverarbeitung bezeichnet blaues Rauschen zufällige Abtastungssätze, die gleichförmige Verteilungen aufweisen. Die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine 110 kann beispielsweise eine bilaterale für blaues Rauschen gegebene Abtastung durchführen und hierdurch Quellpixel erhalten, die zwar zufällig, aber auch gleichförmig im Bild angeordnet sind. Die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine bestimmt die Anzahl von Pixeln, die jedes Quellpixel umgeben, als Pixelsatz, der dem Quellpixel zugeordnet ist. Die Größe der Gewichtungsmatrix bestimmt die Größe des Pixelsatzes und den Grad der herunterskalierenden Neuabtastung, der bei einem einzelnen Vorgang erreicht wird.
-
3 zeigt ein Beispiel für die herunterskalierende Neuabtastung zweier benachbarter Pixelsätze. Bei diesem Beispiel wählt das für blaues Rauschen gegebene abtastende Modul 114 ein erstes Quellpixel 302 und ein zweites Quellpixel 304 aus. Eine erste Gewichtungsmatrix 322 (eine erste Gewichtungsmatrix 322) und eine zweite Gewichtungsmatrix 324 sind über ihren jeweiligen Quellpixeln übereinandergelegt. Bei diesem Beispiel ist die Größe der Matrix (Kernel) gleich 5×5. Pixel innerhalb einer jeden Gewichtungsmatrix stellen diejenigen Pixel dar, die innerhalb eines jeden jeweiligen Pixelsatzes enthalten sind. Als Ergebnis der für blaues Rauschen gegebenen Abtastung sind die Orte des ersten Quellpixels 302 und des zweiten Quellpixels 314 ausreichend nahe aneinander, sodass Pixel vorhanden sind, die Teil beider Pixelsätze sind, wodurch ein Überlappungsbereich erzeugt wird. Bei diesem Beispiel sind die Pixel 332 bis 338 innerhalb des Überlappungsbereiches.
-
In 2 weist die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine 110 bei Vorgang 206 einem einzelnen Pixelsatz beliebige Pixel im Überlappungsbereich zu. Die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine 110 ordnet jedes Pixel dem nächstgelegenen Quellpixel für jedes Pixel im Überlappungsbereich zu. Diese Zuordnung stellt sicher, dass jedes Pixel zu dem herunterskalierenden neuabtastenden Vorgang nur einmal beiträgt, sodass die Werte von Pixeln im Überlappungsbereich in dem herunterskalierten Bild nicht überrepräsentiert sind. Diese Zuweisung identifiziert die Gewichtungsmatrix, die modifiziert werden muss, um zu verhindern, dass ein Pixel zu jenem Abschnitt des herunterskalierenden neuabtastenden Vorganges beiträgt.
-
Wie bei dem Beispiel von 3 stellt die Linie 312 diejenige Unterteilung dar, bei der das erste Quellpixel 302 das nächstgelegene der Quellpixel für alle Pixel links der Linie 312 ist und das zweite Quellpixel 304 das nächstgelegene Quellpixel für alle Pixel rechts der Linie 312 ist. Die Pixel 332 und 334 sind näher an dem ersten Quellpixel 302, während die Pixel 336 und 338 näher an dem zweiten Quellpixel 304 sind. Die Pixel 332 und 334 sollen zu dem herunterskalierenden neuabtastenden Vorgang, der an dem zweiten Pixelsatz ausgeführt wird, nicht beitragen, während die Pixel 336 und 338 zu dem herunterskalierenden neuabtastenden Vorgang des ersten Pixelsatzes nicht beitragen sollen.
-
In
2 modifiziert die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine
110 bei Vorgang
208 jede Gewichtungsmatrix derart, dass beliebige Pixel im Überlappungsbereich, die zu dem herunterskalierenden neuabtastenden Vorgang des Pixelsatzes nicht beitragen sollen, davon ausgeschlossen werden, zu der herunterskalierenden neuabtastenden Berechnung beizutragen. Die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine
110 modifiziert jede Gewichtungsmatrix beispielsweise auf Grundlage des Nachfolgenden:
wobei
-
E(si, sj) ist die bilaterale Energie, die die Position p mit Filtergewichtungen W kombiniert. In dieser Formel ist k der Gewichtungsmatrixindex, und δ ist die Differenz der Relativpositionen aus der Berechnung bei Vorgang 206. Die Engine modifiziert sodann die Gewichtungsmatrix, um E(si, sj) zu minimieren.
-
Bei einem Beispiel gelte δ = (1,0) für zwei benachbarte Pixel i und j, wobei j rechts von i ist. Es sei:
-
Da die Abtastpositionen von dem für blaues Rauschen gegebenen abtastenden Modul
114 vorbestimmt werden, bedingt das Minimieren von E(s
i, s
j) ein Minimieren von d
w (W
i, W
j). Für die vorstehend genannten Größen W
i und W
j gilt d
w (W
i, W
j) = 2. Bei diesem Beispiel wird W
j derart modifiziert, dass
gilt. Die Modifikation führt dazu, dass d
w (W
i, W
j) = 0 gilt, wodurch E(s
i, s
j) modifiziert wird.
-
Bei einigen Ausführungsformen kann die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine 110 E(si, sj) unter Nutzung einer Kombination aus einer Phasengruppenabtastung (phase group sampling) und einer für blaues Rauschen gegebenen Multiklassenabtastung (multi-class blue noise sampling) minimieren. Ein Beispiel für die Phasengruppenabtastung wird beschrieben bei „Parallel Poisson Disk Sampling“ von Li-Yi Wei, veröffentlicht bei ACM Trans. Graph. 27, 3, Article 20 (August 2008). Diese Quelle wird hiermit durch Verweis mit aufgenommen. Ein Beispiel für die für blaues Rauschen gegebene Multiklassenabtastung ist beschrieben bei „Multi-class Blue Noise Sampling" von Li-Yi Wei, veröffentlicht bei ACM Trans. Graph. 29, 4, Article 79 (Juli 2010). Auch diese Quelle wird hiermit durch Verweis mit aufgenommen.
-
Bei Kernels gleicher Form wird für alle i in Wi der Ausdruck dw (Wi, Wj) gleich 0, wenn jede Quellabtastung von nicht mehr als einer Zielabtastung gesammelt wird. Zusätzlich soll jede Quellabtastung von wenigstens einer Zielabtastung gesammelt werden, um Ausschuss zu vermeiden. Durch Minimieren von E(si, sj) verbindet die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine 110 jede Quellabtastung mit genau einer Zielabtastung innerhalb ihrer Nachbarschaft, die durch die Form des Filters W definiert ist.
-
Beispielsweise ist bei der regelmäßigen Abtastung eines Pixelgitters und bei endlicher Filterkernelgröße eine endliche Zahl δi = pi - pj zwischen einer Quellabtastung si und einer Zielabtastung sj vorhanden, wobei die Zahl durch die Größe und Form des Filters W bestimmt ist. Die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine 110 kann daher eine eindeutige Klassenkennung (class ID) für jede Quellabtastung si zuweisen, wodurch angegeben wird, wann Wij = 1 gilt, während für den Rest Wi = 0 gilt. Es ist eine endliche Anzahl von Klassen vorhanden, für die Ziele, die dieselbe Klasse von Quellen abtasten, keine überlappenden Kernelgrößen aufweisen, was den Phasengruppen bei „Wei 2008“ ähnelt (siehe 3 bei „Wei 2008“). Die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine kann die Verteilungen dieser Gruppen sodann unter Nutzung eines diskreten für blaues Rauschen gegebenen Mehrklassensolvers gemäß „Wei 2010“ optimieren (siehe 11 bei „Wei 2010“).
-
Aufgrund der Symmetrie von δ zwischen einem beliebigen gegebenen Paar von Abtastungen impliziert die vorstehend erhaltene für blaues Rauschen gegebene Quellansicht auch eine für blaues Rauschen gegebene Zielansicht. Insbesondere ist wahrscheinlich, dass zwei nahe aneinander befindliche Zielabtastungen verschiedene/unkorrelierte Werte für W aufweisen. Es ist wahrscheinlich, dass jedes W infolge der stochastischen Natur, siehe „Wei 2010“, unregelmäßige Strukturen aufweist. Dieses Verfahren minimiert dw (Wi, Wj) mit für blaues Rauschen gegebenen Verteilungen der dem binären Kernel W zu eigenen Gewichtungen für alle Quell-/Ziel-Abtastungen.
-
In 3 modifiziert die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine 110 die erste Gewichtungsmatrix 322 beispielsweise derart, dass die Pixel 336 und 338 zu dem Faltungsvorgang des ersten Pixelsatzes unter Nutzung der ersten Gewichtungsmatrix nicht beitragen. Auf ähnliche Weise modifiziert die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine 110 die zweite Gewichtungsmatrix 324 derart, dass Pixel 332 und 334 zu dem Faltungsvorgang des zweiten Pixelsatzes unter Nutzung der zweiten Gewichtungsmatrix nicht beitragen.
-
In
2 führt die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine
110 bei Vorgang
210 einen herunterskalierenden neuabtastenden Vorgang durch, indem sie einen Satz von Gewichtungsmatrizen, der modifizierte Gewichtungsmatrizen beinhaltet, auf das Bild anwendet. Die für blaues Rauschen gegebene herunterskalierende neuabtastende Engine führt einen Faltungsvorgang für jede Gewichtungsmatrix, die jedem Quellpixel zugeordnet ist, durch, indem sie jedes Pixel in einem Satz von Pixeln, durch den Kernel gewichtet, addiert. Insbesondere beinhaltet die Faltung ein Vertauschen (flipping) der Reihen und der Spalten des Kernels, ein Multiplizieren des entsprechenden Pixels und ein Summieren des Ergebnisses einer jeden Multiplikation. Das Ergebnis des herunterskalierenden neuabtastenden Vorganges ist der Wert für ein einzelnes Zielpixel. Das Ergebnis des herunterskalierenden neuabtastenden Vorganges ist der Wert für ein einzelnes Zielpixel. Die nachfolgenden Matrizen stellen beispielsweise einen Satz von Pixeln und eine Gewichtungsmatrix der Größe 3×3 dar:
-
Die erste Matrix m
1 weist die Werte α bis i auf, die jeweils die jeweiligen Farbwerte für Pixel darstellen. Bei diesem Beispiel stellt e den Wert des Quellpixels war, während die Pixel a bis d und die Pixel f bis i die Werte der umgebenden Pixel darstellen. Die zweite Matrix m
2 stellt eine 3x3-Gewichtungsmatrix dar. Ein Faltungsvorgang erzeugt bei der nachfolgenden Multiplikation und Summierung von Werten das nachfolgende Ergebnis:
-
Der Faltungsvorgang, der für jedes Quellpixel durchgeführt wird, führt zu einem Satz von Zielpixeln, die das herunterskalierte Bild darstellen.
-
Bei einigen Ausführungsformen kann die Verteilung von Quellpixeln einen konfigurierbaren Grad der Zufälligkeit zwischen einem regelmäßigen Gitter und einer für blaues Rauschen gegebenen Verteilung aufweisen. 4 zeigt ein Beispiel für Quellpixel, die auf Grundlage eines konfigurierbaren Grades der Zufälligkeit ausgewählt sind. In 4 stellen die Diagramme 402 bis 410 Beispiele für Quellpixel dar, die von dem für blaues Rauschen gegebenen abtastenden Modul 114 identifiziert worden sind, das für das Variieren der Grade der Zufälligkeit konfiguriert ist. Der Grad der Zufälligkeit kann von der Abtastung eines regelmäßigen Gitters 402 zu einer für vollständiges blaues Rauschen gegebenen Verteilung 410 reichen. Die verbleibende Verteilung von Quellpixeln 404 bis 408 stellt Ausmaße der Zufälligkeit zwischen dem regelmäßigen Gitter und der für blaues Rauschen gegebenen Abtastung dar. Bei einigen Ausführungsformen empfängt das für blaues Rauschen gegebene abtastende Modul 116 einen Zusatzparameter als Eingabe. Dieser Parameter wird zum Bestimmen des Ausmaßes der Zufälligkeit der ausgewählten Abtastungen benutzt. Hierdurch wird eine Abtastung möglich, die eine gleichförmige Verteilung, jedoch ein Ausmaß der Zufälligkeit, das kleiner als dasjenige bei der für echtes blaues Rauschen gegebenen Abtastung ist, aufweist. Bei einigen Ausführungsformen kann dies dadurch erreicht werden, dass Abtastpositionen zwischen einem regelmäßigen Gitter und der für blaues Rauschen gegebenen Verteilung interpoliert werden. Die Abtastung des regelmäßigen Gitters 402 kann beispielsweise dadurch verwirklicht werden, dass die für blaues Rauschen gegebene Verteilung mit der Verteilung des regelmäßigen Gitters mit der Gewichtung 0 interpoliert wird. Die für blaues Rauschen gegebene Abtastung 410 kann dadurch verwirklicht werden, dass der für blaues Rauschen gegebenen Abtastung die Gewichtung 1 zugeteilt wird. Die Ergebnisse 404, 406 und 408 können dadurch verwirklicht werden, dass die Gewichtung bei zunehmenden Werten zwischen 0 und 1 erhöht wird. Bei zusätzlichen oder alternativen Ausführungsformen kann dies dadurch verwirklicht werden, dass sichergestellt wird, dass jede Abtastung wenigstens einen Schwellenabstand für alle anderen Abtastungen aufweist. Beim maximalen Schwellenabstand ist die Abtastung äquivalent zur Abtastung eines regelmäßigen Gitters. Durch Anpassen des Schwellenabstandes vom Maximum abwärts können verschiedene Grade der Zufälligkeit verwirklicht werden.
-
Zudem stellen die Diagramme 422 bis 430 die Voronoi-Bereiche der Quellpixel dar, die in den entsprechenden Diagrammen 402 bis 410 identifiziert sind. Ein Voronoi-Bereich ist für einen gegebenen Satz von Punkten, in diesem Fall beispielsweise für den Satz von Quellpixeln, derjenige Bereich, der alle Pixel umschließt, die näher an dem Punkt innerhalb des gegebenen Satzes im Vergleich zu einem beliebigen anderen Punkt sind. Daher wird beliebigen anderen Pixeln (nicht gezeigt) innerhalb eines Voronoi-Bereiches der Pixelsatz des Quellpixels innerhalb jenes Bereiches zugewiesen.
-
In 3 stellt die Linie 312 beispielsweise auch die Kante des Voronoi-Bereiches zwischen dem ersten Quellpixel und dem zweiten Quellpixel dar. Pixel links der Linie 312 sind innerhalb des Voronoi-Bereiches des ersten Quellpixels 312, da alle Punkte links der Linie 312 näher an dem ersten Quellpixel 302 sind. Auf ähnliche Weise sind alle Pixel rechts der Linie 312 innerhalb des Voronoi-Bereiches des zweiten Quellpixels 304, da alle Punkte rechts der Linie 312 näher an dem zweiten Quellpixel 304 sind.
-
Beispiele für experimentelle Ergebnisse
-
5 zeigt ein Beispiel für die Ausgabe einer hier beschriebenen für blaues Rauschen gegebenen herunterskalierenden neuabtastenden Engine 110 im Vergleich zu Ausgaben bestehender Techniken der herunterskalierenden Neuabtastung. In jedem Fall generiert das System ein 256×256-Ausgabebild aus einem Ursprungsbild 510 der Größe 1024×1024 unter Nutzung verschiedener Filterradien. Ergebnisse in der Reihen 502 benutzen den Filterradius des 0,006-Fachen der ursprünglichen Eingabegröße, die Reihe 504 benutzt einen 5×5-Kernel, und die Reihe 506 benutzt einen 3x3 Kernel. Es können jedoch auch andere Radien und Kernelgrößen genutzt werden. Die Spalte 512 nutzt eine Nächster-Nachbar-Abtastung, die Spalte 514 nutzt gleichförmige Gewichtungen, die Spalte 516 nutzt eine zufällige Abtastung (weißes Rauschen), und die Spalte 518 nutzt die für blaues Rauschen gegebene Abtastung.
-
Beispiele für ein Rechensystem zum Implementieren gewisser Ausführungsformen
-
Ein beliebiges geeignetes Rechensystem oder eine Gruppe von Rechensystemen können zur Durchführung der hier beschriebenen Vorgänge benutzt werden. 6 zeigt exemplarisch ein Beispiel für das Rechensystem 600. Die Implementierung des Rechensystems 600 kann für ein bildverarbeitendes Rechensystem 100 benutzt werden.
-
Das dargestellte Beispiel eines Rechensystems 600 beinhaltet einen Prozessor 602, der kommunikationstechnisch mit einer oder mehreren Speichervorrichtungen 604 gekoppelt ist. Der Prozessor 602 führt computerausführbaren Programmcode aus, der in einer Speichervorrichtung 604 gespeichert ist, greift auf Information zu, die in der Speichervorrichtung 604 gespeichert ist, oder beides. Beispiele für den Prozessor 602 beinhalten einen Mikroprozessor, eine anwendungsspezifische integrierte Schaltung („ASIC“), ein feldprogrammierbares Gate Array („FPGA“) oder eine beliebige andere geeignete Verarbeitungsvorrichtung. Der Prozessor 602 kann eine beliebige Anzahl von Verarbeitungsvorrichtungen, darunter auch nur eine einzige Verarbeitungsvorrichtung, beinhalten.
-
Die Speichervorrichtung 604 beinhaltet ein beliebiges geeignetes nichttemporäres computerlesbares Medium zum Speichern von Programmcode 615, Programmdaten 616 oder beidem. Ein computerlesbares Medium kann beliebige elektronische, optische, magnetische oder eine andere Speichervorrichtung beinhalten, die für einen Prozessor computerlesbare Anweisungen oder anderen Programmcode bereitstellen kann. Nichtbeschränkende Beispiele für ein computerlesbares Medium beinhalten eine Magnetscheibe, einen Speicherchip, einen ROM, einen RAM, eine ASIC, einen optischen Speicher, ein Magnetband oder einen anderen magnetischen Speicher oder ein beliebiges anderes Medium, von dem eine Verarbeitungsvorrichtung Anweisungen lesen kann. Die Anweisungen können prozessorspezifische Anweisungen beinhalten, die von einem Compiler oder einem Interpreter aus Code generiert werden, der in einer beliebigen geeigneten Computerprogrammiersprache geschrieben ist, darunter beispielsweise C, C++, C#, Visual Basic, Java, Python, Perl, JavaScript und ActionScript.
-
Das Rechensystem 600 kann zudem eine Anzahl von externen oder internen Vorrichtungen, so beispielsweise Eingabe- oder Ausgabevorrichtungen, beinhalten. Das Rechensystem 600 ist beispielsweise mit einer oder mehreren I/O-Schnittstellen 608 (I/O Eingabe/Ausgabe) gezeigt. Eine I/O-Schnittstelle 608 kann eine Eingabe von Eingabevorrichtungen empfangen oder eine Ausgabe für Ausgabevorrichtungen, so beispielsweise eine Präsentationsvorrichtung 612, bereitstellen. Ein oder mehrere Busse 606 sind ebenfalls in dem Rechensystem 600 beinhaltet. Der Bus 606 koppelt eine oder mehrere Komponenten eines jeden jeweiligen Rechensystems 600 kommunikationstechnisch.
-
Das Rechensystem 600 führt Programmcode 615 aus, der den Prozessor 602 dafür konfiguriert, einen oder mehrere der hier beschriebenen Vorgänge durchzuführen. Beispiele für den Programmcode 615 beinhalten bei verschiedenen Ausführungsformen die für blaues Rauschen gegebene herunterskalierende Engine 110 oder andere geeignete Anwendungen, die einen oder mehrere der hier beschriebenen Vorgänge durchführen. Der Programmcode kann auf der Speichervorrichtung 604 oder einem beliebigen geeigneten computerlesbaren Medium residieren und kann von dem Prozessor 602 oder einem beliebigen anderen geeigneten Prozessor ausgeführt werden.
-
Das Rechensystem 600 kann auf beliebige geeignete Weise auf Programmdaten 616 (beispielsweise das Eingabebild 112) zugreifen. Bei einigen Ausführungsformen werden eines oder mehrere dieser Datensätze, Modelle und Funktionen in derselben Speichervorrichtung (beispielsweise einer der Speichervorrichtungen 604) gespeichert. Bei zusätzlichen oder alternativen Ausführungsformen werden eines oder mehrere der Programme, Datensätze, Modelle und Funktionen, die hier beschrieben sind, in verschiedenen Speichervorrichtungen 604 gespeichert, die über ein Datennetzwerk zugänglich sind.
-
Das Rechensystem 600 beinhaltet zudem eine Netzwerkschnittstellenvorrichtung 610. Die Netzwerkschnittstellenvorrichtung 610 beinhaltet eine beliebige Vorrichtung oder Gruppe von Vorrichtungen, die dafür geeignet sind, eine drahtgebundene oder drahtlose Datenverbindung zu einem oder mehreren Datennetzwerken 614 herzustellen. Nichtbeschränkende Beispiele für die Netzwerkschnittstellenvorrichtung 610 beinhalten einen Ethernet-Netzwerkadapter, ein Modem und dergleichen mehr. Das Rechensystem 600 kann mit einer oder mehreren anderen Rechenvorrichtungen über ein Datennetzwerk 614 unter Nutzung der Netzwerkschnittstellenvorrichtung 610 kommunizieren. Beispiele für das Datennetzwerk 614 beinhalten unter anderem das Internet, ein Ortsbereichsnetzwerk, ein drahtloses Bereichsnetzwerk, ein drahtgebundenes Bereichsnetzwerk, ein Großbereichsnetzwerk und dergleichen mehr.
-
Bei einigen Ausführungsformen beinhaltet das Rechensystem 600 zudem die Präsentationsvorrichtung 612, die in 6 dargestellt ist. Die Präsentationsvorrichtung 612 kann eine beliebige Vorrichtung oder Gruppe von Vorrichtungen beinhalten, die dafür geeignet sind, eine visuelle, akustische oder andere geeignete sensorische Ausgabe bereitzustellen (beispielsweise die Anzeigevorrichtung 130). Nichtbeschränkende Beispiele für die Präsentationsvorrichtung 612 beinhalten einen berührungsempfindlichen Schirm, einen Monitor, einen Lautsprecher, eine separate mobile Rechenvorrichtung und dergleichen mehr. Bei einigen Aspekten kann die Präsentationsvorrichtung 612 auch eine Remote-Client-Rechenvorrichtung beinhalten, die mit dem Rechensystem 600 unter Nutzung eines oder mehrerer der hier beschriebenen Datennetzwerke kommuniziert. Bei anderen Aspekten kann die Präsentationsvorrichtung 612 auch weggelassen sein.
-
Allgemeine Betrachtungen
-
Es sind hier zahlreiche spezifische Details dargestellt, um ein eingehendes Verständnis des beanspruchten Erfindungsgegenstandes zu ermöglichen. Einem Fachmann auf dem einschlägigen Gebiet erschließt sich jedoch, dass der beanspruchte Erfindungsgegenstand auch ohne diese spezifischen Details umgesetzt werden kann. In anderen Fällen sind Verfahren, Einrichtungen oder Systeme, die einem Durchschnittsfachmann bekannt sind, nicht beschrieben worden, um den beanspruchten Erfindungsgegenstand nicht unklar zu machen.
-
Es ist - außer, es ist expliziert anders angegeben - davon auszugehen, dass in der vorliegenden Beschreibung Erläuterungen unter Nutzung von Begriffen wie „Verarbeiten“, „Rechnen“, „Berechnen“, „Bestimmen“ und „Identifizieren“ oder dergleichen Handlungen oder Prozesse einer Rechenvorrichtung, so beispielsweise eines oder mehrerer Computer oder einer ähnlichen elektronischen Rechenvorrichtung oder solcher Vorrichtungen betreffen, die Daten manipulieren oder umwandeln, die als physische, elektronische oder magnetische Größen innerhalb von Ablagen, Registern oder anderen Informationsspeichervorrichtungen, Übertragungsvorrichtungen oder Anzeigevorrichtungen der Rechenplattform dargestellt werden.
-
Das System oder die Systeme, die hier beschrieben werden, sind nicht auf eine bestimmte Hardwarearchitektur oder Konfiguration beschränkt. Eine Rechenvorrichtung kann eine beliebige geeignete Anordnung von Komponenten beinhalten, die ein Ergebnis liefern, das von einer oder mehreren Eingaben abhängt. Geeignete Rechenvorrichtungen beinhalten mikroprozessorbasierte Mehrzweckrechensysteme, die auf gespeicherte Software zugreifen, die das Rechensystem von einer Allzweckrechenvorrichtung zu einer spezialisierten Rechenvorrichtung, die eine oder mehrere Ausführungsformen des vorliegenden Erfindungsgegenstandes implementiert, programmiert oder konfiguriert. Es können eine beliebige geeignete Programmierung, ein solches Scripting oder ein anderer Typ von Sprache oder eine Kombination von Sprachen benutzt werden, um die hier enthaltene Lehre in Software zu implementieren, die beim Programmieren oder Konfigurieren einer Rechenvorrichtung benutzt wird.
-
Ausführungsformen der hier beschriebenen Verfahren können im Betrieb derartiger Rechenvorrichtungen zum Einsatz kommen. Die Reihenfolge der Blöcke, die bei den vorstehenden Beispielen dargestellt ist, kann abgewandelt sein. So können Blöcke beispielsweise umgeordnet, kombiniert und/oder in Teilblöcke zerlegt werden. Bestimmte Blöcke oder Prozesse können auch parallel durchgeführt werden.
-
Die Nutzung von „ausgelegt für“ oder „konfiguriert für“ ist offen und einschließend gemeint, was Vorrichtungen nicht ausschließt, die zur Durchführung zusätzlicher Aufgaben oder Schritte ausgelegt oder konfiguriert sind. Zudem ist die Nutzung von „auf Grundlage von“ dahingehend offen und einschließend gemeint, dass ein Prozess, ein Schritt, eine Berechnung oder eine andere Handlung „auf Grundlage“ einer oder mehrerer dargestellter Bedingungen oder Werte in der Praxis auch auf zusätzlichen Bedingungen oder Werten über die angeführten hinausgehend beruhen kann. Überschriften, Listen und Nummerierungen, die hier enthalten sind, dienen lediglich der einfacheren Erläuterung und sind nicht beschränkend gemeint.
-
Obwohl der vorliegende Erfindungsgegenstand detailliert anhand spezifischer Ausführungsformen beschrieben worden ist, sollte einsichtig sein, dass ein Fachmann auf dem Gebiet beim Erwerb eines Verständnisses für das Vorbeschriebene ohne Weiteres Abwandlungen, Änderungen und Äquivalente bezüglich der Ausführungsformen konzipieren kann. Entsprechend sollte einsichtig sein, dass die vorliegende Offenbarung nur zu Beispielszwecken und nicht zu Beschränkungszwecken aufgeführt ist und das Einschließen derartiger Abwandlungen, Änderungen und/oder Hinzufügungen beim vorliegenden Erfindungsgegenstand nicht ausschließt, wie sich einem Durchschnittsfachmann auf dem einschlägigen Gebiet ohne Weiteres erschließt.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- „Multi-class Blue Noise Sampling“ von Li-Yi Wei, veröffentlicht bei ACM Trans. Graph. 29, 4, Article 79 (Juli 2010) [0028]