• Neuer Gutscheincode unseres Partners Schutzfolien24:
    DSLR-Forum2025
    Dauerhaft 10% Rabatt auf alle Displayschutzfolien und Schutzgläser der Eigenmarken
    "Upscreen", "Screenleaf", BROTECT" und "Savvies".
    Der Code ist für alle Geräteklassen gültig.
  • Stimmt ab über die Sieger des DSLR-Forum Fotowettbewerbs Juli 2025.
    Thema: "Unscharf"

    Nur noch bis zum 31.07.2025 23:59!
    Jeder darf abstimmen!
    Zur Abstimmung und Bewertung hier lang
  • In eigener Sache!

    Liebe Mitglieder, liebe Besucher und Gäste
    ich weiß, es ist ein leidiges Thema, aber ich muss es ansprechen: Werbung, Werbeblocker und Finanzierung des Forums.
    Bitte hier weiterlesen ...

  • Nicht erreichbare Adressen im Benutzerkonto
    Wir bekommen zurzeit eine große Anzahl an E-Mails, die das System zum Beispiel als Benachrichtigungen an Nutzer verschickt,
    als unzustellbar zurück, weil z.B. die Adressen nicht erreichbar sind oder das Postfach gar nicht existiert.
    Stellt doch bitte sicher, dass die Benachrichtigungen, die ihr vom System erwartet, auch zugestellt werden können.
    Nicht erreichbare E-Mail-Adressen sind dazu wenig hilfreich.
    Danke!
WERBUNG

Hohe ISO - größere Dateigrößen?!

Komprimierte Dateigrößen
ohne: 2,4MB (Original)
1sigma: 1,1MB (Quantisierung mit 1 Sigma wie von Frank vorgeschlagen)
2sigma: 0,8MB (Quantisierung mit 2 Sigma, grenzwertig)
4sigma: 0,55MB (Quantisierung mit 4 Sigma, unbrauchbar)
Artefakte vermeidet man zu 100% mit subtraktivem Dithering.

Kein Dithern: Rauschen = 100%, Artefakte bei zu wenig verrauschtem Signal
Additives Dithern: Rauschen = 300%, Artefaktfrei
Subtraktives Dithern: Rauschen = 100%, Artefaktfrei

Man hat dann wirklich nur normales zusätzliches Rauschen:
  • 1sigma: +8,3%
  • 2sigma: +33%
  • 4sigma: +133%
Meine Vorschläge liegen zwischen 0,5sigma und 1,5sigma (+2% und +19%).

Kennst Du nen Weg nem halbwegs gängigen RAW-Converter so ne "handgestrickte" (dekomprimierte) RAW-Datei unterzuschieben?
Man kann nur dcraw aufbohren, verwenden und danach wieder wegwerfen.
Der Autor übernimmt keinerlei Modifikationen im Code, sonst hätte ich da schon mal etwas aufgeräumt (Funktionalität, Codestyle, Geschwindigkeit).

Sinnvolle Raw-Komprimierung wollt ich schon lange probieren, ohne akzeptablen Workflow dannach machts aber wenig Sinn.
DNG erlaubt nichtlineare Komprimierung. Man müßte seine Dateien nach DNG konvertieren. Mit einem eigenen Programm. Könnte man auch in dcraw einbauen, allerdings sehe ich auch hier wenig Chancen, daß der Autor die Mods übernimmt.

Derzeit:
Input
  • diverse Kameraformate
  • DNG
Output:
  • 8 bit, 16 bit, 16 bit lin
  • PPM, TIFF

Mod wäre
Input
  • diverse Kameraformate
  • DNG
  • PGM mit ein paar Metainfos
Output:
  • 8 bit, 16 bit, 16 bit lin
  • PPM, TIFF
  • DNG
Allerdings befürchte ich, daß in DNG subtraktives Dithern vergessen wurde. Bei Sigma<=0,8 sollte das auch in de Theorie keine Rolle spielen. Angenehm wäre trotzdem eine 100% Garantie von Tonwertabrissen, auch bei 5 oder 10sigma.
 
Zuletzt bearbeitet:
Hatte ich fast befürchtet... Damit bleibts erst mal noch graue Theorie.
Mit dcraw hatte ich auch schon mal rumprobiert. Der Code wäre tatsächlich "strukturierungsbedürftig".

Das mit den 4 Sigma war eigentlich nur ein Test, wobei das Hauptproblem die Tonwertabrisse sind die sich ja anscheinend vermeiden lassen.
1 Sigma fände ich auch passend. Wobei in den Lichtern noch mehr problemlos sein sollte. Bei der 40D@ISO100 wärens ca. 130 Codes für die hellsten 2 Blendenstufen. 60 Codes sollten dafür doch eigentlich dick reichen, oder?

subtraktives Dithering
Hatte ich noch nie gehört. Ich habs so verstanden:
  • auf einheitlichen Informationsgehalt normieren (wie Quantisierung nur mit float)
  • definiertes Rauschsignal mit 1 Sigma (entsprechend nachfolgender Quantisierung) dazugeben; evtl. auch das Doppelte
  • Quantisierung auf 1 Sigma (hier nur noch Teilen durch Sigma des Ausleserauschens)
  • zur Dekomprimierung das ganze rückwärts (mit identischem Rauschsignal)
Funktionierts so?
 
RAW wird verlustfrei komprimiert: Sonst wäre das Bild einer Kamera 4000 x 3000 Pixel x 2x3 Byte für die Farben = 72.000.000 Byte = 72 MB groß; meistens ist es jedoch kleiner.


Denkfehler, ohne Kompression ware die Datei 4000x3000 Pixel x 1.5 Byte( 12 Bit Sensor) oder 4000x3000 Pixel x 1.75 Byte( 14 Bit Sensor)

RGB wird erst aus dem Bayer Pattern erzeugt und 24 Bit nie :D
 
Hatte ich fast befürchtet... Damit bleibts erst mal noch graue Theorie.
Mit dcraw hatte ich auch schon mal rumprobiert. Der Code wäre tatsächlich "strukturierungsbedürftig".

Das mit den 4 Sigma war eigentlich nur ein Test, wobei das Hauptproblem die Tonwertabrisse sind die sich ja anscheinend vermeiden lassen.
1 Sigma fände ich auch passend. Wobei in den Lichtern noch mehr problemlos sein sollte. Bei der 40D@ISO100 wärens ca. 130 Codes für die hellsten 2 Blendenstufen. 60 Codes sollten dafür doch eigentlich dick reichen, oder?

subtraktives Dithering
Hatte ich noch nie gehört. Ich habs so verstanden:

x = kontinuierliche Größe
X = quantisierte Größe
y = rekonstruierte Größe
|a| = auf ganzzahligen Wert gerundetes a
c = Konstante (bei äquidistantem Quantisieren)

Ohne Dither

X_ij = |c x_ij|
y_ij = X_ij / c

Additives Dither

X = |c x_ij + d_ij]
y_ij = X_ij / c

Subtraktives Dither

X = |c x_ij + d_ij]
y_ij = (X_ij - d_ij) / c

Bei Bildern reicht für d_ij die Definition auf einem 8x8 bis 16x16-Gebiet und eine periodische Wiederholung. Bei subtraktivem Dither muß es auf der Dekoderseite bekannt sein (es muß das gleiche wie beim Kodieren sein).

Ideales Ditheringsignal hat eine dreieckige Verteilung im Intervall [-1,+1].

double D(int i, int j)
{
i &= 15 ;
j &= 15 ;
x = pseudo_random_between_0_1 (i,j); // gleichverteilte Zufallszahl zwischen 0 und 1
y = pseudo_random_between_0_1 (i,j); // gleichverteilte Zufallszahl zwischen 0 und 1
return x-y ;
}
 
Zuletzt bearbeitet:
Kannst du kurz in verständlich zusammenfassen? Nicht jeder spricht marsianisch...
Frank hat das irgenwo schon mal gesagt:

Du kannst ein Bild nur dann komprimieren, wenn es Zusammenhänge zwischen den einzelnen Pixeln gibt, die sog. redundanten Informationen. Diese können mit verschiedenen Methoden aus dem Bild entfernt werden:
- verlustfrei, dann lässt sich das Originalbild wiederherstellen
- verlustbehaftet, das Originalbild lässt sich nur annähernd wieder herstellen.

Beim idealen Rauschen (dem sog.weissen Rauschen) gibt es keinen Zusammenhang zwischen den einzelnen Pixeln.

Für ein Bild aus vollständig weissem Rauschen gilt
- verlustfrei lässt sich so ein Bild überhaupt nicht komprimieren, es bleibt so groß wie das Original.
- verlustbehaftet entsteht bei Erzwingen von Kompressionsfaktoren beliebiger Müll und wenn es noch Ähnlichkeit mit dem Original haben soll, so ist es zumindest sehr groß.

Für ein Bild welches mehr Rauschanteile enthält ergibt sich somit, dass es nach der Komprimierung grösser ist als ein Bild welches weniger Rauschanteile enthält.

Genau dies ist der Hintergrund der Beobachtung, die zu diesem Thread geführt hat:
ISO100 (wenig Rauschen) - Dateigrösse X
ISO1600 (mehr Rauschen) - Dateigrösse ist grösser X

Nun kann man den Faden natürlich weiter spinnen. Wir können nun betrachten wie das Rauschen rausgerechnet werden kann, dies ist aber Off Topic ......
 
Frank hat das irgenwo schon mal gesagt:

Du kannst ein Bild nur dann komprimieren, wenn es Zusammenhänge zwischen den einzelnen Pixeln gibt, die sog. redundanten Informationen. Diese können mit verschiedenen Methoden aus dem Bild entfernt werden:
- verlustfrei, dann lässt sich das Originalbild wiederherstellen
- verlustbehaftet, das Originalbild lässt sich nur annähernd wieder herstellen.
Ich wähle hier verlustbehaftet.

Beim idealen Rauschen (dem sog.weissen Rauschen) gibt es keinen Zusammenhang zwischen den einzelnen Pixeln.

Für ein Bild aus vollständig weissem Rauschen gilt
- verlustfrei lässt sich so ein Bild überhaupt nicht komprimieren, es bleibt so groß wie das Original.
- verlustbehaftet entsteht bei Erzwingen von Kompressionsfaktoren beliebiger Müll und wenn es noch Ähnlichkeit mit dem Original haben soll, so ist es zumindest sehr groß.

Für ein Bild welches mehr Rauschanteile enthält ergibt sich somit, dass es nach der Komprimierung grösser ist als ein Bild welches weniger Rauschanteile enthält.
Bei geeigneter verlustbehafteter Komprimierung wird es kleiner, weil es zwar viel Unbestimmtheit, aber wenig Nutzinformation (Entropie vs. Information) enthält.

Genau dies ist der Hintergrund der Beobachtung, die zu diesem Thread geführt hat:
ISO100 (wenig Rauschen) - Dateigrösse X
ISO1600 (mehr Rauschen) - Dateigrösse ist grösser X
ISO100 (wenig Rauschen) - Dateigrösse X
ISO1600 (mehr Rauschen) - Dateigrösse ist kleiner als X, weil weniger Nutzinformation und viel mehr uninteressanter Datenmüll.

Wenn wir das Signal einer Kamera in ein Format bringen (y=f(x)), in dem das Rauschen überall eine Standardabweichung von 1 hat und wir betrachten die entstehende Zahl y
als Festkommazahl, dann hat

Bit +4: 0.97536 bit Nutzinformation, 0.02464 bit informationsfreie Entropie
Bit +3: 0.90908 bit Nutzinformation, 0.09092 bit informationsfreie Entropie
Bit +2: 0.72029 bit Nutzinformation, 0.27971 bit informationsfreie Entropie
Bit +1: 0.40368 bit Nutzinformation, 0.59632 bit informationsfreie Entropie
Bit +0: 0.14978 bit Nutzinformation, 0.85022 bit informationsfreie Entropie
---------------------------------------------------------------------------------------------------------
Bit -1: 0.04286 bit Nutzinformation, 0.95714 bit informationsfreie Entropie
Bit -2: 0.01113 bit Nutzinformation, 0.98887 bit informationsfreie Entropie
Bit -3: 0.00281 bit Nutzinformation, 0.99719 bit informationsfreie Entropie
Bit -4: 0.00070 bit Nutzinformation, 0.99930 bit informationsfreie Entropie
Bit -5: 0.00018 bit Nutzinformation, 0.99982 bit informationsfreie Entropie
Bit -6: 0.00004 bit Nutzinformation, 0.99996 bit informationsfreie Entropie
Bit -7: 0.00001 bit Nutzinformation, 0.99999 bit informationsfreie Entropie

Selbst Krümelkacker wie ich behaupten jetzt, daß man die Nachkommabits standardmäßig im Orcus begraben kann, ohne das es eine 5au interessieren
oder gar bemerken würde. Derzeitig wird bei ISO 100 in den Lichtern bis Bit -6 abgespeichert. Das letzte Bit aller 24 Millionen Pixel einer 24 MP-Kamera speichert
in diesem Bit ca. 120 Byte an Information ab. Dafür werden 3 MByte geopfert.
 
Denkfehler, ohne Kompression ware die Datei 4000x3000 Pixel x 1.5 Byte( 12 Bit Sensor) oder 4000x3000 Pixel x 1.75 Byte( 14 Bit Sensor)

RGB wird erst aus dem Bayer Pattern erzeugt und 24 Bit nie :D

OT: War von Dir das Pseudo-Elvis-Bild, in dem der rote und blaue Kanal übersteuert, der grüne Kanal aber gerade noch voll da war?
 
Habs hinbekommen mit den CR2s der 40D :D

Hier mal mein Testbild: http://213.239.205.105/compress/

  • Original CR2, mit Vorschau (11,2MB)
  • Original DNG, ohne Vorschau (9,2MB)
  • komprimiert CR2, mit Vorschau (8,6MB)
  • komprimiert DNG, ohne Vorschau (4,6MB)
  • dekomprimiert CR2, mit Vorschau (11,0MB)
  • dekomprimiert DNG, ohne Vorschau (8,4MB)
Komprimiert mit 1 Sigma und noch ohne subtraktives Dithering, von daher noch Verbesserungsspielraum...

Für die Kompressionsrate ist nur die DNG-Größe wirklich aussagekräftig. Die umkodierten CR2s nutzen die Huffman-Tabellen des Originals und sind damit bei weitem nicht optimal.

Vorschaubild ist immer das von der originalen Aufnahme.
Die paar Pixelreihen die um das eigentliche Bild rum sind hab ich unverändert gelassen, keine Ahnung wofür genau die gut sind.
Die komprimierte Version liegt vom Schwarzwert - wie normale CR2s - bei 1024. Damit kann man die auch ansehen, sieht aber natürlich nicht gut aus.
 
moeglich, wenn du das Bild meinst wo ich im ACR noch weiss herstellen konnte im DPP nie ?

Links Histogramm, rechts Bild.

Histogramm:
* horizontal: -1/768, +1/768, +1/256, +1/128, ..., +1/2, +1 FS
* vertikal: 0%, 10%, 20%, ..., 90%, 100%

Bild:
* normale Farben: kein Kanal übersteuert
* komische Farben: 1 oder 2 übersteuerte Kanäle werden dunkelgetastet
* weiß: Alle 3 Kanäle übersteuert, kein Dunkeltasten
 
Gern. Würde mich interessieren. Ich habe mal ISO 100, 1000, 12800 genommen.
Download drei RAWs (70 MB) - 16 - 25 - 30 MB
Download drei eingebettete JPGs (10 MB) - 0.5 - 3.6 - 6.3 MB

50D-Raws zu schreiben klappt jetzt auch. cr2 ist echt ein merkwürdiges Format. An der ISO12800-Datei hab ichs mal probiert...

http://213.239.205.105/compress/50D_ISO12800/

  • Original CR2 mit: 30MB
  • Vorschau entfernt: 24MB
  • DNG, lossless komprimiert, ohne Vorschau: 21MB
  • CR2, 1Sigma-komprimiert: 12MB
  • DNG, 1Sigma-komprimiert: 8,5MB

Beim DNG immerhin ein Faktor 2,5 und das Raw nur ein Drittel größer als das eingebettete Vorschaubild.

Weiterhin kein Dithering.
Irgendwo schlummern auch noch Rundungsfehler (bei der Lossless-JPEG-Komprimierung) die sich bei so nem Extrembeispiel doch bemerkbar machen. Ich hab nach dem Runden einfach *5 genommen ums abzuschwächen.
Werte unter 1024 hab ich erhalten (quantisiert entsprechend Ausleserauschen).

Bemerkenswert finde ich, dass für das Foto nur 23 (16 wenn man die "schwärzer-als-schwarz"-Werte ignoriert) werthaltige Codes übrigbleiben.
 
Mal 2 vorgeschlagene Dithermatrizen: siehe Anhang.

Ich weiß nicht, ob es eine Optimalmatrix ist, durch den Bayer-Sensor ist die Suche aufwendiger.
Rot, Grün und Blau sowie das Helligkeitssignal müssen brauchbar verdithert werden.

Weiterhin wäre noch zu untersuchen, ab welchen Sigma man diese

  • verwenden könnte (im Sinne, das selbst konstruierte Fälle artefakt-proof sind)
  • verwenden sollte (in kritischen Real World-Beispielen werden bei genauem Hinsehen Unterschiede erkennbar)
  • verwenden muß (weil man sonnst Tonwertabrisse ab und zu sieht)
 
sieht wie mein Bild aus, aber worum gehts ? verstehe deine Frage nicht, ausser ob das Bild von mir ist.......

Quantitatives Sichtbarmachen von Sensor-Übersteuerungen.
So wie ich es mir in einem hochwertigen°) EVF-Sucher wünschen würde.

°)

  • Auflösung: ab 1200 x 800 x RGB oder 900 x 600 x RG/GB
  • Display-Latenzzeit (hat wenig mit der Gray-to-Gray-Latenz zu tun): <5 ms
  • Sensor-to-Display-Latenzzeit: <10 ms bei >10 cd/m²
  • 60 bis 90 fps im Vollbildmodus, 24 bis 30 fps im Zoom-Modus akzeptabel
  • Kontrast: ~1/1000 in einem weiten Helligkeitsbereich
  • Maximalhelligkeit: > 1000 cd/m², dimmbar auf Werte um die 3 cd/m²
  • High Eyepoint: 25 mm, besser 30 mm
  • Anzeige Belichtungs-Histogramm, Entfernungs-Histogramm, etc. zuschaltbar.
  • Leistungsaufnahme (Sensor + Display) bei maximaler Helligkeit: <1 W (8 Stunden Dauerbetrieb oder 4 Stunden Dauerbetrieb + 400 Bilder)
  • Konfigurierbares Stromsparen (Auge weg => dunkel)
 
Die letzten Codes für 14000 und mehr (https://www.dslr-forum.de/showpost.php?p=5040298&postcount=30) können bei ISO100 an der 40D auch noch entfallen.

Man sollte alle möglicherweise auftretenden Werte kodieren können.

"Überflüssige Codes" sollte man in der Tabelle lassen, sie treten entweder überhaupt
nicht oder extrem selten auf und werden dann durch den Entropiecoder gehandhabt.
Aber wenn sie auftreten, kann man sie kodieren.

Die Codetabelle (wenn man sie nichtparametrisiert abspeichert) wird ein paar Millibit länger, das spielt aber bei 15 MPixeln keine Rolle mehr. Bei nichtparametrisierter Abspeicherung würde man aber ohnehin nur die Differenzen abspeichern und diese erst über einen RLE-Coder und dann über einen Entropiecoder geben.

Bei einer 5DII, ISO 100, 1Sigma sieht z.B. die Quantisierungstabelle so aus:

0, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98, 105, 112, 119, 126, 133, 140, 147, 154, 161, 168, 175, 182, 189, 196, 203, 210, 217, 224, 231, 238, 245, 252, 259, 266, 273, 280, 287, 294, 301, 308, 315, 322, 329, 336, 343, 350, 357, 364, 371, 378, 385, 392, 399, 406, 413, 420, 427, 434, 441, 448, 455, 462, 469, 476, 483, 490, 497, 504, 511, 518, 525, 532, 539, 546, 553, 560, 567, 574, 581, 588, 595, 602, 609, 616, 623, 630, 637, 644, 651, 658, 665, 672, 679, 686, 693, 700, 707, 714, 721, 728, 735, 742, 749, 756, 763, 770, 777, 784, 791, 798, 805, 812, 819, 826, 833, 840, 847, 854, 861, 868, 875, 882, 889, 896, 903, 910, 917, 924, 931, 938, 945, 952, 959, 966, 973, 980, 987, 994, 1001, 1008, 1015, 1022, 1029, 1036, 1043, 1050, 1057, 1064, 1071, 1078, 1086, 1094, 1102, 1110, 1118, 1126, 1134, 1142, 1151, 1160, 1169, 1178, 1187, 1196, 1205, 1214, 1224, 1234, 1244, 1254, 1264, 1274, 1284, 1294, 1305, 1316, 1327, 1338, 1349, 1360, 1371, 1382, 1394, 1406, 1418, 1430, 1442, 1454, 1466, 1478, 1491, 1504, 1517, 1530, 1543, 1556, 1569, 1582, 1596, 1610, 1624, 1638, 1652, 1666, 1680, 1694, 1708, 1723, 1738, 1753, 1768, 1783, 1798, 1813, 1828, 1844, 1860, 1876, 1892, 1908, 1924, 1940, 1956, 1973, 1990, 2007, 2024, 2041, 2058, 2075, 2092, 2110, 2128, 2146, 2164, 2182, 2200, 2218, 2236, 2255, 2274, 2293, 2312, 2331, 2350, 2369, 2388, 2408, 2428, 2448, 2468, 2488, 2508, 2528, 2548, 2569, 2590, 2611, 2632, 2653, 2674, 2695, 2716, 2738, 2760, 2782, 2804, 2826, 2848, 2870, 2892, 2915, 2938, 2961, 2984, 3007, 3030, 3053, 3076, 3100, 3124, 3148, 3172, 3196, 3220, 3244, 3268, 3292, 3317, 3342, 3367, 3392, 3417, 3442, 3467, 3492, 3518, 3544, 3570, 3596, 3622, 3648, 3674, 3700, 3727, 3754, 3781, 3808, 3835, 3862, 3889, 3916, 3944, 3972, 4000, 4028, 4056, 4084, 4112, 4140, 4169, 4198, 4227, 4256, 4285, 4314, 4343, 4372, 4402, 4432, 4462, 4492, 4522, 4552, 4582, 4612, 4643, 4674, 4705, 4736, 4767, 4798, 4829, 4860, 4892, 4924, 4956, 4988, 5020, 5052, 5084, 5116, 5149, 5182, 5215, 5248, 5281, 5314, 5347, 5380, 5414, 5448, 5482, 5516, 5550, 5584, 5618, 5652, 5686, 5721, 5756, 5791, 5826, 5861, 5896, 5931, 5966, 6002, 6038, 6074, 6110, 6146, 6182, 6218, 6254, 6291, 6328, 6365, 6402, 6439, 6476, 6513, 6550, 6588, 6626, 6664, 6702, 6740, 6778, 6816, 6854, 6893, 6932, 6971, 7010, 7049, 7088, 7127, 7166, 7206, 7246, 7286, 7326, 7366, 7406, 7446, 7486, 7527, 7568, 7609, 7650, 7691, 7732, 7773, 7814, 7856, 7898, 7940, 7982, 8024, 8066, 8108, 8150, 8193, 8236, 8279, 8322, 8365, 8408, 8451, 8494, 8538, 8582, 8626, 8670, 8714, 8758, 8802, 8846, 8891, 8936, 8981, 9026, 9071, 9116, 9161, 9206, 9251, 9297, 9343, 9389, 9435, 9481, 9527, 9573, 9619, 9666, 9713, 9760, 9807, 9854, 9901, 9948, 9995, 10043, 10091, 10139, 10187, 10235, 10283, 10331, 10379, 10428, 10477, 10526, 10575, 10624, 10673, 10722, 10771, 10821, 10871, 10921, 10971, 11021, 11071, 11121, 11171, 11222, 11273, 11324, 11375, 11426, 11477, 11528, 11579, 11631, 11683, 11735, 11787, 11839, 11891, 11943, 11995, 12048, 12101, 12154, 12207, 12260, 12313, 12366, 12419, 12473, 12527, 12581, 12635, 12689, 12743, 12797, 12851, 12906, 12961, 13016, 13071, 13126, 13181, 13236, 13291, 13347, 13403, 13459, 13515, 13571, 13627, 13683, 13739, 13795, 13852, 13909, 13966, 14023, 14080, 14137, 14194, 14251, 14309, 14367, 14425, 14483, 14541, 14599, 14657, 14715, 14774, 14833, 14892, 14951, 15010, 15069, 15128, 15187, 15247, 15307, 15367, 15427, 15487, 15547, 15607, 15667, 15728, 15789, 15850, 15911, 15972, 16033, 16094, 16155, 16217, 16279, 16341, 16383

Die Differenztabelle:
Startwert: 0
Differenzen: 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 36, 36, 36, 36, 36, 36, 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 46, 46, 47, 47, 47, 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 49, 49, 49, 50, 50, 50, 50, 50, 50, 50, 50, 51, 51, 51, 51, 51, 51, 51, 51, 52, 52, 52, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 54, 54, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, 62, 62, 62, 62, 42

Die kann man kodieren:
Startwert: 0
154x7, 8x8, 8x9, 8x10, 8x11, 8x12, 8x13, 9x14, 8x15, 8x16, 8x17, 8x18, 8x19, 8x20, 8x21, 8x22, 8x23, 9x24, ..., 8x61, 4x62, 1x42

Daraus wir ein:
0, (Startwert)
57, (Anzahl der Codeabstände)
[154, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 8, 8, 8 ,8 ,8, 8, 8, 8, 9, ..., 8, 4, 1], (Häufigkeit der einzelnen Codeabstände: 8 bit unsigned)
[+7, +1, +1, +1, +1, +1, ..., -20] (Größenentwicklung der Codeabstände: 8 bit signed)

Nach einer Entropiekodierung bleiben davon ~40 Byte übrig.
 
Da stellt sich mir dann die Frage ob das visuell wahrgenommene Rauschen eher von den wenigen Pixeln mit großer Abweichung oder von der Masse der "normalen" Pixel kommt.

Das visuell störende Rauschen kommt weniger von der großen Masse an normal rauschenden Pixeln, sondern mehr durch

  • die von Dir schon genannten Ausreißer, insbesondere, weil diese von der typischen Signalverarbeitung nicht reduziert (rauschgefiltert), sondern angehoben (scharfgezeichnet) werden, weil sie als Details fehlinterpretiert werden,
  • Strukturrauschen, was tieffrequente und gut sichtbare Strukturen auch nach Bildverkleinerung hinterläßt und die obligatorische SNR-Verbesserung von 6 dB pro Halbierung der linearen Auflösung wegknabbert. Insbesondere farbige Streifen sind hier sehr auffällig. Ich habe aber noch nicht untersucht, ob diese bei Serienbildern stationär sind. Sind sie stationär, dann ist die heutige Signalverarbeitung noch verbesserungsfähig.
  • Bei extremen ISO-Werten scheint weiterhin die Schwarzwertbestimmung fast nie zu stimmen, was zu violett verfärbten Schatten führt (die Schwarzwertabschätzung ist meist etwas zu klein°)
Bei Kameras der nahen Zukunft erwarte ich hier eine deutliche Verbesserung durch hochwertige(!) RAW-Vorverarbeitung. Hochwertig heißt hier nicht, daß Sterne verschwinden oder daß das R- und B-Signal einfach rauschgefiltert wird, sondern das intern Statistiken geführt und verwendet werden. Dazu ist natürlich Verarbeitungsleistung und RAM notwendig.

Hochwertig wäre z.B. die Aufnahme von 16 Dunkelbildern bei Bedarf (Batteriewechsel, Temperaturänderung um mehr als 0,5 K am Sensor, mehr als 1 Stunde seit der letzten Kalibrierung vergangen) und dem Anlegen einer Abweichungstabelle für Pixel. Unauffällige Pixel werden belassen, wie sie sind, auffällige werden einem Wiener-Filterung unterzogen. Ziel ist es dabei nicht, eine entgültige Rauschfilterung durchzuführen, sondern das Rauschen überall im Bild etwa auf gleichem Level zu halten, was Grundvoraussetzung für eine gute finale Rauschfilterung ist.

Wenn man dieses Bild (was allerdings das Dunkelrauschen zeigt) nimmt, würde man sich je nach Mentalität um den Teil im Bild kümmern, der unterhalb von 90 Werten/ADC-Wert (der gesamte asymmetrische Teil) oder unterhalb von 15 Werten/ADC-Wert (der offensichtliche Schwanz) kümmern. Betroffen sind ca. 0,1-0,2% der Pixel, d.h. 10.000 bis 30.000 Pixel, die als Reiskörner im Bild auffallen.

Neben dieser Entfernung von Reiskörnern hätte man auch einen besseren Schätzer für den Schwarzwert, wenn man sich den Mittelwert der Pixel aufhebt.

Bild von der französischen Astrosurf-Seite:
40d_histo.png


°)
Weißwert-Multiplizierer: RGB: 2.5, 1, 1.5
ADC-Werte: 1036, 1054, 1044
Wirklicher Schwarzwert: 1024
=> (1036-1024)*2.5, (1054-1024)*1, (1044-1024)*1.5 => (30, 30, 30) = dunkelgrau
Falsch geschätzter Schwarzwert von: 1020
=> (1036-1020)*2.5, (1054-1020)*1, (1044-1020)*1.5 => (40, 34, 36) = violett angehaucht.
 
Sinnvolle Raw-Komprimierung wollt ich schon lange probieren, ohne akzeptablen Workflow dannach machts aber wenig Sinn.

Die Verwendung solcher RAWs hat im wesentlichen drei Haupteffekte:
  • A) Man bekommt mehr RAW-Bilder auf eine Speicherkarte.
  • B) Die Serienbildlänge wird länger bzw. im günstigsten Fall unendlich lang.
  • C) Man spart Speicherplatz bei der finalen Archivierung, wenn man seine RAWs aufhebt.
A) und B) bekommt man ohnehin nicht hin, und das sind IMHO die beiden Kriterien, die in der Praxis am meisten relevant sind.
C) läuft im wesentlichen darauf hinaus, das man sich mit DNG arrangiert und untersucht, wie gut das Format nutzbar ist. Hauptproblem dürfte das Dithering sein.

Du scheinst einen DNG => CR2-Kodierer geschrieben zu haben? CR2 ist, soweit ich gesehen habe, Lossless JPEG (Quelle: dcraw im Debugger). Ich habe die Quelle mal etwas zerhackt und umformatiert (läßt sich jetzt als C++ übersetzen). Leider sind die Kotzbeutel mittlerweile verbraucht:grumble:. Wie kann man nur so programmieren ???
 
Bemerkenswert finde ich, dass für das Foto nur 23 (16 wenn man die "schwärzer-als-schwarz"-Werte ignoriert) werthaltige Codes übrigbleiben.

Jetzt kannst Du noch die Shannon-Entropie unter Vernachlässigung von Korrelationen zwischen Nachbarpixeln berechnen.

A = Anzahl der Pixel
A_n = Anzahl von Codewort n

E = Sum_n - log2 ( A_n / A) * A_n

Das sind E / A bit pro Pixel.
Theoretischer Grenzwert bei 1sigma-Quantisierung ist 1,85 bit/Pixel.
 
Subtraktives Dithering. Hatte ich noch nie gehört.
Man kommt durch Überlegen drauf. Obwohl es was ganz einfaches ist, stößt man da nicht zufällig drauf. Selbst bei expliziter Suche findet man kaum etwas ...
Ich habs so verstanden:
  • auf einheitlichen Informationsgehalt normieren (wie Quantisierung nur mit float)
Ja.
Das hat aber mit subtraktivem Dithering primär nichts zu tun.
  • definiertes Rauschsignal mit 1 Sigma (entsprechend nachfolgender Quantisierung) dazugeben; evtl. auch das Doppelte
In der Audiotechnik ergibt Gaussrauschen nicht das ideale Ergebnis. Das erreicht man nur durch Dreiecksrauschen mit [-1,+1] (was man durch Subtraktion zweier gleichverteilter Zufallszahlen auf [0,1] erzeugen kann).
Bilder kommen auf Grund der anderen Funktionsweise mit gleichverteiltem Pseudorauschen auf [0,1] besser zurecht.

Gaussrauschen ist in beiden Fällen nicht optimal und schwerer zu erzeugen.
  • Quantisierung auf 1 Sigma (hier nur noch Teilen durch Sigma des Ausleserauschens)
Allgemein auf u Sigma mit u = 0,5 ... 1,5.
  • zur Dekomprimierung das ganze rückwärts (mit identischem Rauschsignal)
Funktionierts so?
Ja.
 
WERBUNG
Zurück
Oben Unten