Beschreibung
Titel
VERFAHREN ZUM SKALIEREN VON VIDEODATEN UND EINE ANORDNUNG ZUR DURCHFUHRUNG DES
VERFAHRENS
Die Erfindung betrifft ein Verfahren zur Bearbeitung von Videodaten, ein Verfahren zum Darstellen von Videodaten und eine Anordnung zur Durchführung des Verfahrens zur Bearbeitung von Videodaten. Stand der Technik
Zur Steuerung der Bildschirmanzeige in Rechenanlagen bzw. Computern werden Grafikkarten verwendet. Üblicherweise berechnet bei Ausführung eines Programms der Prozessor bzw. die CPU der Rechenanlage die Daten und leitet die- se an die Grafikkarte weiter. Die Grafikkarte wandelt die Daten derart um, dass der Monitor die Daten als Bild wiedergeben kann.
Üblicherweise werden Videodaten entweder vollständig auf der zentralen Recheneinheit (CPU) vorskaliert und dann auf die Grafikkarte übertragen oder das vollständige Videobild wird an die Grafikkarte übertragen und dort auf die Zielauflösung skaliert.
In Video-Überwachungs-Systemen müssen sehr viele Videosequenzen parallel auf einem Monitor dargestellt werden. Sollen bspw. 25 HD Videos (Auflösung z. B. 1280 x 720) mit 60 Hz dargestellt werden, so müssen 1500 Texturen auf die
Grafikkarte übertragen werden, was einer Transferrate von 2 GByte/Sekunde entspricht. Um die 25 HD Videos in voller Auflösung auf dem Monitor darstellen zu können, müsste dieser eine Gesamt-Auflösung von 6400 x 3600 besitzen.
Hochauflösende Monitore besitzen jedoch in der Regel eine wesentlich geringere Maximal-Auflösung von bspw. 1920 x 1200 Pixeln. Würde mit einem klassischen
Verfahren das Videomaterial auf der CPU skaliert werden, so wäre eine Übertra-
gungsrate von 207 MByte/Sekunde ausreichend. Dieses Vorgehen hat jedoch den Nachteil, dass die CPU, die bereits mit dem Dekodieren und anderen Aufgaben beschäftigt ist, auch noch die Video-Skalierung durchführen muss. Eine hochwertige Bildskalierung um einen beliebigen Skalierungs-Faktor ist allerdings eine für die CPU aufwendige Operation.
Die Druckschrift DE 10 2005 046 664 A1 beschreibt ein Verfahren zur Erzeugung eines flexiblen Anzeigebereichs für ein Videoüberwachungssystem. Dabei um- fasst der Anzeigebereich ein Hauptfenster, in das eine Anzahl von Informations- fenstern einblendbar ist. Ein Umschalten eines Bedieners erfolgt durch eine
Auswahl und eine Größenänderung eines Informationsfensters. Mit dem beschriebenen Verfahren wird eine Mensch-Maschine-Schnittstelle realisiert, die eine übersichtliche Darstellung bei gleichzeitiger guter Anpassungsmöglichkeit an die jeweilige Anwendung bietet. Dabei werden Videoinformationen derart gra- fisch aufbereitet, angeordnet und dargestellt, dass eine optimale Übertragung der
Informationen auf den menschlichen Bediener möglich ist.
Bei der Darstellung der Videodaten ist das sogenannte Skalierungsproblem zu berücksichtigen. In der digitalen Bildbearbeitung bezeichnet Skalierung die Grö- ßenänderung eines digitalen Bilds, wobei zwischen Rastergrafik und Vektorgrafik unterschieden wird. Die Skalierung von Rastergrafiken stellt eine Abtastratenkonvertierung dar, nämlich die Umwandlung eines diskreten Signals einer Abtastrate in ein diskretes Signal einer anderen Abtastrate. Offenbarung der Erfindung
Vor diesem Hintergrund werden ein Verfahren zum Bearbeiten von Videodaten mit den Merkmalen des Anspruchs 1 , ein Verfahren zum Darstellen von Videodaten nach Anspruch 5 und eine Anordnung gemäß Anspruch 6 vorgestellt. Aus- gestaltungen ergeben sich aus den abhängigen Ansprüchen und der Beschreibung.
Mit dem vorgestellten Verfahren ist es somit möglich, die Last zwischen CPU und Grafikkarte beliebig zu verteilen, so dass die zur Verfügung stehenden Ressourcen optimal genutzt werden können.
Das vorgestellte Verfahren beschäftigt sich mit der Zerlegung des allgemeinen Skalierungsproblems, das aus zwei Schritten besteht: eine Glättungs-Operation einschließlich Abtastung und eine nachfolgende Kanten-Schärfungs-Operation. Erstere lässt sich besonders effizient auf der CPU mittels SSE-Befehlen (SSE: Streaming SIMD extension) realisieren, wenn um eine 2-er Potenz oder zumindest einen ganzzahligen Faktor skaliert wird. Bei dem vorstehend genannten Beispiel wird idealerweise das Bildmaterial von der CPU um einen Faktor 2 in beide Richtungen vorskaliert, d. h. entsprechend geglättet und abgetastet. Dadurch verringert sich die zu übertragende Datenmenge um einen Faktor 4. Da- nach wird auf der Grafikkarte die Kanten-Schärfung durchgeführt und typischerweise das Ergebnisbild im Rahmen einer finalen Skalierung um den verbleibenden 5/3 Faktor auf die finale Ziel-Auflösung gebracht.
Unter einer Glättungs-Operation ist dabei im mathematischen Zusammenhang eine Operation zu verstehen, mit der eine Kurve in eine Kurve geringerer Krümmung überführt wird. Diese Kurve geringerer Krümmung soll möglichst wenig von der ursprünglichen Kurve abweichen.
Da das dekodierte Bild im Hauptspeicher üblicherweise als Referenzbild gehalten werden muss, sollte das Bild für die Übertragung in einen speziellen Textur-
Speicher kopiert werden. Idealerweise wird die Bild-Glättung einschließlich Abtastung anstelle der einfachen Kopieroperation gesetzt.
Es ist zu beachten, dass ein moderner Komprimierstandard bei der Kodierung eines Datenrahmens bzw. Frames andere Frames referenziert. Diese Frames müssen vom Dekoder effizient zugreifbar sein und liegen, wenn der Dekoder auf der CPU ausgeführt wird, im Hauptspeicher des Computers. Damit der Grafikkartentreiber den Frame vom Hauptspeicher effizient per DMA in den Grafikkartenspeicher kopieren kann, muss der Frame in einem speziellen Bereich eines nicht- auslagerbaren Speichers bzw. in einem Pinned-Memory-Bereich liegen.
Eine Applikation sollte sehr konservativ mit Pinned-Memory umgehen, da dieser nicht vom Betriebssystem ausgelagert bzw. geswappt werden kann, um Platz für andere Applikationen einschließlich des Betriebssystems zu beschaffen. Um also beiden Bereichen, dem Dekoder- und dem Texture-Upload-Bereich, gerecht zu werden, ist eine Kopieroperation von normalem Speicher in einen Pinned-
Memory-Bereich notwendig. Von dem Pinned-Memory-Bereich werden dann die Daten per DMA-Transfer in den Speicher der Grafikkarte kopiert und können danach für weitere Berechnungen und Darstellungen zugegriffen werden. Dies wird hierin als„einfache" Kopieroperation bezeichnet, da außer dem Kopieren keine weitere Transformation stattfindet. Diese Kopieroperation geschieht allerdings durch die CPU bzw. den Prozessor, d.h. der Prozessor liest einen kleinen Datenbereich in seine Register und schreibt deren Inhalt an eine andere Adresse. Damit ist der Prozessor nicht übermäßig stark ausgelastet und kann ne- benbei einfache Transformationen mitrechnen, wie bspw. das Glätten und Unterabtasten des Bilds.
Bei entsprechender Optimierung und Auswahl des Skalierungsverfahrens sind die zusätzlichen Operationen vernachlässigbar, so dass durch die Umstellung keine weitere Last für die CPU entsteht. Der anschließende Texturtransfer entlastet den Grafikkarten- bzw. Memory-Bus in dem vorstehenden Beispiel um Faktor 4, d. h. es werden lediglich 500 MByte/Sekunde übertragen.
Die verbleibende Kanten-Schärfung und nochmalige Skalierung lassen sich sehr gut zeilenweise bzw. spaltenweise parallelisieren, was sie für die Bearbeitung auf modernen Grafikkarten mittels CUDA (Compute Unified Device Architecture) bzw. Compute Shadern besonders geeignet macht. Mit CUDA wird eine Technik bezeichnet, mit der Programmteile entwickelt werden können, die durch den Grafikprozessor (GPU) auf der Grafikkarte abgearbeitet werden.
Hierbei ist ebenfalls die Gesamtlast gegenüber der vollständigen Skalierung auf der Grafikkarte trotz der zusätzlichen Kanten-Schärfung gesunken, da die Datenmenge von der CPU bereits um einen Faktor 4 reduziert wurde. Noch deutlicher wird der Vorteil bei stärkeren Skalierungen, bspw. bei Füll HD 1920 x 1020, da nun der erste Skalierungsschritt auf der CPU bereits eine Datenreduktion um Faktor 16 ermöglicht, ohne eine signifikante Last auf der CPU zu erzeugen.
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und den beiliegenden Zeichnungen.
Es versteht sich, dass die voranstehend genannten und die nachstehend noch zu erläuternden Merkmale nicht nur in der jeweils angegebenen Kombination, sondern auch in anderen Kombinationen oder in Alleinstellung verwendbar sind, ohne den Rahmen der vorliegenden Erfindung zu verlassen.
Kurze Beschreibung der Zeichnungen
Figur 1 zeigt eine Ausführungsform der beschriebenen Anordnung. Figur 2 zeigt eine Ausführungsform des vorgestellten Verfahrens. Ausführungsformen der Erfindung
Die Erfindung ist anhand von Ausführungsformen in den Zeichnungen schematisch dargestellt und wird nachfolgend unter Bezugnahme auf die Zeichnungen ausführlich beschrieben.
Figur 1 zeigt in einer schematischen Darstellung eine Ausführung der vorgestellten Anordnung, die insgesamt mit der Bezugsziffer 10 bezeichnet ist und in einer Rechenanlage bzw. einem Computer 12 integriert ist. Diese Anordnung 10 ist mit einem Monitor 14 verbunden, auf dem Videodaten dargestellt werden sollen.
Die Anordnung 10 umfasst eine CPU 20, einen Hauptspeicher 22, eine Grafikkarte 24 und einen Textur-Speicher 26. In der Grafikkarte 24 wiederum ist ein Grafikprozessor 30 und ein Grafikspeicher 32 vorgesehen. In einer Ausführung der Anordnung 10 dient der Grafikspeicher 32 als Textur-Speicher 26.
In Figur 2 ist das vorgestellte Verfahren anhand der Umwandlung der zur Darstellung vorgesehenen Videodaten wiedergegeben. Die Darstellung zeigt hierzu eine CPU 50, einen Grafikprozessor 52 und einen Monitor 54.
Zu Beginn liegen die zur Darstellung vorgesehenen Videodaten 60 in der CPU 50 vor. In einem ersten Schritt 62 werden die Videodaten 60 geglättet und abgetastet, so dass vorskalierte Videodaten 64 vorliegen. Diese vorskalierten Videodaten 64 werden in einem weiteren Schritt 66 mittels Textur-Transfer zu dem Grafikprozessor 52 übertragen. In dem Grafikprozessor 52 werden die vorskalierten
Videodaten 64 in einem weiteren Schritt 68 einer Kanten-Schärfungsoperation unterzogen, so dass kantengeschärfte vorskalierte Videodaten 70 vorliegen. Die kantengeschärften vorskalierten Videodaten 70 werden in einem weiteren Schritt 72 einer finalen Skalierung unterzogen, wodurch final skalierte Videodaten 74 erhalten werden. Diese final skalierten Videodaten 74 werden zur Präsentation bzw. Darstellung in einem abschließenden Schritt 76 zu dem Monitor 54 übertragen.
Es wurde erkannt, dass das allgemeine Skalierungsproblem einem Basiswechsel entspricht, d. h. man projiziert das Originalbild, d. h. die ursprünglichen Videodaten 60, möglichst verlustfrei in den Zielraum. Wenn mit diskreten Eingangssignalen gearbeitet wird, so kann "Verlustfreiheit" als Reproduktionsfehler gemessen werden, d. h. von dem skalierten Bild werden durch Interpolation die Originalpixel reproduziert und die Abweichung zu letzteren gemessen. Im kontinuierlichen Fall wird ein Maß definiert, das die beiden kontinuierlichen Signale direkt miteinander vergleicht, z. B.:
<f, g> = Integral f(x) * g(x) dx
Der Einfachheit halber wird das Verfahren im Folgenden anhand der diskreten Variante beschrieben. Das vorgestellte Verfahren lässt sich aber genauso auf den kontinuierlichen Fall anwenden.
In vielen Fällen wird die Skalierungsaufgabe aufgrund der Komplexität durch eine einfache Interpolationsaufgabe ersetzt und die resultierenden massiven Alias- Effekte bzw. Unschärfen zugunsten des Leistungsvermögens in Kauf genommen. Das beschriebene Verfahren zeigt, wie die korrekte Skalierung durchgeführt werden kann, ohne das Leistungsvermögen zu beeinträchtigen.
Mathematisch lässt sich das diskrete Skalierungsproblem wie folgt formulieren:
( A * y— x )Λ2 -> min wobei x das Originalbild, y das skalierte Bild und A eine Interpolationsmatrix darstellt, um von dem skalierten Bild wieder zum Originalbild zu gelangen.
Dieses Skalierungsproblem hat die Lösung: y = ( ΑΛΤ * A )Λ -1 * ΑΛΤ * x
In vorstehendem Wortlauf entspricht ΑΛΤ der Glättungs-Operation mit Abtastung und ( ΑΛΤ * A )Λ-1 der Kantenschärfung.
Bei Skalierungen um einen ganzzahligen Faktor und geeigneten Randbedingungen, z. B. bei einer Spiegelung, entspricht A einer Konvolutionsmatrix, die sich mittels einfacher Faltung berechnen lässt. Damit sind ΑΛΤ und ( ΑΛΤ * A )Λ-1 ebenfalls Konvolutionsmatrizen. Letztere lässt sich mittels z-Transformation bzw. Matrixzerlegung durch einfache rekursive Filter berechnen.
Da Bildskalierung in x- und y-Richtung unabhängig voneinander sind, kann man auch die entsprechenden Operationen beliebig mischen. Es bietet sich daher an, als erstes die Operationen durchzuführen, die die Datenmenge am stärksten reduzieren, d. h. im Fall der Bildskalierung zuerst die entsprechenden Glättungen mit Abtastung in x- und y-Richtung durchzuführen, bevor mit der Kanten- bzw. Bild-Schärfung begonnen wird. In Kombination mit einer Grafikkarte bedeutet dies, dass die CPU die einfache Konvolution mit entsprechender Datenreduktion sowohl in x- als auch in y-Richtung übernimmt, während die Grafikkarte die entsprechende Nachbearbeitung durchführt, um zu dem finalen skalierten Bild zu gelangen. Mit diesem Schema wird automatisch der Datentransfer zwischen Hauptspeicher und Grafikkarte minimiert.