tutorial:image
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
tutorial:image [2015/07/26 13:52] – [Standardabweichung] ninux | tutorial:image [2015/07/26 15:04] (aktuell) – [Beispiel] ninux | ||
---|---|---|---|
Zeile 212: | Zeile 212: | ||
grayMean | grayMean | ||
grayStdDev = std2(Image); | grayStdDev = std2(Image); | ||
+ | </ | ||
+ | |||
+ | ===== Quantisierung ===== | ||
+ | Die Quantisierung eines Bildes gibt an, wie fein abgestuft die Pixelwerte sind in Anzahl Bit. Eine Quantisierung mit 8 Bit hat also eine Abstufung der Grauwerte in 256 Schritten, 6 Bit in 64 Schritten, 4 Bit in 16 Schritten usw. | ||
+ | |||
+ | Um ein gegebenes Bild gröber abzustufen z.B von 8 Bit auf 4 Bit, müssen die Pixelwerte dividiert werden durch die Stufendifferenz (8 Bit - 4 Bit = 4 Bit = 16), gerundet auf ganze Zahlen und danach wieder multipliziert werden mit der Stufendifferenz um die richtige Helligkeit zurück zu erhalten. | ||
+ | |||
+ | ==== Veranschaulichung vom Informationsverlust ==== | ||
+ | Bei der Division und Rundung geht Information verloren, d.h. bei diesem Schritt findet die eigentliche Umwandlung statt. Angenommen wir haben eine Zeile von Pixelwerten zwischen 100 und 120. Es gibt also 20 Abstufungen der Werte. | ||
+ | |||
+ | 100 | ||
+ | 106 | ||
+ | 112 | ||
+ | 118 | ||
+ | |||
+ | Dividiert man nun diese durch 16 (4 Bit) und rundet die Ergebnisse so befinden sich die Lösungen in einem Zahlenraum zwischen 25 und 30. Dies sind lediglich 5 Abstufungen statt wie vorher 20. Multipliziert man nun diese Werte wieder mit 16 so ergibt sich | ||
+ | |||
+ | 96 96 96 96 96 96 | ||
+ | 96 96 96 96 96 96 | ||
+ | 112 | ||
+ | 112 | ||
+ | |||
+ | Diese Werte haben nun zwar die Richtigen Helligkeitsstufen damit das Bild einigermassen richtig aussieht, jedoch geht die Detailträue deutlich zurück. | ||
+ | |||
+ | ==== Beispiel 4 ==== | ||
+ | Das [[https:// | ||
+ | |||
+ | <code octave> | ||
+ | % load the image | ||
+ | Image = imread(imageSource); | ||
+ | | ||
+ | % create the reduced images | ||
+ | Image8bit = Image; | ||
+ | Image6bit = floor(Image8bit/ | ||
+ | Image4bit = floor(Image8bit/ | ||
+ | Image2bit = floor(Image8bit/ | ||
+ | </ | ||
+ | |||
+ | ===== Rasterung ===== | ||
+ | Die Rasterung beschreibt die räumliche Auflösung (Pixelzahl) eines Bildes (im Gegensatz dazu die Quantisierung, | ||
+ | |||
+ | Diese kann im Octave mittel der Funktion '' | ||
+ | |||
+ | ==== Beispiel 5 ==== | ||
+ | |||
+ | Das [[https:// | ||
+ | |||
+ | <code octave> | ||
+ | % load the image | ||
+ | Image = imread(imageSource); | ||
+ | | ||
+ | % create reduced images | ||
+ | Image1 = Image; | ||
+ | Image2 = imresize(Image1, | ||
+ | Image3 = imresize(Image2, | ||
+ | </ | ||
+ | |||
+ | ===== LUT - look up table ===== | ||
+ | Eine LUT (look up table) wird verwendet für die Zuordnung von Pixelwerten. Die Idee und Operation dazu ist relativ simpel. Für jeden Pixelwert gibt es genau einen korresponiderenden Eintag in einer Tabelle (LUT) welcher übernommen wird. Der gelesene Wert im Original dient dabei als Index für die Tabelle (LUT). Es findet also eine lineare und eindeutige Zuordnung von Werten statt beim Anwenden einer LUT. | ||
+ | |||
+ | Im Folgenden ein Prinzipbeispiel einer invertierenden LUT | ||
+ | | ||
+ | LUT Index | ||
+ | LUT Wert 8 7 6 5 4 3 2 1 0 | ||
+ | | ||
+ | ---- | ||
+ | | ||
+ | Image | ||
+ | 0 | ||
+ | 1 | ||
+ | 2 | ||
+ | 4 | ||
+ | 5 | ||
+ | | ||
+ | apllyLUT(Image) | ||
+ | 8 | ||
+ | 7 | ||
+ | 6 | ||
+ | 4 | ||
+ | 3 | ||
+ | |||
+ | ==== Beispiel 6 ==== | ||
+ | Das [[https:// | ||
+ | |||
+ | < | ||
+ | % load the image | ||
+ | Image = imread(imageSource); | ||
+ | | ||
+ | % define look-up-table (LUT) | ||
+ | LUT_inverse = uint8([255: | ||
+ | LUT_bright | ||
+ | LUT_special = uint8(horzcat([0: | ||
+ | | ||
+ | % apply LUTs | ||
+ | ImageInverse = intlut(Image, | ||
+ | ImageBright | ||
+ | ImageSpecial = intlut(Image, | ||
</ | </ |
tutorial/image.1437918773.txt.gz · Zuletzt geändert: 2015/07/26 13:52 von ninux