An dieser Stelle ist eine lose Folge mit genaueren Erläuterungen zu
einigen speziellen Themen geplant, die für das tiefere Verständnis
von Cosima wichtig sind. Inhaltsverzeichnis: |
At this point it is planned to give some detailed explanations to some
specific themes, which are important for a deep understanding of Cosima. Content: |
Warum sollte man Cosima benutzen?xxx |
Why Using Cosima?xxx |
Interpolation digitaler BilderDigitale Bilder besitzen ihre Farbinformationen ausschliesslich auf den Gitterpunkten. Beim Betrachten des Bildes sieht man trotzdem eine lückenlose geschlossene Farbfläche, weil die Pixel natürlich gerade so groß dimensioniert sind, dass sie sich exakt berühren. Wenn man digitale Bilder verkleinern oder vergrößern will, muss man sich die Größe der Pixel allerdings wiederum auf einen Punkt zusammengeschrumpft vorstellen. Verkleinern und Vergrößern bedeutet also nichts anderes, als eine Farbinformation zwischen den Pixeln zu gewinnen. Diesen Prozess nennt man Interpolation. Hierbei ist es von erheblicher Bedeutung, ob digitale Bilder vergrößert oder verkleinert werden. Beim Vergrößern von Bildern müssen also aus den schon vorhandenen Pixeln neue Pixel berechnet werden. Die insgesamt vorhandene Anzahl von Pixeln ist ein Mass für die mögliche Detailgenauigkeit des Bildes: Wenn sich die Pixelabfolge im Bild schnell ändert, besitzt es hohe Frequenzanteile, wenn sich die Pixelabfolge nur langsam ändert, besitzt es nur niedrige Frequenzanteile. Offensichtlich könnte man beim Vergrößern von Bildern also Details hinzufügen, aber welche nur? Da man dies nicht weiss, fordert man als Bedingung beim Vergrößern von Bildern: Beim Vergrößern von Bildern dürfen keine neuen Details (keine höherfrequenten Bildanteile) hinzugefügt werden! Und für diese Forderung liefert uns die Mathematik auch schon das Ergebnis: Wir müssen als Interpolationsfunktion eine sin(x)/x - Funtion verwenden. Damit sind die Mathematiker fertig, aber für uns fängt die Arbeit jetzt erst an, denn die sin(x)/x- Funktion ist für die Praxis völlig unbrauchbar - Aufwand und Rechenzeit sind nicht vertretbar! Also denken wir uns einfachere Lösungen aus, die aber nicht viel schlechter sein sollen, als die optimale Lösung. Die einfachste Interpolationsfunktion ist die lineare Interpolation (bilinear, weil in 2 Dimensionen). Hierbei werden die Farbwerte zweier benachbarter Pixel durch eine Gerade verbunden und der gesuchte Farbwert auf der Geraden abgelesen. Um einen neuen Pixel zu berechnen, braucht man also nur die 4 Nachbarpixel auszuwerten und linear zu gewichten. Einfach und gut! Etwas bessere (im Sinne von: näher an der Forderung) Ergebnisse erhält man, wenn man den Verlauf der sin(x)/x-Funktion durch Polynome 3.ten Grades approximiert und dazu nicht nur 4 Pixel sondern eine Umgebung von 4x4=16 Pixel auswertet. Dies ist die kubische Interpolation (bikubisch, weil in 2 Dimensionen). Alle anderen von den verschiedensten Programmen verwendeten Methoden sind mehr oder weniger gute Approximationen der sin(x)/x-Funktion - die aufwendigeren unter ihnen verwenden bis zu 6x6=36 Pixel der Umgebnung, um jeweils einen neuen Wert zu berechnen. Alle haben sie jedoch eines gemeinsam: Vergrößerte Bilder wirken immer unscharf, da sie im Verhältnis zu der Anzahl ihrer Pixel zu wenig Bilddetails (zu wenig hochfrequente Bildanteile) besitzen. Das war ja gerade die Ausgangs-Forderung. Streng genommen geben die so vergrößerten Bilder die Verhältnisse aber unverfälschter wieder, als die Originale, denn die am Anfang erwähnte Ausdehnung der Pixel (bis sie sich berühren) ist eine Massnahme, durch die das Bild schärfer gewirkt hat, als es in Wirklichkeit gewesen ist. Die Pixelkanten sind immer scharf und täuschen Bildschärfe auch dort vor, wo gar keine Schärfe vorhanden ist. Diesen Effekt bieten die hochskalierten Bilder nicht mehr. Um in hochskalierten Bildern wieder einen schärferen Bildeindruck zu erhalten, ist es also sinnvoll, das Bild nachzuschärfen. Was passiert nun beim Verkleinern von Bildern? Das verkleinerte Bild hat weniger Pixel als das Originalbild und kann deshalb nur weniger Details zeigen. Diese Details verschwinden aber nicht automatisch beim Verkleinern, viel schlimmer: sie führen zu häßlichen Bildfehlern, wenn man sie nicht vorher entfernt! Im Frequenzbereich tauchen sonst die höherfrequenten Bildanteile plötzlich bei niederen Frequenzen wieder auf (aliasing). Die Tiefpaßfilter, die man deshalb zu diesem Zweck einsetzt, werden darum auch Anti-Aliasing Filter genannt. Diese Filter müssen so bemessen sein, dass alle Frequenzanteile, die im verkleinerten Bild nicht mehr dargestellt werden können, weggefiltert werden. Das ist so wichtig, dass es nochmals verdeutlicht werden soll: Beim Verkleinern von Bildern müssen vor der Verkleinerung alle höherfrequenten Bildanteile mit einem Anti-Aliasing Filter herausgefiltert werden. Auch hier bietet uns die Mathematik wieder die sin(x)/x-Funktion an (jetzt natürlich mit entsprechend gedehnter x-Achse) und auch hier lehnen wir wieder dankend ab und realisieren etwas viel einfacheres, zum Beispiel einen Mittelwert- oder Gaussfilter. Diese Operation hat natürlich zur Folge, dass auch das verkleinerte Bild unscharf wirkt, und deshalb gilt die gleiche Empfehlung wie bei der Vergrößerung: Um bei herunterskalierten Bildern wieder einen schärferen Bildeindruck zu erhalten, muss das Bild nachgeschärft werden. Sowohl das Herauf- wie auch das Herunterskalieren ist also mit einem (subjektivem) Schärfeverlust verbunden. Glücklicherweise gibt es aber Schärfeverfahren, die - bei vorsichtiger Anwendung - ganz erstaunliche Ergebnisse liefern und den Schärfeverlust durch die Skalierung wieder ausgleichen können.
|
Interpolation of digital imagesIn digital images the color information exist exclusively on the grid points. While looking to the image, one sees, nevertheless, a complete closed color surface, because the pixels are dimensioned of course just so largely, that they touch another precisely. If one wants to reduce or increase digital images, one has to imagine the pixels however again shrinked down to point size. Reducing and increasing means nothing else, than to gain color information between the pixels. This process is called interpolation. For this, it is of considerable meaning whether digital images are increased or reduced. While increasing images, there must be calculated new pixels from the quite available pixels. The number of available pixels alltogether is a measuring of the possible detail exactness of the image: If the pixel sequence changes fastly in the image, it contents high frequencies and if the pixel sequence changes only slowly, it only contents low frequencies. Obviously one could add detail content while increasing images, but which details? Because one doesn't know this, it is demanded as a conditioning for the increasing of images: While increasing images, no new details (higher frequent image detailes) may be added! And for this demand the mathematics already delivers the result to us: We must use as an interpolation function the sinc-function. The mathematicians are ready with it, but for us the work now only starts, because the sinc-function is absolutely useless for the practise - the expenditure and the processing time are not defensible! So we have to develope simpler solutions, which shouldn't be much worse, however, than the optimum solution. The easiest interpolation function is the linear interpolation (bilinear, because in 2 dimensions). Using this method, the colors of two neighboring pixels are just connected by a straight line and the color value in request is read on the line. To calculate a new pixel, one needs only to evaluate the 4 neighbouring pixels and to weight them linearly. Simply and well! A little better results (for the purposes of: closer at the demand) are received if the sinc-function is approximated by polynominals of 3.order and an environment of 4x4=16 pixels is used instead of only 4 surrounding pixels. This is the cubic interpolation (bicubic, because in 2 dimensions). All the other methods used by the different programs are more or less good approximations of the sinc-function - costlier among them use up to 6x6=36 pixels of the environment to calculate a new value. They all have in common nevertheless: Enlarged images look always blurred, because they content not enough image details (not enough high frequencies) in relation to their number of pixels. This was just the demand above. Strictly speaking, the so enlarged images return the relations, however, more genuinely than the originals, because the expansion of the pixels (up to their touch as mentioned at the beginning) is a method by which the images look more sharp than they are in reality. The pixel edges are always sharp and simulate image sharpness also where no sharpness exists. The high-scaled images offer this effect no more. So, to receive a more sharp impression again with high-scaled images, the images have to be postsharpened. What happens now while reducing the images? The reduced image has less pixels than the original image, and therefore can show only less details. However, these details do not disappear automatically while reducing, much more badly: they lead to ugly image errors if they aren't removed before! Otherwise, in the frequency domain, the higher frequencies suddenly appear again with low frequencies (called aliasing). The low-pass filters, which are used for this purposes, are therefore called anti-aliasing filter. These filters have to be calculated to supress all frequency shares, which cannot be shown in the reduced image any more. This is so important that it has be made clear again: While reducing images, all higher frequency shares have to be suppressed using an anti-aliasing filter before the reduction. Also here the mathematics offers us again the sinc-function (now of course with accordingly stretched x-axis) and also here we decline again with thanks and realize something else, which is a lot of easier, for example, an average or Gauss filter. This operation entails of course, that also the reduced image looks somewhat blurred, and, therefore, the same recommendation follows like with the enlargement: To receive again a sharp impression with down-scaled images, the images have to be postsharpened. Both, up- and downscaling images come along with a (subjective) loss of sharpness. However, fortunately, there are sharpness procedures which can deliver - with careful application - quite astonishing results and compensate the sharpness loss due to the scaling. |
DeinterlacingAls das Fernsehen erfunden wurde, hatte man sich eine (aus Sicht der damaligen technischen Möglichkeiten) geniale Methode ausgedacht, um bei gleicher verfügbarer Übertragungsbandbreite die Bilder flüssiger darstellen zu können: Das Zwischenzeilenverfahren (eng: interlaced mode). Anstatt 25 Bilder je Sekunde aufzunehmen und jedesmal das volle Bild zu übertragen, wurden 50 Bilder je Sekunde aufgenommen und abwechselnd nur die geraden Zeilen beziehungsweise nur die ungeraden Zeilen übertragen (PAL). Am Fernseher waren dann für jeden Abtastzeitpunkt zwar weniger Bilddetails verfügbar, aber die Bildfrequenz konnte verdoppelt werden, wodurch sich schnellere Bewegungen flüssiger darstellen ließen. In der Computertechnik hatte sich dagegen nach einer gewissen Übergangszeit das Vollbildverfahren (engl: progressive mode) durchgesetzt, da es aus technischer Sicht keinen Grund mehr gab, auf die Bildinformationen jeder 2.ten Zeile zu verzichten. In der Videotechnik wird das Zwischenzeilenverfahren allerdings immer noch eingesetzt (ein Wechsel deutet sich gerade an), so dass die Weiterverarbeitung von 3D-Videos auf dem Computer immer einen Umrechnungsvorgang vom Zwischenzeilenverfahren in das Vollbildverfahren benötigt. Dieser Umrechnungsvorgang wird Deinterlacing genannt. Zerlegt man Videostreams, welche mit einer Videokamera aufgenommen wurden, in Einzelbilder, so erhält man 25 Einzelbilder je Sekunde, wobei aber in jedem Einzelbild die Bilddaten von 2 Aufnamezeitpunkten vereinigt wurden. Die geraden Zeilen wurden also zu einem anderen Zeitpunkt aufgenommen als die ungeraden Zeilen. In den Bildern sieht man deshalb bei schnellen Bewegungen ausgefranste Ränder. Die zentrale Frage ist deshalb: Mit welchen Deinterlace-Operationen können die ursprünglichen Vollbilder wiederhergestellt werden? Da der Inhalt der fehlenden Bildzeilen völlig unbekannt ist, ist es prinzipiell auch nicht möglich, das Originalbild wieder komplett zu rekonstruieren. Es ist lediglich möglich, den Inhalt der fehlenden Zeilen entsprechend gewisser Methoden zu schätzen. Da hier aus einem Videobild beide Abtastzeitpunkte in getrennten Ergebnisbildern rekonstruiert werden, verdoppelt sich beim Deinterlacen die Anzahl der Bilder: Aus 25 Interlaced-Bildern je Sekunde entstehen also 50 Vollbilder je Sekunde. Bei manchen Anwendungen wird hiervon dann allerdings wieder jedes 2.te Bild verworfen. Die wichtigsten bekannten Verfahren sind:
Verzögerung von Halbbildern mit Cosima. Bei der Verarbeitung von Einzelbildern können eventuell vorhandene größere Asynchronitäten (Unterschiede im Abtastzeitpunkt beim linken und rechten Videostream) durch einfache Bild-Umbenennung ausgeglichen werden. Da die Original-Interlacedbilder einen zeitlichen Abstand von 1/25 Sekunde besitzen, verbleiben bei dieser Methode Restfehler von maximal 1/50 Sekunde. Beim Deinterlacen mit der Verdoppelung der Anzahl der Bilder entsteht ein weiterer Freiheitsgrad in der Links-Rechts-Bildzuordnung. Die wahlweise Verzögerung um ein Halbbild im linken oder im rechten Bildstrom reduziert hierbei die maximale Rest-Asynchronität auf +- 1/100 Sekunde. Mit den Parametern InterlacedMode = 1 und 4 werden keinerlei Verzögerung vorgenommen, mit den Werten InterlacedMode = 2 und 5 wird der komplette rechte Bildstrom um ein Halbbild verzögert und mit InterlacedMode = 3 und 6 wird der komplette linke Bildstrom um ein Halbbild verzögert. Achtung: Eine Rest-Asynchronität von +- 1/100 Sekunde ist nur für sehr bewegungsarme Videos ausreichend! Für übliche Bewegungsabläufe sollte die Rest-Asynchronität besser als etwa 1/1000 Sekunde sein! |
DeinterlacingWhen the television was invented, an (from the view of the technical possibilities at that time) ingenious method was applied in order to represent a more fluently movement with the same available transmission bandwidth: The interlaced mode line procedure. Instead of taking up 25 pictures per second and each time transfering the full picture, 50 pictures per second were taken up and alternating only the even lines and only the odd lines were transferred (PAL). At the receiver, for each time sample, only fewer picture details were available, but the image frequency could be doubled and therefore faster movements could be represented more fluently. In the world of computers, after a while, the progressive image processing had been established, since from technical view point there was no longer a reason to skip the image information of every second line. Because in the video technology the interlaced line procedure is still used (a change is just on its way), the treatment of 3D-Videos on the computer always needs a conversion process from the interlaced line procedure into the progressive frame procedure. This conversion process is called deinterlacing. The separation of a camcorder video stream results in 25 frames per second, whereby each frame combines the image data from two different time samples. The even lines were taken up from another time sample than the odd lines. With fast movements this can also be seen in the image by frayed edges. The main question is: With which deinterlace operations can the original frames be restored? Since the content of the missing lines are of course unknown, it is in principle not possible to reconstruct the original image completely. It is only possible to estimate the missing content according to certain methods. Since both scanning times of the video image are reconstructed here in separate resulting images, the number of images is doubled during the deinterlacing operation: Thus, from 25 interlaced image frames per second 50 full (progressive) image frames will be generated. With some applications however, each second image will be afterwards rejected, but this depends on the application. The most important well-known deinterlacing procedures are:
Delay of half-frames with Cosima. During the frame processing there exists the possibility to align larger time differences between the left and right video streams simply by image renaming. Since the original interlaced images possess a temporal distance of 1/25 second, residual errors of maximum 1/50 second remain with this rough method. During the deinterlacing with doubling the number of images a further degree of freedom to balance out time differences between the left and right images arises. This alternative delay of a half-frame in the left or in the right image stream reduces the maximum remaining imbalance to + - 1/100 second. With the Cosima parameters InterlacedMode = 1 and 4 no delay is added at all, with InterlacedMode = 2 and 5 the complete right image stream is delayed by a half-frame and with InterlacedMode = 3 and 6 the left image stream is delayed by a half-image. Note: A remaining imbalance of + - 1/100 second is sufficient only for very poor-movement videos! For usual motions the remaining time error should be better than about 1/1000 second! |
Bedingungen für störungsfreie AnaglyphenbilderDie Seite http://www.herbig-3d.de/german/anaglyphen.htm wurde komplett neu überarbeitet. Hinweis für Benutzer des Internet Explorers: Um die Formeln lesen zu können, ist die Installation des MathPlayers notwendig. Beim Firefox ist alles notwendige schon eingebaut!Siehe ebenso Technische Notiz: Anaglyphen |
Conditions for ghostless anaglyphesSorry, only in German language: http://www.herbig-3d.de/german/anaglyphen.htm |
Details zu cosima_files.txtCosima legt bei jedem Analyselauf (EstimateGeometry = 1) eine Bilderliste mit allen gefundenen Analysewerten an. Es handelt sich hierbei um eine reine ASCII-Textdatei. Der Name dieser Datei wird mit dem Parameter ListofImages vorgegeben, per default ist hierfür cosima_files.txt voreingestellt. Mit dem Parameter WriteDataBase läßt sich überdies steuern, ob eine neue Datei angelegt oder ob eine schon vorhandene weitergeführt werden soll. Aktuell (Version 0.9i4) werden folgende Einträge verwendet:
|
Details for cosima_files.txtFor every analysis run (with EstimateGeometry = 1) Cosima creates an image list with all found analysis values. This is a pure ASCII text file. The name of this file is specified with the ListofImages parameter, the default is cosima_files.txt. With the WriteDataBase parameter you can also control, whether a new file should be created or whether an existing one continued. Currently (version 0.9i4) the following entries are used:
|