-
Gebiet der Erfindung
-
Die vorliegende Erfindung bezieht sich auf Graphikverarbeitung und insbesondere auf das Reduzieren von Rauschen in graphischen Bildern.
-
Hintergrund
-
Hardware-Rasterisierungs-Pipelines waren höchst erfolgreich beim Rendern von komplexen Szenen. Jedoch haben sie im Allgemeinen Schwierigkeiten, manche physikalischen Kameraeffekte zu reproduzieren, wie beispielsweise Fokussierungsunschärfe, Bewegungsunschärfe, etc. Unglücklicherweise erzeugen aktuelle Implementierungen von Graphikrenderern unverzerrte aber verrauschte Bilder von Szenen, die die fortgeschrittenen Kameraeffekte von Bewegungs- und Defokussierungsunschärfe und mögliche andere Effekte wie Transparenz aufweisen. In ähnlicher Weise erzeugen auch Strahlverfolgungsprogramme und Kameras oft verrauschte Bilder, die Bewegungs-/Defokussierungsunschärfe, Transparenz, etc. aufweisen.
-
Nur beispielhaft wurden kürzlich Fortschritte beim Verwenden von stochastischen Techniken zum interaktiven Rendern erzielt, einschließlich dem Herstellen der vorher erwähnten Kameraeffekte, indem das Zentrum der Projektion und/oder die Zeit pro Abtastwert (sample) zufällig variiert wird, wie in üblichen Offline-Rendersystemen. Unglücklicherweise ist, bei interaktiven Frameraten, die Anzahl von Zufallssamples, die in der vorhersehbaren Zukunft verfügbar ist, nicht ausreichend, um unter Verwendung von einfachen unverzerrten Sample-Durchschnittsberechnungen visuell glatte Bilder zu erzeugen. Es gibt daher ein Bedürfnis, diese und/oder andere Aspekte, die mit dem Stand der Technik assoziiert sind, zu behandeln.
-
Zusammenfassung
-
Ein System, Verfahren und Computerprogrammprodukt werden bereitgestellt, um Rauschen in einem Bild unter Verwendung von tiefenbasiertem Entlangstreichen (sweeping) über Bildabtastwerte (image samples) zu reduzieren. Im Einsatz wird jedes verrauschte Pixel eines Bildes, das Rauschen aufweist, identifiziert. Zusätzlich wird für jedes verrauschte Pixel zumindest ein Abtastwert (sample), der in jedem einer Mehrzahl von benachbarten Pixeln zu dem verrauschten Pixel enthalten ist, identifiziert. Des Weiteren wird über die Samples zumindest teilweise in einer tiefenbasierten (depth-based) Reihenfolge entlanggestrichen (sweep over), um einen Wert für das verrauschte Pixel zu identifizieren, der das Rauschen reduziert.
-
Kurze Beschreibung der Zeichnungen
-
1 stellt ein Verfahren zum Reduzieren von Rauschen in einem Bild unter Verwendung von tiefenbasiertem Entlangstreichen über Bildsamples gemäß einer Ausführungsform dar.
-
2 stellt ein Verfahren zum Reduzieren von Rauschen in einem verrauschten Pixel unter Verwendung einer tiefenbasierten Anordnung von Samples, die mit Bezug auf das verrauschte Pixel identifiziert sind, gemäß einer anderen Ausführungsform dar.
-
3 stellt ein Verfahren zum Entlangstreichen über Samples, die mit Bezug auf das verrauschte Pixel in einer tiefenbasierten Reihenfolge identifiziert sind, gemäß wiederum einer anderen Ausführungsform dar.
-
4 stellt ein beispielhaftes System dar, in dem die unterschiedliche Architektur und/oder Funktionalität der unterschiedlichen vorherigen Ausführungsformen implementiert werden kann.
-
Detaillierte Beschreibung
-
1 stellt ein Verfahren 100 zum Reduzieren von Rauschen in einem Bild gemäß einer Ausführungsform dar, wobei tiefenbasiertes (depth-based) Entlangstreichen (sweeping) über Bildabtastwerte (image samples) verwendet wird. Wie in Operation 102 gezeigt, wird jedes verrauschte Pixel eines Bildes identifiziert, das Rauschen aufweist. Mit Bezug auf die vorliegende Beschreibung kann das Bild irgendein graphisch gerendertes Bild oder fotographisch erfasstes Bild (zum Beispiel durch eine Digitalkamera) aufweisen, das das Rauschen aufweist. Beispielsweise kann solches Rauschen ein oder mehrere unerwünschte Artefakte aufweisen, wie unten detaillierter beschrieben wird.
-
Zu diesem Zweck kann das verrauschte Pixel ein Pixel des Bildes sein, das zumindest einen Teilbereich des (der) unerwünschten Artefakts (Artefakte) des Bilds aufweist (zum Beispiel anzeigt). In einer Ausführungsform kann das Rauschen daher resultieren, dass das Bild zumindest ein transparentes Objekt aufweist (d. h., wobei das Pixel verwendet wird, um zumindest einen Teilbereich des transparenten Objekts darzustellen). In wiederum einer anderen Ausführungsform kann das Rauschen aus Unschärfe resultieren, die in dem Bild enthalten ist (zum Beispiel ein unscharfer Bereich, der in dem Bild enthalten ist). Solche Unschärfe kann Bewegungsunschärfe oder Schärfentiefe-Unschärfe enthalten.
-
Mit Bezug auf die Schärfentiefe-Unschärfe kann das Rauschen daher resultieren, dass das Bild ein unscharfes Objekt aufweist, das vor einem scharfen (das heißt scharf eingestelltes) Objekt ist (das heißt wobei das Pixel verwendet wird, um zumindest einen Teilbereich des unscharfen Objekts vor dem scharfen Objekt darzustellen). Beispielsweise kann solches Rauschen Teilbereiche des scharfen Objekts enthalten, die in das unscharfe Objekt hineinzeigen. Insbesondere kann dieses Artefakt auftreten, wenn beinahe alle der Samples wahrscheinlich von dem vorderen unscharfen Objekt sind, aber aufgrund einer zufälligen Variation es ein oder mehrere Samples von dem scharfen Objekt gibt, die zu dem resultierenden Bild beitragen (zum Beispiel wenn die Variationen visuell offensichtlich sind). Und zwar kann das vorher erwähnte Rauschen von scharfen Merkmalen resultieren, die unter-abgetastet sind.
-
Als eine andere Option kann das Rauschen daher resultieren, dass das Bild ein scharfes Objekt vor einem unscharfen Objekt aufweist, (d. h., wobei das Pixel verwendet wird, um zumindest einen Teilbereich des scharfen Objekts vor dem unscharfen Objekt darzustellen). Beispielsweise kann solches Rauschen Teilbereiche des unscharfen Objekts aufweisen, die in das scharfe Objekt hineinzeigen (zum Beispiel wenn das unscharfe Objekt auf das scharfe Objekt „durchgesickert” ist). Dies kann auftreten, wenn Samples des unscharfen Hintergrundobjekts in benachbarten Pixeln erlaubt wird, den Wert des verrauschten Pixels zu beeinflussen.
-
Zusätzlich wird für jedes verrauschte Pixel zumindest ein Sample, das in jedem einer Mehrzahl von benachbarten Pixeln zu dem verrauschten Pixel enthalten ist, identifiziert. Beachte Operation 104. Die benachbarten Pixel können Pixel innerhalb einer vorbestimmten Nähe zu dem verrauschten Pixel in einer Ausführungsform aufweisen. In einer anderen Ausführungsform können die benachbarten Pixel Pixel aufweisen, die innerhalb eines verrauschten Bereichs des Bilds (d. h. einem Bereich, der Rauschen aufweist) sein, in dem das verrauschte Pixel angeordnet ist.
-
Des Weiteren können die Samples von solchen benachbarten Pixeln jeweils einen Punkt oder Bereich innerhalb eines assoziierten benachbarten Pixels aufweisen. Somit kann jedes Sample Informationen aufweisen, die mit dem Punkt oder Bereich des benachbarten Pixels assoziiert sind. Beispielsweise können die Informationen einen Farbwert (Rot-, Grün- und Blau-Farbwerte) und einen Tiefen(z)-Wert aufweisen.
-
Es sollte beachtet werden, dass die Samples unter Verwendung irgendeines gewünschten vorbestimmten Abtast-Algorithmus (sampling algorithm) identifiziert werden können. In einer Ausführungsform kann der Sampling-Algorithmus, der zum Identifizieren der Samples verwendet wird, den stochastischen Sampling-Algorithmus aufweisen, der in der US-Patentanmeldung Nr. 12/708,443, eingereicht am 18.02.2010, mit dem Titel „System, Method and Computer Program Product for Rendering Pixels With At Least One Semi-Transparent Surface” von Eric Enderton, beschrieben sind. In einer anderen Ausführungsform kann der Sampling-Algorithmus einen Pseudozufalls-Sampling-Algorithmus aufweisen, der in dem
US-Patent Nr. 4897806 , eingereicht am 19.06.1985, mit dem Titel „Pseudo-random Point Sampling Techniques in Computer Graphics” von Cook et al. beschrieben ist. In wiederum einer anderen Ausführungsform kann der Sampling-Algorithmus einen Quasi-Zufalls-Sampling-Algorithmus aufweisen, der in dem
US-Patent Nr. 6529193 , eingereicht am 23.06.1997, mit dem Titel „System and method for generating pixel values for pixels in an image using strictly deterministic methodologies for generating sample points” von Herkin et al. beschrieben ist.
-
Des Weiteren, wie in Operation 106 gezeigt, wird über die Samples zumindest teilweise in einer tiefenbasierten Reihenfolge entlanggestrichen, um einen Wert für das verrauschte Pixel zu identifizieren, der das Rauschen reduziert. Beispielsweise kann der Wert des verrauschten Pixels einen Farbwert für das verrauschte Pixel aufweisen. Indem der Wert für das verrauschte Pixel identifiziert wird, kann das verrauschte Pixel unter Verwendung des identifizierten Werts rekonstruiert werden (d. h. von seinem Anfangszustand in Operation 102). Beispielsweise kann das verrauschte Pixel gerendert werden oder anderweitig zur Darstellung unter Verwendung des identifizierten Wertes erzeugt werden. Mehr Informationen über das Bestimmen eines solchen Wertes werden unten detaillierter beschrieben.
-
In einer Ausführungsform kann die tiefenbasierte Reihenfolge, mit der zumindest teilweise über die Samples entlang gestrichen wird, eine Vorne-nach-Hinten-Reihenfolge (front-to-back order) aufweisen. Beispielsweise kann das Verarbeiten der Samples, um den Wert für das verrauschte Pixel zu identifizieren, in der Vorne-nach-Hinten-Reihenfolge durchgeführt werden, so dass ein vorderstes Sample (das heißt ein Sample mit einem vordersten Tiefenwert) zuerst verarbeitet wird, ein nächstes vorderstes Sample als zweites verarbeitet wird usw. Natürlich kann, wie oben erwähnt, über die Samples auch in einer teilweisen (das heißt angenäherten) tiefenbasierten Reihenfolge entlang gestrichen werden, wobei über alle der Samples entlang gestrichen wird, aber nur über einen Teilbereich in der tiefenbasierten Reihenfolge entlang gestrichen wird. Ein solcher Teilbereich kann vorbestimmt sein (zum Beispiel jedes andere Sample) oder die Art, in der die Samples (angenähert) tiefenbasiert angeordnet sind, kann vorbestimmt sein, wie gewünscht. Somit kann über die Samples optional in der (angenäherten) Vorne-nach-Hinten-Reihenfolge nur einmal entlang gestrichen werden.
-
In einer anderen Ausführungsform kann der Wert für das verrauschte Pixel unter Verwendung einer Akkumulierung identifiziert werden, die mit Bezug auf das Entlangstreichen der Samples durchgeführt wird. Eine solche Akkumulierung kann das Anpassen eines Filtergewichts basierend auf einem Filtergewicht, das für jedes der Samples bestimmt wird, aufweisen. In der vorliegenden Ausführungsform kann das Filtergewicht für ein Sample direkt proportional zu einem Pegel von Unschärfe (oder Transparenz in dem Fall von Rauschen aufgrund eines transparenten Objekts) des Samples sein. Beispielsweise kann das Filtergewicht für das erste Sample in der tiefenbasierten Reihenfolge identifiziert werden und des Weiteren für jedes nachfolgende Sample in der tiefenbasierten Reihenfolge basierend auf dem Filtergewicht von solchen nachfolgenden Samples angepasst werden.
-
In einer beispielhaften Ausführungsform kann ein Filtergewicht, das mit einem Pegel an Unschärfe für das erste Sample in der tiefenbasierten Reihenfolge assoziiert ist, als das aktuelle Filtergewicht identifiziert werden, ein Filtergewicht, das mit einem Pegel von Unschärfe für ein zweites Sample in der tiefenbasierten Reihenfolge assoziiert ist, kann identifiziert werden und verwendet werden, um das bereits angepasste aktuelle Filtergewicht anzupassen, ein Filtergewicht, das mit einem Pegel an Unschärfe für ein drittes Sample in der tiefenbasierten Reihenfolge assoziiert ist, kann identifiziert werden und verwendet werden, um das bereits angepasste Filtergewicht anzupassen, etc., bis ein Filtergewicht, das mit einem Pegel von Unschärfe für ein letztes Sample in der tiefenbasierten Reihenfolge assoziiert ist, identifiziert ist und verwendet wird, um das bereits angepasste aktuelle Filtergewicht anzupassen. Somit kann das aktuelle Filtergewicht für jedes Sample aktualisiert werden, bis ein finales bzw. endgültiges Filtergewicht bestimmt ist.
-
Das endgültige Filtergewicht kann einen Bereich anzeigen, der mit dem verrauschten Pixel assoziiert ist, von dem Samples zur Verwendung beim Identifizieren des Wertes für das verrauschte Pixel auszuwählen sind. Beispielsweise kann das endgültige Filtergewicht anzeigen, welches der benachbarten Pixel den Wert des verrauschten Pixels beeinflussen wird, so dass die identifizierten Samples Von diesen benachbarten Pixeln (von Operation 104) verwendet werden (zum Beispiel gemittelt), um den Wert für das verrauschte Pixel zu identifizieren.
-
Zu diesem Zweck kann der Bereich, der benachbarte Pixel aufweist, von denen Samples zur Verwendung beim Berechnen des Werts für das verrauschte Pixel ausgewählt werden, dynamisch ausgewählt werden. Eine solche dynamische Auswahl kann daher ermöglichen, dass unterschiedliche verrauschte Pixel durch unterschiedlich große Bereiche beeinflusst werden, um damit durch unterschiedliche Zahlen von Samples, die von der Zahl von benachbarten Pixeln in diesen Bereichen abhängen. Immer noch kann, indem die Zahl von Samples, die zu dem Wert des verrauschten Pixels beitragen, erhöht wird, das verrauschte Pixel unscharf sein (oder unschärfer sein, wenn das verrauschte Pixel bereits unscharf ist), so dass eine entrauschende Unschärfe effektiv für das verrauschte Pixel bereitgestellt wird. Beispielsweise, wenn das Rauschen des Bilds ein Ergebnis eines unscharfen Bereichs ist, der in dem Bild enthalten ist, kann das Erhöhen der Zahl von Samples, die zu dem Wert des verrauschten Pixels beitragen, es ermöglichen, dass das verrauschte Pixel in einer Weise rekonstruiert wird, dass zusätzliche Unschärfe zu dem unscharfen Bereich bereitgestellt wird (das heißt durch das rekonstruierte verrauschte Pixel). Diese zusätzliche Unschärfe kann vorzugsweise für Betrachter des Bildes sein, da das Rauschen in dem Bild durch das Einschließen der zusätzlichen Unschärfe verringert wird.
-
Weitere beispielhafte Informationen werden nun mit Bezug auf verschiedene optionale Architekturen und Merkmale, mit denen das vorhergehende Rahmenwerk implementiert werden kann oder auch nicht, je nach den Wünschen des Benutzers, dargelegt werden. Es sollte stark beachtet werden, dass die folgenden Informationen zu beispielhaften Zwecken dargelegt werden und nicht als in irgendeiner Weise beschränkend betrachtet werden sollten. Beliebige der folgenden Merkmale können optional mit oder ohne den Ausschluss von anderen beschriebenen Merkmalen eingebaut werden.
-
2 stellt ein Verfahren 200 zum Reduzieren von Rauschen in einem verrauschten Pixel unter Verwendung einer tiefenbasierten Anordnung von Samples, die mit Bezug auf das verrauschte Pixel identifiziert sind, gemäß einer anderen Ausführungsform dar. Als eine Option kann das Verfahren 200 in dem Kontext von 1 ausgeführt werden. Natürlich kann jedoch das Verfahren 200 in irgendeiner anderen gewünschten Umgebung durchgeführt werden. Es sollte auch beachtet werden, dass die vorher erwähnten Definitionen durch die vorliegende Beschreibung hindurch angewendet werden können.
-
Wie in Operation 202 gezeigt, wird ein verrauschtes Pixel eines Bildes, das Rauschen aufweist, identifiziert. Es sollte beachtet werden, dass, während das vorliegende Verfahren 200 mit Bezug auf ein einzelnes Pixel beschrieben wird, das Verfahren 200 für jedes verrauschte Pixel in dem Bild durchgeführt werden kann. Auf diese Weise kann das Verfahren 200 verwendet werden, um Rauschen des Bildes zu reduzieren, indem ein Rauschen, das mit jedem verrauschten Pixel in dem Bild assoziiert ist, reduziert wird.
-
Zusätzlich, wie in Operation 204 gezeigt, wird eine Mehrzahl von benachbarten Pixeln zu dem verrauschten Pixel identifiziert. Beispielsweise kann ein verrauschter Bereich des Bildes, in dem das verrauschte Pixel angeordnet ist, identifiziert werden. Andere Pixel innerhalb eines solchen Bereichs, die auch Rauschen aufweisen, können als eine Option als die benachbarten Pixel zu dem verrauschten Pixel identifiziert werden.
-
Des Weiteren wird zumindest ein Sample, das in jedem der benachbarten Pixeln enthalten ist, identifiziert, wobei ein vorbestimmter Sampling-Algorithmus verwendet wird. Beachte Operation 206. In einer Ausführungsform kann die Anzahl von Samples, die von jedem der benachbarten Pixel identifiziert wird, vorherbestimmt sein. In einer anderen Ausführungsform kann der Ort von solchen Samples von innerhalb jedes der benachbarten Pixeln durch den vorbestimmten Sampling-Algorithmus bestimmt werden.
-
Wiederum, wie in Operation 208 gezeigt, sind die Samples tiefenangeordnet. Die Samples können tiefenangeordnet sein unter Verwendung von Tiefeninformation, die für jedes der Samples bestimmt wird, wenn die Samples identifiziert werden. Beispielsweise kann die Identifkation der Samples das Identifizieren von Informationen, die die Samples beschreiben, aufweisen, wie Farbinformationen und Tiefeninformationen. In einer Ausführungsform kann die Tiefenanordnung eine Vorne-nach-Hinten-Anordnung aufweisen, so dass ein Sample der mindesten Tiefe zuerst in der Reihenfolge ist und ein Sample einer höchsten Tiefe zuletzt in der Reihenfolge ist.
-
Des Weiteren kann über die Samples in der Tiefenreihenfolge entlanggestrichen werden, um einen Wert für das verrauschte Pixel zu identifizieren, der das Rauschen des Bildes reduziert. Beachte Operation 210. Eine Ausführungsform des Entlangstreichens über die Samples wird unten mit Bezug auf das Verfahren 300 von 3 beschrieben.
-
Es sollte beachtet werden, dass, als eine andere Option, die identifizierten Samples in einer Mehrzahl von tiefenangeordneten Behältern platziert werden können, wobei jeder der Behälter eingerichtet ist, Samples innerhalb eines unterschiedlichen Tiefenbereichs zu speichern (so dass die Samples innerhalb eines Behälters nicht notwendigerweise in irgendeiner bestimmten Reihenfolge gespeichert sind). Beispielsweise, wenn das Bild eine Schärfentiefe aufweist, kann ein erster Behälter in der Reihenfolge Samples einer Tiefe über einer Fokusebene (d. h. außerhalb des Fokus) speichern, ein zweiter Behälter in der Reihenfolge kann Samples in der Fokusebene (d. h. im Fokus) speichern, und ein dritter Behälter kann Samples unterhalb der Fokusebene (d. h. außerhalb des Fokus) speichern. Somit kann ein Sample in einem der Behälter gemäß einer Bestimmung, dass die Tiefe des Samples innerhalb des Tiefenbereichs, der mit dem Behälter assoziiert ist, ist, platziert werden.
-
Zu diesem Zweck kann das Entlangstreichen über die Samples das Gruppieren (binning) der Samples, wie oben beschrieben, und das Entlangstreichen über die Behälter (bins) in der tiefenbasierten Reihenfolge aufweisen. Optional kann das Verfahren 300 von 3 auf die Behälter in einer anderen Ausführungsform angewendet werden. Beispielsweise können die Filtergewichte der unsortierten Samples innerhalb jedes Behälters akkumuliert werden (zum Beispiel ohne Bezug auf irgendeine bestimmte Tiefenreihenfolge). Die akkumulierten Filtergewichte für jeden der Behälter können dann basierend auf der Tiefenordnung der Behälter kombiniert werden, zum Identifizieren des Wertes für das verrauschte Pixel. Indem die Behälter auf diese Weise verwendet werden, kann der Wert des verrauschten Pixels mit weniger Sortierung und weniger Berechnung identifiziert werden, als wenn alle der Samples tiefensortiert sind.
-
3 stellt ein Verfahren 300 zum Entlangstreichen über Samples, die mit Bezug auf das verrauschte Pixel identifiziert sind, in einer tiefenbasierten Reihenfolge gemäß wiederum einer anderen Ausführungsform dar. Als eine Option kann das vorliegende Verfahren 300 in dem Kontext der Funktionalität und Architektur von 1 bis 2 durchgeführt werden. Beispielsweise kann das Verfahren 300 mit Bezug auf die Operation 210 von 2 durchgeführt werden. Natürlich kann jedoch das Verfahren 300 in irgendeiner gewünschten Umgebung ausgeführt werden. Wiederum sollte beachtet werden, dass die vorher erwähnten Definitionen durch die vorliegende Beschreibung hindurch angewendet werden können.
-
Wie in Operation 302 gezeigt, wird ein erstes Sample in einer tiefenbasierten Reihenfolge identifiziert. Das erste Sample kann ein Sample aufweisen, das von benachbarten Pixeln eines verrauschten Pixels identifiziert ist, welches einen niedrigsten Tiefenwert aufweist. Beispielsweise kann das erste Sample das erste Sample in der Tiefenreihenfolge aufweisen, die oben mit Bezug auf Operation 208 von 2 beschrieben wurde.
-
Des Weiteren wird ein Filtergewicht, das mit dem ersten Sample assoziiert ist, identifiziert. Beachte Operation 304. Mit Bezug auf die vorliegende Ausführungsform zeigt das Filtergewicht, das mit dem ersten Sample assoziiert ist, einen Bereich (zum Beispiel einen kreisförmigen Bereich, einen rechteckigen Bereich, oder irgendeine andere vorbestimmte Form), der das erste Sample umgibt, an. Beispielsweise kann das Filtergewicht, das mit dem ersten Sample assoziiert ist, einen Wert eines Radius von dem ersten Sample oder einen Durchmesser des Bereichs aufweisen, wobei das erste Sample in der Mitte des Bereichs ist.
-
In einer Ausführungsform kann das Filtergewicht für das erste Sample eine direkte Funktion eines Pegels von Unschärfe des Samples sein. Beispielsweise, wenn sich der Pegel von Unschärfe (oder in dem Fall von Transparenz der Pegel von Transparenz) erhöht, kann sich das Filtergewicht ähnlich erhöhen. Als eine Option kann jedes einer Mehrzahl von Filtergewichten auf einen unterschiedlichen Pegel von Unschärfe abgebildet werden, der fähig ist, mit einem Sample assoziiert zu werden. Als eine weitere Option können die Filtergewichte durch einen Benutzer für die variierenden Pegel der Unschärfe konfiguriert werden (zum Beispiel wenn die Pegel einen einzelnen Unschärfewert oder einen Bereich von Unschärfewerten aufweisen).
-
Beispielsweise kann das Filtergewicht irgendeine programmierer-ausgewählte Funktion von Sampletiefe, Bewegung, Transparenz, Texturfrequenzinhalt, oder sogar gestalterische Variablen wie visuelle Wichtigkeit sein. In einer Ausführungsform kann das Filtergewicht der Kreis von Konfusion an der Tiefe des ersten Samples sein. Somit kann der Pegel von Unschärfe für das erste Sample optional bestimmt werden und das assoziierte Filtergewicht identifiziert werden.
-
Zusätzlich, wie in der Entscheidung 306 gezeigt, wird bestimmt, ob es ein nächstes Sample in der tiefenbasierten Reihenfolge gibt. Wenn es ein nächstes Sample gibt, wird das Filtergewicht (d. h. bestimmt mit Bezug auf das vorherige Sample in der tiefenbasierten Reihenfolge) basierend auf einem Filtergewicht, das mit dem nächsten Sample assoziiert ist, angepasst. Beachte Operation 308. Dementsprechend kann, für jedes nachfolgende Sample in der tiefenbasierten Reihenfolge, das Filtergewicht basierend auf einem Filtergewicht für jedes nachfolgende Sample angepasst werden, und das endgültige angepasste Filtergewicht kann als ein Filtergewicht identifiziert werden, das mit einem gewünschten Pegel an Unschärfe assoziiert ist.
-
Lediglich als Beispiel kann das Filtergewicht des ersten Samples unter Verwendung des Filtergewichts eines nächsten Samples in der tiefenbasierten Reihenfolge angepasst werden (um ein erstes angepasstes Filtergewicht zu erzeugen), dieses erste angepasste Filtergewicht kann des Weiteren unter Verwendung des Filtergewichts eines anderen nächsten Samples in der tiefenbasierten Reihenfolge angepasst werden (um ein zweites angepasstes Filtergewicht zu erzeugen), dieses zweite angepasste Filtergewicht kann des Weiteren unter Verwendung des Filtergewichts von wiederum einem anderen nächsten Sample in der tiefenbasierten Reihenfolge angepasst werden (um ein drittes angepasstes Filtergewicht zu erzeugen), usw.
-
Es sollte beachtet werden, dass eine solche Anpassung auf irgendeinem gewünschten Algorithmus basiert werden kann, der die tiefenbasierte Anordnung der Samples berücksichtigt. Beispielsweise kann ein scharfes Sample in Isolation mit einem Filtergewicht, das einen schmalen Bereich darstellt, assoziiert werden, aber wenn weitere unscharfe Sample vor dem scharfen Sample sind, kann das Filtergewicht erhöht werden, so dass dieser Bereich vergrößert wird. Als ein anderes Beispiel kann ein unscharfes Hintergrund-Sample mit einem Filtergewicht assoziiert werden, das einen großen Bereich darstellt, aber wenn weitere scharfe Sample vor dem unscharfen Sample sind, kann das Filtergewicht verringert werden, so dass dieser Bereich verringert wird.
-
Sobald festgestellt wird, dass es kein anderes Sample in der tiefenbasierten Reihenfolge gibt, wird ein finales Filtergewicht angewendet, um eine Mehrzahl von anwendbaren benachbarten Samples zu bestimmen. Beachte Operation 310. In dem Kontext der vorliegenden Ausführungsform kann das endgültige Filtergewicht das Filtergewicht, das mit dem gewünschten Pegel an Unschärfe assoziiert ist, aufweisen, wie oben beschrieben wurde. Somit kann beispielsweise, wenn der gewünschte Pegel an Unschärfe größer als Null ist (das heißt manche Unschärfe erwünscht ist), das Filtergewicht größer als ein vorgegebenes Filtergewicht sein, das andernfalls verwendet wird, um einen Wert eines Pixels ohne Rauschen zu identifizieren (das heißt für welches Unschärfe nicht angewendet wird).
-
Wie oben erwähnt, kann jedes Filtergewicht einen Bereich anzeigen, der das assoziierte Sample umgibt. Somit kann das endgültige Filtergewicht verwendet werden, um einen Bereich zu bestimmen, der das verrauschte Pixel umgibt. Es kann dann bestimmt werden, welches der Samples in der tiefenbasierten Reihenfolge in dem Bereich enthalten sind, und die Samples, die bestimmt sind, in dem Bereich zu sein, können als die anwendbaren benachbarten Samples identifiziert werden. Zu diesem Zweck können benachbarte Samples, die auf das verrauschte Pixel anwendbar sind, basierend auf dem endgültigen Filtergewicht, das mit dem gewünschten Pegel an Unschärfe für das verrauschte Pixel assoziiert ist, identifiziert werden.
-
Nach wie vor sind Werte der anwendbaren benachbarten Samples gemittelt. Beachte Operation 312. Solche Werte können die Farbwerte der anwendbaren benachbarten Samples in der vorliegenden Ausführungsform aufweisen. Das Ergebnis der Durchschnittsberechnung kann ein Wert für das verrauschte Pixel sein. Beispielsweise kann ein solcher Wert verwendet werden, um das verrauschte Pixel zu rekonstruieren. Natürlich sollte beachtet werden, dass irgendein anderer Algorithmus als eine Durchschnittsberechnung auf die Werte angewendet werden kann, um einen Wert für das verrauschte Pixel zu erzeugen.
-
Tabelle 1 zeigt ein Beispiel eines Algorithmus, der fähig ist, verwendet zu werden, um das Verfahren 300 von 3 zu implementieren. Natürlich sollte beachtet werden, dass der Algorithmus, gezeigt in Tabelle 1, nur zu beschreibenden Zwecken dargelegt wird und somit nicht als irgendeiner Weise beschränkend aufgefasst werden sollte.
-
-
In dem Algorithmus gezeigt in Tabelle 1 ist D die Breite des Filtergewichts, die einen großen Bereich darstellt (das heißt ein breiter Filter), und Filtergewicht, das einen kleineren Bereich darstellt (das heißt der schmale Filter), ist der vorgegebene Filter, der für nicht-unscharfe Pixel verwendet wird. Wenn alle Samples dasselbe Filtergewicht haben, verhält sich der Algorithmus wie gewünscht und entweder ein schmaler oder ein breiter Unschärfedurchmesser wird für alle Samples verwendet. Wenn es unscharfe Samples vor scharfen Samples gibt, wird ein Filter mit einem breiteren Gewicht für die scharfen Samples wie gewünscht verwendet. Wenn manche der zentralen Pixel scharf sind (fn verwenden), dann wird der Beitrag von unscharfen Hintergrundpixeln gemindert. Als eine Option können die „if”-Anweisungen in dem Algorithmus gemischt werden (zum Beispiel in dem Sinn von MIPmaps) oder Anweisungen für zusätzliche Zwischenskalierungen (das heißt Filtergewichte) können hinzugefügt werden, um einen visuellen Bruch in Objekten zu verhindern, die in und aus dem Fokus herausgehen.
-
Tabelle 2 stellt einen Sweeping-Algorithmus dar, der verwendet werden kann, der zwischen zwei Skalierungen vermischt: 1 × 1 und 5 × 5 Blöcke. In Tabelle 2 ist N die Anzahl von Samples in der breitesten Kachel und ns ist die Anzahl von Samples in einem Pixel. Als eine Standardeinstellung ist entrauschende Unschärfe das Maximum des Kreises von Konfusionsdurchmesser und, wenn Bewegungsunschärfe geglättet werden soll, die Länge des projizierten Bewegungsvektors in Pixeln.
-
-
Tabelle 3 stellt einen Sweeping-Algorithimus dar, der verwendet werden kann, wenn die Blockgrößen 1 × 1 und 7 × 7 sind, und wenn es einen sichtbaren Sprung zwischen den Skalierungen gibt. Wie gezeigt, werden die Zwischenskalierungen 3 × 3 und 5 × 5 als eine Verbesserung bereitgestellt.
-
-
4 stellt ein beispielhaftes System 400 dar, in dem die unterschiedliche Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden kann. Wie gezeigt, wird ein System 400 bereitgestellt, das zumindest einen Host-Prozessor 401 aufweist, der mit einem Kommunikationsbus 402 verbunden ist. Das System 400 weist auch einen Hauptspeicher 404 auf. Kontrolllogik (Software) und Daten werden in dem Hauptspeicher 404 gespeichert, der die Form eines Zufallszugriffsspeicher (RAM) annehmen kann.
-
Das System 400 weist auch einen Graphikprozessor 406 und ein Display 408, das heißt einen Computermonitor, auf. In einer Ausführungsform kann der Graphikprozessor 406 eine Mehrzahl von Schattierermodulen, ein Rasterisierungsmodul, etc. aufweisen. Jedes der vorhergehenden Module kann auch auf einer einzelnen Halbleiterplattform gelegen sein, um eine Graphikverarbeitungseinheit (GPU) zu bilden.
-
In der vorliegenden Beschreibung kann eine einzelne Halbleiterplattform sich auf eine einzelne einheitliche halbleiterbasierte integrierte Schaltung oder Chip beziehen. Es sollte beachtet werden, dass der Begriff einzelne Halbleiterplattform sich auch auf Mehrchipmodule mit erhöhter Konnektivität beziehen kann, die On-Chip-Operation simulieren, und wesentliche Verbesserungen über das Verwenden einer herkömmlichen zentralen Verarbeitungseinheit (CPU) und einer Busimplementierung bereitstellen können. Natürlich können die verschiedenen Module auch separat oder in verschiedenen Kombinationen der Halbleiterplattformen je nach den Wünschen des Benutzers gelegen sein.
-
Das System 400 kann auch einen Sekundärspeicher 410 aufweisen. Der Sekundärspeicher 410 weist beispielsweise ein Festplattenlaufwerk und/oder ein entfernbares Speicherlaufwerk auf, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Kompaktdiskettenlaufwerk, etc. darstellt. Das entfernbare Speicherlaufwerk liest von einer entfernbaren Speichereinheit und/oder schreibt auf eine entfernbare Speichereinheit in einer bekannten Weise.
-
Computerprogramme oder Computersteuerlogikalgorithmen können in dem Hauptspeicher 404 und/oder dem Sekundärspeicher 410 gespeichert werden. Solche Computerprogramme ermöglichen es, wenn sie ausgeführt werden, dass das System 400 verschiedene Funktionen durchführt. Der Speicher 404, Speicher 410 und/oder irgendein anderer Speicher sind mögliche Beispiele von computerlesbaren Medien.
-
In einer Ausführungsform können die Architektur und/oder Funktionalität der verschiedenen vorherigen Figuren in dem Kontext des Host-Prozessors 401, des Graphik-Prozessors 406, einer integrierten Schaltung (nicht gezeigt), die zumindest von einem Teil der Fähigkeiten sowohl des Host-Prozessors 401 als auch des Graphik-Prozessors 406 fähig ist, einen Chipsatz (das heißt eine Gruppe von integrierten Schaltungen, die entworfen sind, um als eine Einheit zu arbeiten und verkauft zu werden, um zusammengehörige Funktionen durchzuführen, etc.), und/oder irgendeine andere integrierte Schaltung für diese Angelegenheit implementiert werden.
-
Immer noch können die Architektur und/oder Funktionalität der verschiedenen vorherigen Figuren in dem Kontext eines allgemeinen Computersystems, eines Leiterplattensystems, eines Spielkonsolensystems, das für Unterhaltungszwecke bestimmt ist, eines anwendungsspezifischen Systems und/oder irgendeines anderen gewünschten Systems implementiert werden. Beispielsweise kann das System 400 die Form eines Desktop-Computers, eines Laptop-Computers und/oder irgendeiner anderen Art von Logik annehmen. Immer noch kann das System 400 die Form von verschiedenen anderen Vorrichtungen annehmen, einschließlich aber nicht beschränkt auf eine persönliche digitale Assistenz(PDA)-Vorrichtung, eine Mobiltelefon-Vorrichtung, einen Fernseher, etc.
-
Des Weiteren, obwohl nicht gezeigt, kann das System 400 mit einem Netzwerk (zum Beispiel einem Telekommunikationsnetzwerk, einem lokalen Netzwerk (LAN), einem kabellosen Netzwerk, einem Weitverkehrsnetzwerk (WAN) wie dem Internet, einem Punkt-zu-Punkt-Netzwerk, einem Kabelnetzwerk, etc.) für Kommunikationszwecke gekoppelt werden.
-
Die folgenden Konzepte sind in der Beschreibung enthalten:
-
Konzept 1. Ein Computerprogrammprodukt, das auf einem nicht-flüchtigen computerlesbaren Medium verkörpert ist, aufweisend: Computercode zum Identifizieren jedes verrauschten Pixels eines Bildes, das Rauschen aufweist; Computercode zum Identifizieren, für jedes verrauschte Pixel, von zumindest einem Sample, das in jedem einer Mehrzahl von benachbarten Pixeln zu dem verrauschten Pixel enthalten ist; und Computercode zum Entlangstreichen über die Samples zumindest teilweise in einer tiefenbasierten Reihenfolge, um einen Wert für das verrauschte Pixel zu identifizieren, der das Rauschen verringert.
-
Konzept 2. Das Computerprogrammprodukt von Konzept 1, wobei das Rauschen zumindest ein unerwünschtes Artefakt aufweist, so dass das verrauschte Pixel zumindest einen Teilbereich von dem zumindest einem unerwünschten Artefakt des Bildes aufweist.
-
Konzept 3. Das Computerprogrammprodukt von Konzept 1, wobei das Rauschen aus einer Schärfentiefe-Unschärfe, die in dem Bild enthalten ist, resultiert.
-
Konzept 4. Das Computerprogrammprodukt von Konzept 1, wobei das Rauschen aus einer Bewegungsunschärfe, die in dem Bild enthalten ist, resultiert.
-
Konzept 5. Das Computerprogrammprodukt von Konzept 1, wobei das Rauschen daraus resultiert, dass das Bild zumindest ein transparentes Objekt aufweist.
-
Konzept 6. Das Computerprogrammprodukt von Konzept 1, wobei die benachbarten Pixel Pixel innerhalb einer vorbestimmten Nähe zu dem verrauschten Pixel aufweisen.
-
Konzept 7. Das Computerprogrammprodukt von Konzept 1, wobei das Computerprogrammprodukt betreibbar ist, so dass das zumindest eine Sample unter Verwendung eines vorbestimmten Sampling-Algorithmus identifiziert wird.
-
Konzept 8. Das Computerprogrammprodukt von Konzept 1, wobei das zumindest eine Sample einen Punkt innerhalb des benachbarten Pixels aufweist.
-
Konzept 9. Das Computerprogrammprodukt von Konzept 1, wobei die tiefenbasierte Reihenfolge eine Vorne-nach-Hinten-Reihenfolge aufweist.
-
Konzept 10. Das Computerprogrammprodukt von Konzept 1, wobei das Computerprogrammprodukt betreibbar ist, so dass das Entlangstreichen über die Samples aufweist: Bestimmen eines Filtergewichts, das mit einem gewünschten Pegel von Unschärfe assoziiert ist; Bestimmen eines Bereichs, der das verrauschte Pixel umgibt, wobei das Filtergewicht verwendet wird; und Bestimmen, welche der Samples in dem Bereich enthalten sind; und Mitteln der Samples, die in dem Bereich enthalten sind, um den Wert für das verrauschte Pixel zu identifizieren.
-
Konzept 11. Das Computerprogrammprodukt von Konzept 10, wobei das Computerprogrammprodukt betreibbar ist, so dass das Filtergewicht, das mit dem gewünschten Pegel an Unschärfe assoziiert ist, bestimmt wird durch: Identifizieren eines Filtergewichts eines ersten der Samples in der tiefenbasierten Reihenfolge; für jedes nachfolgende Sample in der tiefenbasierten Reihenfolge, Anpassen des Filtergewichts basierend auf einem Filtergewicht von jedem nachfolgenden Sample; und Identifizieren des angepassten Filtergewichts als das Filtergewicht, das mit dem gewünschten Pegel an Unschärfe assoziiert ist.
-
Konzept 12. Das Computerprogrammprodukt von Konzept 10, wobei das Filtergewicht einen Bereich angibt, der das verrauschte Pixel umgibt.
-
Konzept 13. Das Computerprogrammprodukt von Konzept 10, wobei der Bereich einen von einem kreisförmigen Bereich und von einem rechteckigen Bereich aufweist.
-
Konzept 14. Das Computerprogrammprodukt von Konzept 13, wobei das Filtergewicht ein Wert eines Radius von dem verrauschten Pixel ist.
-
Konzept 15. Das Computerprogrammprodukt von Konzept 11, wobei das Filtergewicht von jedem der Samples eine direkte Funktion eines Pegels von Unschärfe des Samples ist.
-
Konzept 16. Das Computerprogrammprodukt von Konzept 11, wobei das Computerprogrammprodukt betreibbar ist, so dass, wenn der gewünschte Pegel an Unschärfe größer als Null ist, dann das Filtergewicht größer als ein vorgegebenes Filtergewicht ist, das verwendet wird, um einen Wert eines Pixels ohne Rauschen zu identifizieren.
-
Konzept 17. Das Computerprogrammprodukt von Konzept 1, wobei das Computerprogrammprodukt betreibbar ist, so dass das Entlangstreichen über die Samples das Gruppieren der Samples und das Entlangstreichen über die Behälter in der tiefenbasierten Reihenfolge aufweist.
-
Konzept 18. Das Computerprogrammprodukt von Konzept 1, weiterhin aufweisend das Rekonstruieren des verrauschten Pixels unter Verwendung des identifizierten Wertes.
-
Konzept 19. Das Computerprogrammprodukt von Konzept 1, wobei das Rauschen ein Ergebnis eines unscharfen Bereichs ist, der in dem Bild enthalten ist, und der identifizierte Wert für das verrauschte Pixel zusätzliche Unschärfe zu dem unscharfen Bereich bereitstellt.
-
Konzept 20. Ein Verfahren, aufweisend: Identifizieren von jedem verrauschten Pixel eines Bildes, das Rauschen aufweist; Identifizieren, für jedes verrauschte Pixel, von zumindest einem Sample, das in jeder einer Mehrzahl von benachbarten Pixel zu dem verrauschten Pixel enthalten ist; und Entlangstreichen über die Samples zumindest teilweise in einer tiefenbasierten Reihenfolge, um einen Wert für das verrauschte Pixel zu identifizieren, der das Rauschen reduziert.
-
Konzept 21. Eine Vorrichtung, aufweisend: Einen Prozessor zum: Identifizieren von jedem verrauschten Pixel eines Bildes, das Rauschen aufweist; Identifizieren, für jedes verrauschte Pixel, von zumindest einem Sample, das in jeder einer Mehrzahl von benachbarten Pixeln zu dem verrauschten Pixel enthalten ist; und Entlangstreichen über die Samples zumindest teilweise in einer tiefenbasierten Reihenfolge, um einen Wert für das verrauschte Pixel zu identifizieren, der das Rauschen reduziert.
-
Konzept 22. Die Vorrichtung von Konzept 21, wobei der Prozessor in Kommunikation mit einem Speicher und einem Display über einen Bus bleibt.
-
Obwohl oben verschiedene Ausführungsformen beschrieben wurden, sollte verstanden werden, dass sie nur als Beispiel dargestellt wurden und nicht als Beschränkung. Somit sollten die Breite und der Schutzumfang einer vorgezogenen Ausführungsform nicht durch irgendeines der oben beschriebenen beispielhaften Ausführungsformen beschränkt werden, sondern sollten nur in Übereinstimmung mit den folgenden Ansprüchen und ihren Äquivalenten definiert werden.
-
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 Patentliteratur
-
- US 4897806 [0015]
- US 6529193 [0015]