Beschreibung description
Titel title
VERFAHREN ZUM SKALIEREN VON VIDEODATEN UND EINE ANORDNUNG ZUR DURCHFUHRUNG DES METHOD FOR SCALING VIDEO DATA AND AN ARRANGEMENT FOR IMPLEMENTING THE
VERFAHRENS PROCEDURE
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 The invention relates to a method for processing video data, to a method for displaying video data and to an arrangement for carrying out the method for processing video data. State of the art
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. To control the screen display in computer systems or computers graphics cards are used. Usually, when a program is executed, the processor or the CPU of the computer calculates the data and forwards it to the graphics card. The graphics card converts the data so that the monitor can render the data as an image.
Ü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. Usually, video data is either pre-scaled completely on the central processing unit (CPU) and then transferred to the graphics card, or the complete video image is transferred to the graphics card where it is scaled to the target resolution.
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 dieIn video surveillance systems, many video sequences must be displayed in parallel on a monitor. If, for example, 25 HD videos (resolution eg 1280 x 720) are to be displayed at 60 Hz, then 1500 textures must be displayed on the
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. Graphics card, which corresponds to a transfer rate of 2 GB / second. To be able to display the 25 HD videos in full resolution on the monitor, this would have to have a total resolution of 6400 x 3600.
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 However, high-resolution monitors usually have a much lower maximum resolution of, for example, 1920 x 1200 pixels. Would with a classic
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. If the video material on the CPU is scaled, then a transfer would be transmission rate of 207 MB / s. However, this approach has the disadvantage that the CPU, which is already busy with decoding and other tasks, also has to perform the video scaling. However, high-quality image scaling by any scaling factor is a complex operation for the CPU.
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 eineThe document DE 10 2005 046 664 A1 describes a method for generating a flexible display area for a video surveillance system. The display area comprises a main window into which a number of information windows can be overlaid. Switching an operator is done by a
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 derSelection and resizing of an information window. With the described method, a man-machine interface is realized, which offers a clear presentation while at the same time good adaptability to the respective application. Video information is prepared, arranged and displayed in such a way that optimal transmission of the
Informationen auf den menschlichen Bediener möglich ist. Information on the human server is possible.
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 When displaying the video data, the so-called scaling problem has to be considered. In digital image editing, scaling refers to resizing a digital image, distinguishing between raster graphics and vector graphics. The scaling of raster graphics is a sample rate conversion, namely the conversion of a discrete signal of one sample rate into a discrete signal of another sample rate. Disclosure of the invention
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. Against this background, a method for editing video data with the features of claim 1, a method for displaying video data according to claim 5 and an arrangement according to claim 6 are presented. Embodiments result from the dependent claims and the description.
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. With the presented method, it is thus possible to distribute the load arbitrarily between CPU and graphics card so that the available resources can be used optimally. The presented method deals with the decomposition of the general scaling problem which consists of two steps: a smoothing operation including sampling and a subsequent edge sharpening operation. The former can be implemented particularly efficiently on the CPU by means of SSE commands (SSE: Streaming SIMD extension), when a power of 2 or at least an integer factor is scaled. In the above example, ideally, the image material is pre-scaled by the CPU by a factor of 2 in both directions, ie, smoothed and sampled accordingly. This reduces the amount of data to be transferred by a factor of 4. After that, the graphics card is used to perform edge sharpening and, typically, the result image is scaled to the final target resolution by the remaining 5/3 factor.
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. A smoothing operation is to be understood in the mathematical context of an operation with which a curve is converted into a curve of lesser curvature. This curve of lesser curvature should deviate as little as possible from the original curve.
Da das dekodierte Bild im Hauptspeicher üblicherweise als Referenzbild gehalten werden muss, sollte das Bild für die Übertragung in einen speziellen Textur-Since the decoded image in main memory usually has to be kept as a reference image, the image should be stored in a special texture for transfer.
Speicher kopiert werden. Idealerweise wird die Bild-Glättung einschließlich Abtastung anstelle der einfachen Kopieroperation gesetzt. Memory to be copied. Ideally, the image smoothing including scanning is set instead of the simple copying operation.
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. It should be noted that a modern compression standard when coding a data frame or frame references other frames. These frames must be efficiently accessible by the decoder and, when the decoder is executed on the CPU, reside in the main memory of the computer. In order for the video card driver to efficiently copy the frame from main memory to the video card memory using DMA, the frame must be in a special area of a non-pageable memory or in a pinned memory area.
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. An application should be very conservative with pinned memory because it can not be swapped out or swapped by the operating system to provide space for other applications including the operating system. Thus, to cope with both areas, the decoder and the texture upload area, a copy operation from normal memory to a pinned area is required. Memory area necessary. The data is then copied from the pinned memory area via DMA transfer to the memory of the graphics card and can then be accessed for further calculations and presentations. This is referred to herein as a "simple" copy operation since there is no further transformation other than copying, but this copying operation is done by the CPU or processor, ie, the processor reads a small data area into its registers and writes its contents to another address. Thus, the processor is not overly busy and can also calculate simple transformations, such as smoothing and subsampling the image.
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. With appropriate optimization and selection of the scaling method, the additional operations are negligible, so that the conversion creates no further load for the CPU. The subsequent texture transfer relieves the graphics card or memory bus in the above example by a factor of 4, d. H. only 500 MB / s are transmitted.
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. The remaining edge sharpening and rescaling can be parallelized very well line by line or column by column, which makes them particularly suitable for processing on modern graphics cards using CUDA (Compute Unified Device Architecture) or Compute Shaders. CUDA is a technique by which program parts can be developed that are processed by the graphics processor (GPU) on the graphics card.
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. In this case, the total load compared to the full scaling on the graphics card has dropped despite the additional edge sharpening, since the amount of data has already been reduced by a factor of 4 by the CPU. The advantage becomes even clearer with larger scaling, for example with filling HD 1920 x 1020, since now the first scaling step on the CPU already enables a data reduction by a factor of 16, without generating a significant load on the CPU.
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. Further advantages and embodiments of the invention will become apparent from the description and the accompanying drawings. It is understood that the features mentioned above and those yet to be explained below can be used not only in the particular combination indicated, but also in other combinations or in isolation, without departing from the scope of the present invention.
Kurze Beschreibung der Zeichnungen Brief description of the drawings
Figur 1 zeigt eine Ausführungsform der beschriebenen Anordnung. Figur 2 zeigt eine Ausführungsform des vorgestellten Verfahrens. Ausführungsformen der Erfindung FIG. 1 shows an embodiment of the described arrangement. FIG. 2 shows an embodiment of the presented method. Embodiments of the invention
Die Erfindung ist anhand von Ausführungsformen in den Zeichnungen schematisch dargestellt und wird nachfolgend unter Bezugnahme auf die Zeichnungen ausführlich beschrieben. The invention is schematically illustrated by means of embodiments in the drawings and will be described in detail below with reference to the drawings.
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. 1 shows a schematic representation of an embodiment of the presented arrangement, which is designated overall by the reference numeral 10 and is integrated in a computer system or a computer 12. This arrangement 10 is connected to a monitor 14 on which video data is to be displayed.
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. The arrangement 10 comprises a CPU 20, a main memory 22, a graphics card 24 and a texture memory 26. In the graphics card 24 in turn a graphics processor 30 and a graphics memory 32 is provided. In one embodiment of the arrangement 10, the graphics memory 32 serves as a texture memory 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. FIG. 2 shows the presented method based on the conversion of the video data intended for display. The illustration shows a CPU 50, a graphics processor 52 and a monitor 54 for this purpose.
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. Initially, the video data 60 for presentation is present in the CPU 50. In a first step 62, the video data 60 is smoothed and sampled so that pre-scaled video data 64 is present. This pre-scaled video data 64 is transferred to graphics processor 52 in a further step 66 by texture transfer. In the graphics processor 52, the pre-scaled Video data 64 is subjected to an edge sharpening operation in a further step 68 so that edge-sharpened pre-scaled video data 70 is present. The edge sharpened pre-scaled video data 70 is finalized in a further step 72, thereby obtaining final scaled video data 74. This final scaled video data 74 is transmitted to the monitor 54 for presentation in a final step 76.
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.: It was recognized that the general scaling problem corresponds to a basal change, i. H. you project the original image, d. H. the original video data 60, as lossless as possible in the target area. When working with discrete input signals, "losslessness" can be measured as a reproduction error, i. H. from the scaled image, the original pixels are reproduced by interpolation and the deviation from the latter is measured. In the continuous case, a measure is defined which directly compares the two continuous signals, e.g. B .:
<f, g> = Integral f(x) * g(x) dx <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. For the sake of simplicity, the method will be described below with reference to the discrete variant. However, the presented method can be applied equally to the continuous case.
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. In many cases, due to the complexity, the scaling task is replaced by a simple interpolation task, and the resulting massive aliasing or blurring in favor of performance is accepted. The described method shows how the correct scaling can be performed without compromising performance.
Mathematisch lässt sich das diskrete Skalierungsproblem wie folgt formulieren: Mathematically, the discrete scaling problem can be formulated as follows:
( 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 (A * y-x) Λ 2 -> min where x represents the original image, y the scaled image and A an interpolation matrix to return from the scaled image to the original image. This scaling problem has the solution: y = (Α Λ Τ * A) Λ -1 * Α Λ Τ * x
In vorstehendem Wortlauf entspricht ΑΛΤ der Glättungs-Operation mit Abtastung und ( ΑΛΤ * A )Λ-1 der Kantenschärfung. In the above wording, Α Λ Τ corresponds to the smoothing operation with sampling and (Α Λ Τ * A) Λ -1 to edge sharpening.
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. For scaling by an integer factor and suitable boundary conditions, eg. As in a reflection, A corresponds to a convolution matrix, which can be calculated by means of simple convolution. Thus, Α Λ Τ and (Α Λ Τ * A) Λ -1 are also convolution matrices. The latter can be calculated by z-transformation or matrix decomposition by simple recursive filters.
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.
Since image scaling in x- and y-direction are independent of each other, one can also mix the corresponding operations as desired. It is therefore advisable first to perform the operations that reduce the amount of data the most, ie. H. in the case of image scaling, first perform the appropriate smoothing with scanning in the x and y directions before starting the edge sharpening. In combination with a graphics card, this means that the CPU handles the simple convolution with corresponding data reduction in both the x and y directions while the graphics card performs the appropriate post processing to arrive at the final scaled image. This scheme automatically minimizes data transfer between main memory and graphics card.