-
Diese
Erfindung bezieht sich auf das Gebiet der künstlichen Bilderzeugung.
-
Es
gibt viele Verfahren die verwendet werden können, um künstliche Bilder zu erzeugen,
die vom einfachen „Ausschneiden
und Einfügen" von Teilen von Fotos
bzw. Ablichtungen bis zur computergestützten Erzeugung von Darstellungen
bzw. Ansichten von 3D-Modellen
reichen. Die meisten Verfahren, die gegenwärtig benutzt werden, tendieren
dazu, Bilder zu erzeugen, als würden
sie durch eine einfache Lochkamera mit einer unendlichen Schärfentiefe
(der Bereich von Kameraobjektiv-Abständen über den bzw. die das Bild scharf
ist) betrachtet, sodass alle Objekte perfekt im Fokus zu sein scheinen.
Dies kann die Bilder unrealistisch aussehen lassen.
-
Um
den Realismus von solchen künstlichen
Bildern zu verbessern, ist es wünschenswert,
die defokussierenden Effekte, die mit einer realen Kamera vorkommen,
zu simulieren. Objekte, die näher
zur, oder weiter weg von der Kamera sind als der Abstand, auf den
die Kamera fokussiert ist, werden in einem Maße unscharf (verschwommen),
das vom Abstand des Objektes und der Apertur (Iris bzw. Blende)
der Kamera abhängt. Wenn
die Apertur der Kamera klein ist, wird die Tiefenschärfe groß, und wenn
die Apertur groß ist,
wird die Tiefenschärfe
klein.
-
Angenommen,
dass man ein perfektes Kameraobjektiv mit einer kreisförmigen bzw.
einer kreisrunden Apertur hat und Beugungseffekte vernachlässigt, wird
jeder Punkt in einem Objekt defokussiert und in der Bildebene zu
einer Scheibe. Diese Scheibe, auch bekannt als „Zerstreuungskreis" bzw. „Unschärfekreis", weist eine Größe auf,
die vom Abstand des Objektes vom Objektiv und von der Apertur des
Objektivs abhängt:
wenn das Objekt „im
Fokus" ist, reduziert
sich die Scheibe zu einem Punkt. Das endgültige Bild ist die Überlagerung von
all diesen „Scheiben", welche von jedem
Punkt der Szene resultieren (unter Berücksichtigung des Effektes,
dass Vordergrund-Objekte Hintergrund-Objekte verdecken bzw. vernebeln).
-
In
Situationen, bei denen alle Punkte in dem Bild denselben Grad an
Defokussierung erfordern, kann dies relativ leicht durch „Falten" (engl.: convolving)
des Bildes mit einem geeigneten Filter erreicht werden. Zum Beispiel
können
einige DVEs (digitale Video-Effekt-Vorrichtungen) dies in Echtzeit für Standard-Übertragungs-Video-Signale
zur Anwendung bringen. Die Punkt-Verteilungs-Funktion (d.h. der
Filter-Kern bzw. Filter-Kernel) sollte grundsätzlich kreisförmig sein
(entsprechend zu dem „Zerstreuungskreis" bzw. „Unschärfekreis"), obwohl es für DVEs üblich ist,
eine rechteckige Apertur einzusetzen, da dies zu einer effizienteren Hardware-Ausführung im
Tausch gegen weniger Realismus führt.
-
Jedoch
wird das synthetische Bild im allgemeinen Fall Objekte in einem
Tiefenbereich enthalten, von denen jedes in einem anderen Umfang
defokussiert werden sollte. Es ist im Grunde unmöglich solch ein Bild so zu
verarbeiten, wie man es mittels einer Kamera mit endlicher Apertur
sehen würde,
weil einige der Informationen verloren gegangen sein werden. Zum
Beispiel erscheint ein Vordergrund-Objekt an seinen Kanten nicht
länger
völlig
undurchsichtig wenn es aus dem Fokus ist, deshalb verdeckt es den
Hintergrund nicht vollständig.
Da einiges von diesem Hintergrund in dem Originalbild nicht vorhanden
ist (es war durch den scharf fokussierten Vordergrund verdeckt),
kann er niemals neu erstellt werden.
-
Ein
Ansatz zu diesem Problem, welcher in Situationen anwendbar ist,
bei denen das synthetische Bild durch einen Computer berechnet wird,
um einer Darstellung bzw. Ansichten eines 3D-Modells zu entsprechen, ist,
eher den Effekt der Tiefenschärfe
während
des Rendering-Prozesses zu simulieren, als einen gesonderten Prozess
zu verwenden, nachdem das Bild gerendert worden ist. Dies kann durch
Berechnen etlicher Darstellungen bzw. Ansichten von der Szene von
unterschiedlichen Punkten geschehen, wobei innerhalb der Apertur der
Kamera modelliert wird, und die resultierenden Bilder gemittelt
werden. Dies simuliert direkt den Effekt von der finiten Kamera-Apertur
und ermöglicht
es, ein sehr realistisches Bild zu erzeugen, wenn eine große Anzahl mit
engem Zwischenraum angeordneter Darstellungspunkte bzw. Ansichtspunkten
verwendet wird. Dies erfordert jedoch eine riesige Menge an zusätzlichen
Berechnungen, verglichen mit Rendern des Bildes von einem einzigen
Darstellungspunkt aus. Das Nettoergebnis hiervon ist im Allgemeinen,
dass die Gesamtqualität
des Bildes, das gerendert werden kann, für einen gegebenen Betrag von
Verarbeitungskapazität,
gemindert wird. Dies kann eher in einer Reduzierung des Realismus
als in einer Verbesserung des endgültigen Bildes enden.
-
Ein
alternatives Verfahren ist, das ursprüngliche scharfe Bild unter
der Steuerung eines Tiefensignals, welches den Abstand von der Kamera
des Objektes an jedem Punkt in dem Bild anzeigt, zu filtern. Dieses
Signal kann dazu benutzt werden, um die Größe des Filterkerns bzw. Filter-Kernels
zu steuern, mit welchem das Bild gefaltet wird. Diese Idee wurde
in einer Veröffentlichung
mit dem Titel „Synthetische
Bilderzeugung mit einem Linsen- und Apertur Kamera-Modell" von M. Potmesil
und I. Chakravarty in ACM Transaction of Graphics, Vol. 1 No. 2,
April 1982, pp. 85–108,
vorgeschlagen. Es wurde die Verwendung einer kreisförmigen Punkt-Ausbreitungs-Funktion
vorgeschlagen, abhängig
vom Abstand des Bildpunktes von der Kamera und der Fokus-Einstellung
und Tiefenschärfe
von der Kamera. Die Veröffentlichung
schlug ebenfalls vor, dass jeder Bildpunkt bzw. Pixel im eingegebenen
Bild seine Helligkeit bzw. Intensität auf Pixel im ausgegebenen
Bild gemäß der Punkt-Ausbreitungs-Funktion,
passend für
die Tiefe von diesem Pixel, verteilen sollte. Auf diese Weise erfahren
Objekte, die in einer Tiefe sind, welche der Kamera-Fokus-Einstellung
entspricht, kein Verwackeln, wohingegen solche in anderen Abständen in
einem Umfang passend zu diesem Abstand, verwackelt sind. Jedoch
führt dieser
Prozess an Grenzlinien zwischen Objekten in unterschiedlichen Tiefen
nicht zu zufrieden stellenden Ergebnissen.
-
Betrachtet
man zum Beispiel die Situation, die in 1 gezeigt
ist. Die Abbildung zeigt einen weißen Kreis mit einer schwarzen
Linie rund um seine Kante (wie zum Beispiel eine weiße Untertasse
mit einem schwarzen Rand) vor einem weißen Hintergrund mit einer horizontalen
schwarzen Linie darauf gezogen. Das eingegebene Bild zeigt sowohl
den Vordergrund als auch den Hintergrund scharf, wie in (a) gezeigt.
Die Tiefenabbildung ist in (b) gezeigt, und zwar mit einer dunkleren
Schattierung, die die Fläche
zeigt, die weiter weg ist. Wenn der Vordergrund-Kreis im Fokus ist
und der Hintergrund aus dem Fokus ist, ist in 2(a) das
ideale ausgegebene Bild mit der hell schattierten Fläche gezeigt,
welches das Verwackeln der horizontalen Linie zeigt. Das ideale
Bild mit dem Hintergrund im Fokus, ist in 2(b) gezeigt,
mit der dunkel schattierten Fläche, welche
das Verwackeln des Rings zeigt. Wenn das Bild mit einem früher beschriebenen
Verfahren des Stands der Technik verarbeitet wird, wird das Bild
in 3(a) mit dem Vordergrund im Fokus
verarbeitet, und 3(b) mit dem Hintergrund
im Fokus. Die Linie im Hintergrund in 3(a) hat
sich falsch in die Fläche
des Kreises ausgebreitet, da jeder Punkt in dem eingegebenen Bild
(einschließlich
solcher, die sofort an die Kante des Kreises angrenzen) sich gemäß seinem
Abstand zur Kamera ausbreitet. Subjektiv gesehen ist dies sehr ärgerlich. Das
Verhalten in 3(b) ist weniger störend, jedoch
mit dem einzigen Mangel, welcher ist, dass die scharfe Linie im
Hintergrund nur bis einschließlich
der halben Breite des Verwackelns bzw. Verschwimmens sichtbar ist,
als vielmehr der gesamten Breite, wie im Idealfall in 2(b) gezeigt.
-
Dieses
Stand-der-Technik-Verfahren hat ein weiteres Manko: es ist in Echtzeit
Hardware schwer zu implementieren. Dies ist so, weil es „eingabe-getrieben" ist; Das heißt, der
Beitrag zum ausgegebenen Bild eines jeden eingegebenen Beispiels
bzw. Eingabesamples wird eines nach dem anderen berechnet. Es ist
erforderlich einen wahlweise zugreifbaren Bild-Speicher zu verwenden,
um das verarbeitete Bild aufzubauen, und da jedes eingegebene Beispiel
bzw. Eingabesample zu vielen zehn (oder sogar hunderten) von ausgegebenen
Beispielen bzw. Ausgabesamples beitragen kann, würde der Speicher eine extrem
hohe Eingabe/Ausgabe Bandbreite aufweisen müssen. Eine viel günstigere
Architektur ist eine, die „ausgabe-getrieben" ist, wobei jedes
ausgegebene Beispiel der Reihe nach von den eingegebenen Beispielen
in dem umgebenden Bereich berechnet wird. Diese Architektur kann
implementiert werden, wobei ein konventioneller zweidimensionaler,
begrenzt auf einen Impuls ansprechender Filter bzw. FIR-Filter:
verwendet wird, dessen Reaktion bzw. Antwort von Beispiel bzw. Sample
zu Beispiel bzw. Sample gemäß eines
Steuerungssignals wechselt, welches von der Tiefenabbildung und
der Kamera-Tiefenschärfe
abgeleitet wird.
-
Die
einfachste Ausführung
eines „ausgabe-getriebenen" defokussierenden
Algorithmus würde
jedes ausgegebene Beispiel bzw. Sample durch Anwendung eines Filters
auf das eingegebene Bild, erzeugen, auf die Mitte des auszugebenden
Beispiels bzw. Ausgabesamples eingestellt, dessen Form die der Punkt-Ausbreitungs-Funktion
für ein
Objekt in dieser Tiefe war. Das Verhalten von diesem Algorithmus
wird in 4(a) und 4(b) gezeigt.
Man kann sehen, dass er sich im Vergleich zu dem „eingabe-getriebenen" Algorithmus in beiden Fällen schwach
verhält.
In dem Fall, bei welchem der Hintergrund defokussiert ist, 4(a), ist die äußere Kante des Vordergrund-Objektes
in den Hintergrund hinein verschwommen bzw. verwackelt, weil die
Bildpunkte im Hintergrund alle von einem Groß-Apertur-Filter abgeleitet
sind, welcher einige der Vordergrund-Kreise für Punkte nahe seiner Kanten
umfasst. In dem Fall, bei welchem der Vordergrund defokussiert ist, 4(b), erscheint die äußere Kante eines Kreises scharf,
wenn sie verschwommen bzw. verwackelt sein sollte, weil die Beispiele
rund um die Kante von einem Filter erhalten werden, der kein Verwackeln
bzw. Verschwimmen ausführt,
welcher durch die Tiefe des Hintergrundes gesteuert ist. Beide Effekte
sind subjektiv inakzeptabel.
-
Dieses
sehr schwache Verhalten deutet an, dass ein ausgabe-getriebener
Prozess ungeeignet ist, um Defokussierung auszuführen.
-
US 5 570 433 und WO 96/14621
beschreiben unterschiedliche Verfahren, um defokussierende Effekte in
Bildern bereitzustellen.
-
Es
ist ein Ziel der vorliegenden Erfindung ein verbessertes Verfahren
bereitzustellen, um Tiefenschärfe-Effekte
in einem synthetischen Bild zu simulieren.
-
Es
ist ein weiteres Ziel (of aspects) der vorliegenden Erfindung, ein
Verfahren zur Simulation von Tiefenschärfe-Effekten in einem synthetischen
Bild bereitzustellen, welches eine effiziente Hardware-Implementierung
erlaubt.
-
Dementsprechend
besteht die vorliegende Erfindung in einem Aspekt in einem Verfahren,
um Tiefenschärfe-Effekte
in einem synthetischen Bild zu simulieren, in welchem Bildpunkte
bzw. Pixel in einem räumlichen
Ausmaß verschwommen
bzw. verwackelt sind, welches durch eine Tiefenabbildung für das Bild
durch Anwendung eines defokussierenden Filters, welcher Informationen
aus einer Vielzahl von eingegebenen Pixel aufnimmt, um jeden auszugebenden
Pixel zu erzeugen, bestimmt wird, wobei das räumliche Ausmaß des Verschwimmens
bzw. Verwackelns eines Hintergrund-Pixels, der an einen Vordergrund-Pixel
angrenzt, in Übereinstimmung
mit der räumlichen
Ausdehnung des Verschwimmens oder Verwackelns des Vordergrund-Pixels modifiziert
wird, und dem Abstand zwischen dem Hintergrund-Pixel und dem Vordergrund-Pixel
in der Bildebene.
-
Wir
haben erkannt, dass es wichtig ist, die relative Tiefe von Objekten
in einem Bild zu berücksichtigen, bevor
es einem Objekt ermöglicht
wird, über
einem anderen zu verschwimmen bzw. zu verwackeln. Speziell an einer
Grenze zwischen zwei Objekten von unterschiedlicher Tiefe ist es
wichtig sicherzustellen, dass das Objekt am nächsten zur Kamera den vorrangigen
Effekt auf die Art und Weise hat, wie sich das Verschwimmen bzw.
Verwackeln in seiner Umgebung durchsetzt.
-
Wir
haben auch erkannt, dass es ein Verfahren gibt, um das Verhalten
des Filters in einem „ausgabe-getriebenen" System zu modifizieren,
um es zu ermöglichen,
dieses Prinzip ein- bzw. umzusetzen. Dieses Verfahren ändert die
Größe der Filter-Apertur
nahe Grenzen in der Tiefenabbildung, um sicherzustellen, dass das
Objekt am nächsten
zur Kamera den vorrangigen Effekt auf die Art und Weise hat, wie
sich das Verschwimmen bzw. Verwackeln in seiner Umgebung durchsetzt.
Falls ein Vordergrund-Objekt im Fokus ist, wird die Filter-Apertur in Bereichen
des Hintergrunds nahe dem Vordergrund-Objekt verkleinert, sodass
nichts vom Vordergrund innerhalb der Apertur ist. Dies stellt sicher,
dass die Kante des Vordergrund-Objekts scharf bleibt, was subjektiv
wichtig ist. Es hat ebenso den Nebeneffekt des Erzeugens eines „Lichthofs" von scharfem Hintergrund
rund um ein Vordergrund-Objekt, aber dies ist subjektiv dem Vordergrund-Entmischen
(engl: bleeding) in den Hintergrund vorzuziehen. Dieser Effekt ist
in 5(a) gezeigt. Falls der Hintergrund
im Fokus ist, wird die Filter-Apertur in Bereichen des Hintergrunds
nahe dem Vordergrund-Objekt vergrößert, sodass etwas Vordergrund
in die Apertur aufgenommen wird. Dies hat den Effekt des Weichmachens
der Kante des verschwommenen bzw. verwackelten Vordergrund-Objekts,
was subjektiv wichtig ist. Dies wird in 5(b) gezeigt.
-
Die
Erfindung wird nun als Beispiel mit Bezug auf die beigefügten Zeichnungen
beschrieben, für
die gilt:
-
1 bis 5 zeigen
ein stilisiertes eingegebenes Bild mit seiner Tiefenabbildung und
veranschaulichen den Effekt bestimmter Verfahren gemäß dem bekannten
Stand der Technik und der vorliegenden Erfindung;
-
6 ist
ein Diagramm, welches eine eindimensionale Tiefenabbildung zum Gebrauch
der Veranschaulichung eines Verfahrens gemäß der vorliegenden Erfindung
zeigt;
-
7 veranschaulicht
ein Verfahren gemäß der vorliegenden
Erfindung;
-
8 ist
ein Blockdiagramm, welches Apparate gemäß der vorliegenden Erfindung
zeigt;
-
9 und 10 sind
Diagramme, welche ein modifiziertes Verfahren gemäß der vorliegenden
Erfindung zeigen.
-
Die
bevorzugten Ausführungsformen
der Erfindung, wie in 8 gezeigt, nehmen von einem
Grafik-Prozessor 10 ein Bild, welches statisch oder bewegend
sein kann und aus irgendeiner Quelle sein kann, und eine zugehörige „Tiefenabbildung", welche eine Menge
von Werten stellvertretend für
den Abstand von der virtuellen Kameralinse von jedem Punkt in dem
Bild ist (Oberflächen
werden als undurchsichtig angenommen). Die Tiefenabbildung nimmt
die Form von einem monochromatischen Bild, bei dem sich der Helligkeitswert
auf den Kamera-Objekt Abstand bezieht. Die Informationen in der
Tiefenabbildung werden zusammen mit der Fokus- und Apertur-Einstellung
der „virtuellen" Kamera verwendet,
um ein selektiv-defokussiertes Bild zu erzeugen, welches sich demjenigen
annähert,
welches man durch eine reale Kamera erhalten haben würde.
-
Die
Tiefenabbildung wird zu einem Filter-Apertur-Initialisierungsprogramm 12 gebracht,
welches dem Filter-Apertur-Prozessor 14 eine Filter-Apertur-Abbildung
bereitstellt. Dieser nimmt, wie beschrieben werden wird, sowohl
die anfängliche
Filter-Apertur-Abbildung, als auch die Tiefenabbildung, um eine
verarbeitete Apertur-Abbildung bereitzustellen, welche im Filter 16 verwendet
wird, um an dem Bild zu arbeiten, um ein Ergebnis bzw. einen Output
zu erzeugen.
-
In
einem Bereich eines Bildes, welcher in einem konstanten Abstand
von der Kamera ist, sodass es keine Fälle eines Vordergrund-Objektes
gibt, welches teilweise ein Hintergrund-Objekt verdeckt, ist all dies erforderlich,
um den Effekt eines Bildes zu simulieren, welches nicht im Fokus
ist, um es durch einen Filter mit einer gleichmäßigen kreisförmigen Apertur
einer Größe passieren
zu lassen, die gleich dem Unschärfekreis für diesen
Abstand ist. Diese Größe kann
aus dem Tiefenabbildungs-Wert für
diesen Punkt in den Bild- und den Fokus- und Apertur-Einstellungen der virtuellen
Kamera bestimmt werden und wird im Initialisie rungsprogramm 12 verwendet.
Gibt es keine Änderungen
der Tiefe, wird die kreisförmige
Apertur im Filter 16 mit dem Prozessor 14 verwendet,
welcher keinen Effekt hat.
-
Jedoch
ist es in einem Bereich des Bildes nahe einer Änderung der Tiefe erforderlich,
das Verhalten des Filters wie vorher beschrieben zu modifizieren.
Dies wird im Prozessor 14 durch Ausführen einer gründlichen
Suche nach den berechneten Filter-Apertur-Werten und den Tiefen
für alle
Pixel, die an das gegenwärtige Pixel
sowohl horizontal als auch vertikal angrenzen, mit der maximalen
Apertur des defokussierenden Filters erreicht.
-
Wenn
ein Pixel mit einer Filter-Apertur gefunden wird, deren Radius kleiner
ist als der von der Filter-Apertur des gegenwärtigen Pixels, um eine Differenz,
die größer ist
als der effektive Abstand zwischen den Pixeln, und deren Tiefenwert
kleiner ist als der des gegenwärtigen
Pixels, wird die Filter-Apertur auf einen Radius gleich dem von
anderen Pixeln plus dem Abstand zwischen diesen modifiziert.
-
Ähnlich wird,
wenn ein Pixel mit einer Filter-Apertur gefunden wird, deren Radius
größer ist
als der von der Filter-Apertur des gegenwärtigen Pixels, um eine Differenz,
mehr als der effektive Abstand zwischen den Pixeln, und deren Tiefenwert
kleiner ist als der des gegenwärtigen
Pixels, wird die Filter-Apertur auf einen Radius gleich dem von
anderen Pixeln abzüglich
des Abstands zwischen diesen modifiziert.
-
Dieser
Prozess kann durch die folgende „Pseudocode"-Beschreibung des
funktionalen Blocks in 8 zusammengefasst werden, welcher
bei einem Tiefensignal-Tiefe(x, y) und einem Wert zum Spezifizieren des
Radius des defokussierenden Filters an jedem Punkt, Radius(x, y),
arbeitet:
-
Filter-Apertur-Initialisierungsprogramm
-
Für jeden
Pixel x, y in dem Bild:
Initialisiere Radius(x, y) auf den
Radius des defokussierenden Filters, erforderlich für ein Objekt
in der Tiefe(x, y), gemäß des Kamera-Fokus
und den Tiefenschärfe-Werten.
-
Filter-Apertur-Prozessor
-
Für jede Pixel-Position
(x, y) in dem Bild:
Für
jeden Punkt (x1, y1) um (x, y) herum innerhalb der maximal möglichen
Filter-Apertur:
-
-
-
Filter
-
Berechne
ausgegebenes Beispiel bei (x, y) durch „Falten" des eingegebenen Beispiels mit einem
Filter mit dem Radius Radius(x, y).
-
Dieses
Verhalten ist in den 6 und 7 veranschaulicht.
Das Bild enthält
Objekte in drei unterschiedlichen Tiefen, wie in der Zeichnung des
Tiefenwertes in 6 gezeigt. Die Kamera ist nahe
bzw. dicht auf die mittlere Tiefe fokussiert. Der anfängliche
Radius des defokussierenden Filters, abgeleitet im Initialisierungsprogramm 12,
von dem Tiefenwert bei der entsprechenden Position, wobei Information über die
Tiefenschärfe
der Kamera und dem Abstand, auf den die Kamera fokussiert ist, in
der dünnen
durchgezogenen Linie in 7 gezeigt ist. Dieser Wert wird
dann in Prozessor 14 gemäß des oben beschriebenen Verfahrens
modifiziert, welches die dicke durchgezogene Linie von 7 zeigt.
Es gibt drei Radien a, b und c für
den defokussierenden Filter, entsprechend den drei Objekt-Tiefen.
-
Für die Pixel
in dem mit P bezeichneten Bereich gibt es Pixel in dem links angrenzenden
Bereich, deren Tiefe-Wert kleiner ist und deren Radius des defokussierenden
Filters größer als
der Abstand von diesen Pixeln ist. Deshalb wird der Radius des defokussierenden
Filters für
die Pixel in dem Bereich P vergrößert. Dies wirkt
sich auf Pixel bis zu einem Abstand von der Kante von (c–a) aus,
welches die Differenz in den Radien des defokussierenden Filters
in den angrenzenden Bereichen ist. Dies stellt sicher, dass sich
manches von dem verschwommenen bzw. verwackelten Vordergrund über die
linke Seite des Objekts im Fokus erstreckt.
-
Für die Pixel
in dem Bereich Q gibt es Pixel in dem links angrenzenden Bereich,
deren Tiefe-Wert
kleiner ist und deren Radius des defokussierenden Filters kleiner
als der Abstand von diesen Pixeln ist. Deshalb wird der Radius des
defokussierenden Filters für
die Pixel in dem Bereich Q verkleinert. Dies wirkt sich auf Pixel bis
zu einem Abstand von der Kante von (b–a) aus, welches die Differenz
in den Radien des defokussierenden Filters in den angrenzenden Bereichen
ist. Dies stellt sicher, dass die rechte Kante des scharfen Bereichs
niemals in die Filter-Apertur fällt,
welche dazu verwendet wird, um den Hintergrund zu defokussieren,
wobei diese Kante scharf bleibt.
-
Die
obige Beschreibung geht davon aus, dass der defokussierende Filter
immer eine kreisrunde Apertur aufweist. Die Apertur bleibt in ihrer
Größe kreisrund,
wenn sie an den Grenzen in der Tiefenabbildung vergrößert oder
verkleinert wird, wie oben erklärt.
Um jedoch ein korrektes Verhalten an Tiefen-Grenzen sicher zu stellen,
ist es lediglich erforderlich, den Teil der Filter-Apertur zu vergrößern oder
zu verkleinern, welcher auf einen Teil des Bildes mit niedrigerem
Tiefenwert fällt.
Der obige Ansatz modifiziert die Filter-Apertur mehr als notwendig,
um dies zu erreichen, da die Apertur eher überall in ihrer Größe vergrößert oder
verkleinert wird, um dies zu erreichen, als nur in dem Bereich des
Bildes, welches den niedrigeren Tiefenwert aufweist. Dies hat den
Vorteil, leichter implementierbar zu sein, da der Filter, der bei
jedem Pixel zu verwenden ist, durch nur eine Zahl vollständig spezifiziert
ist (dem Radius). Der Nachteil ist, dass das Ausmaß des Filterns
um mehr verändert
wird als notwendig ist, um ein korrektes Verhalten an einer Kante
zum Ergebnis zu haben, woraus eine größere Veränderung als erforderlich bei
den Bereichen, die an die Kanten angrenzen, resultiert. Verwendet
man komplexere Verarbeitungen, würde
es möglich
sein, nur Teile der Filter-Apertur zu ändern, wobei dieses Problem
reduziert würde.
-
Betrachtet
man zum Beispiel die Situation, die in 9 gezeigt
ist. Die Filter-Apertur 20,
die dazu verwendet wird, um den Hintergrund 22 zu verschwimmen
bzw. zu verwackeln, ist mit verkleinertem Radius gezeigt, da die
Kante des scharfen Vordergrund-Objekts 24 erreicht
wird, gemäß der oben
beschriebenen Ausführungsform.
Diese weist das korrekte Verhalten auf, soweit es das Vordergrund-Objekt
betrifft, aber führt
zu einer größeren Abnahme
in der Defokussierung als erforderlich, die auf den Hintergrund
angewendet wird, und zwar rund um die Kante. Umgekehrt ist in 10 die
Apertur des defokussierenden Filters nur in dem Bereich eingeschränkt, wo
sie das Vordergrund-Objekt einschließen würde. Dies hält das korrekte Verhalten an
der Kante des Vordergrund-Objektes aufrecht, mit einer minimalen
Abnahme im Umfang des Defokussierens, das auf den Hintergrund-Bereich
angewendet wird, und zwar um das Vordergrund-Objektes herum. Die
resultierende Filter-Apertur ist in 26 gezeigt.
-
Auf
diese Weise hat diese Ausführungsform
eine Verbesserung im Verhalten an den Kanten im Tausch gegen ein
komplexeres System der Filter-Apertur-Steuerung zur Folge. Um diesen
Ansatz zu implementieren, wird der oben beschriebene Prozess wie
folgt modifiziert. Für
jeden Pixel wird der Koeffizient in der Filter-Apertur anfänglich basierend
auf der Tiefe des Pixels berechnet, ohne die angrenzenden Pixel
zu betrachten. In dem Pseudocode unten werden diese Werte in dem
Feld Apertur (x1, y1) gespeichert, wobei x1, y1 die Positionen des
Punktes in der Filter-Apertur relativ zur Position des berechneten
ausgegebenen Pixels ist. Das Feld wird dann durch Prüfen des
anfänglichen
Wertes des Radius und des Tiefenwertes der umgebenden Pixel modifiziert.
Nach dem Testen aller Pixel innerhalb des maximal möglichen
Radius des gegenwärtigen
Pixels, wird das Feld normiert (durch die Summe alle Koeffizienten
geteilt), um einen Einheits-Zuwachs bzw. -Steigerung sicher zu stellen.
Der Pixel in dem ausgegebenen Bild wird dann durch „Falten" des eingegebenen
Bildes mit den Filter-Koeffizienten erzeugt.
-
Filter-Apertur-Initialisierungsprogramm
-
Für jeden
Pixel x, y in dem Bild:
Initialisiere Radius(x, y) auf den
Radius des defokussierenden Filters, der für ein Objekt in der Tiefe(x,
y) erforderlich ist, gemäß des Kamera-Fokus
und dem Wert der Tiefenschärfe.
-
Filter-Apertur Prozessor
-
Für jede Pixel-Position
(x, y) in dem Bild:
Initialisiere Apertur(x1, y1) zur Einheit
in dem Bereich rund um einen Abstand vom Radius(x, y), vom Mittelpunkt,
und Null darüber
hinaus;
Für
jeden Punkt (x1, y1) rund um (x, y) innerhalb der maximal möglichen
Filter-Apertur:
-
-
Filter
-
Berechne
das auszugebende Beispiel bei (x, y) durch „Falten" des eingegebenen Bildes mit den Filterkoeffizienten
in Apertur.
-
Offensichtlich
gibt es Ausführungsformen
die zwischen den beiden hier beschriebenen Extremen liegen. Zum
Beispiel könnte
die taugliche Apertur in vier Quadranten aufgeteilt werden, wobei
jeder Quadrant, falls erforderlich, in der Größe zu reduzieren ist; dann
könnte
der Filter durch vier Werte vollständig spezifiziert werden, eher
als durch einen, in dem einfachen Fall, oder durch einen binären Wert
für jedes
potenzielle Pixel in der Apertur des komplexen Falles.
-
Es
wird verstanden sein, dass diese Erfindung nur als Beispiel beschrieben
wurde und dass eine große
Vielfalt von Modifikationen möglich
ist, ohne vom Geltungsbereich dieser Erfindung abzuweichen. Der
Apparat, der in 8 gezeigt ist – als ein
spezielles Beispiel – kann
eine Anzahl unterschiedlicher Ausgestaltungen annehmen. Wenn es
zweckmäßig ist,
können
der Betrieb des Filter-Apertur-Initialisierungsprogramms und der
Filter-Apertur Prozessor mit einer Software durchgeführt werden,
die auf dem Grafik-Prozessor 10 läuft.