Kurven für alle (Curves for all)

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

Zu schnell?

Beitragvon Sinter » 18.06.2010, 11:14

Hallo TaiJiGong,

meinst Du mit "zu schnell" dass die Kamera noch nicht vollständig fokussiert hat?

Viele Grüße,
Sinter
Ixus 60 (SD600) Firmware 1.00a
CHDK-DE aktuelle Version
Benutzeravatar
Sinter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 416
Bilder: 2
Registriert: 14.08.2009, 13:16
Wohnort: München

Re: Zu schnell?

Beitragvon TaiJiGong » 18.06.2010, 11:43

Hallo Sinter,

Sinter hat geschrieben:meinst Du mit "zu schnell" dass die Kamera noch nicht vollständig fokussiert hat?


Ja, das wird wohl das Problem gewesen sein.

Viele Grüße, TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Beitragvon TaiJiGong » 19.06.2010, 22:37

Hallo Zusammen,

Anbei etwas Code (Auszug, nicht volllstandig aller Änderungen) für eine Alternative Möglichkeit wie man evtl. den Zugriff auf die RAW-Daten bei CHDK verständlicher (leichter lesbar) machen könnte.

Benötigt wird raw.h und eine weiter Definition in raw.c:

static unsigned short *raw_image_addr;

Dann kann in curves.c mit diesen Funktionen gearbeitet werden. (z.Z habe ich das nur bei den RGB Kurven probiert)

Code: Alles auswählen
unsigned short x,y;
    init_raw_image_addr();
    for(y=CAM_RAW_ROWS; y; y-=2) { //Zeilen
        for(x=CAM_RAW_ROWPIX; x; x-=2) { //Spalten
            set_raw_pixel( x,y,curveR[get_raw_pixel(x,y)]); //r
            set_raw_pixel( x+1,y,curveG1[get_raw_pixel(x+1,y)]); //g1
            set_raw_pixel( x,y+1,curveG2[get_raw_pixel(x,y+1)]); //g2
            set_raw_pixel( x+1,y+1,curveB[get_raw_pixel(x+1,y+1)]); //b
        }
    }


geänderte habe ich die Funktionen:

get_raw_pixel(...)
set_raw_pixel(...)

Vieleicht können wir das Gemeinsam mit den von CHDKLover gemachten schönen Erweiterungen bei den Kurven mal testen.

Viele Grüße, TaiJiGong
Dateianhänge
raw.h
Siehe die get/set-raw-pixel Funktionen.
(4.46 KiB) 555-mal heruntergeladen
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Beitragvon TaiJiGong » 20.06.2010, 21:31

Nochmal aktuallisiert.
Dateianhänge
raw.h
(4.31 KiB) 553-mal heruntergeladen
Zuletzt geändert von TaiJiGong am 21.06.2010, 20:30, insgesamt 1-mal geändert.
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Beitragvon TaiJiGong » 21.06.2010, 20:26

Hallo CHDKLover,

Habe jetzt die ganzen #ifdef ... entfernt, jetzt sollte es auch mit 10 bit/pixel gehen.
Code: Alles auswählen

#pragma GCC optimize ("-O3")
void curveRGB_apply()
{
    // Set pointer to picture raw data in memory
    init_raw_image_addr();
   
    unsigned short *curveR   = curve_data;
    unsigned short *curveG1 = curveR + CURVE_SIZE;
    unsigned short *curveG2 = curveG1 + CURVE_SIZE;
    unsigned short *curveB    = curveG2 + CURVE_SIZE;
 
    unsigned short x,y;
    // Loop through picture rows
    for(y=CAM_RAW_ROWS; y; y-=2)
    { //Zeilen
        for(x=CAM_RAW_ROWPIX; x; x-=2)
        { //Spalten

#if cam_CFAPattern==0x02010100 // Red  Green  Green  Blue
        set_raw_pixel( x,  y,  curveR[  get_raw_pixel( x,   y  ) ]); //r
        set_raw_pixel( x+1,y,  curveG1[ get_raw_pixel( x+1, y  ) ]); //g1
        set_raw_pixel( x,  y+1,curveG2[ get_raw_pixel( x,   y+1) ]); //g2
        set_raw_pixel( x+1,y+1,curveB[  get_raw_pixel( x+1, y+1) ]); //b
#elif cam_CFAPattern==0x01000201 // Green  Blue  Red  Green
        set_raw_pixel( x,  y,  curveG1[ get_raw_pixel( x,   y  ) ]);
        set_raw_pixel( x+1,y,  curveB[  get_raw_pixel( x+1, y  ) ]);
        set_raw_pixel( x,  y+1,curveR[  get_raw_pixel( x,   y+1) ]);
        set_raw_pixel( x+1,y+1,curveG2[ get_raw_pixel( x+1, y+1) ]);
#endif
        }
    }
}
#pragma GCC reset_options


Ich habe auch einen ersten Versuch mit Bild-Filtern gemacht, das braucht ca. 30 sec bei meiner Kamera, aber geht schon mal, Das war der Grund warum ich mich für diese Änderungen interressiere. Da ich dafür einen einfachen (verständlichen und leicht nutzbaren) und halbwegs effizenten Zugriff auf den Raw-Speicher brauche.

Bei Interresse, könnten wir das bei den Kurven testen, und wenn dann nichts dagegenspricht, könnte man das in CHDK-DE mit (evtl. als Option) übernehmen. Bei der Integierung werde ich natürlich helfen.

Viele Grüße, TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Bearbeitungszeit

Beitragvon Sinter » 23.06.2010, 16:51

Hallo TaiJiGong,

ist meine Vermutung korrekt, dass deine 30 Sekunden für den Bildfilter weitgehend von der Pixelanzahl (und natürlich Kamera-Prozessor) abhängen?

Viele Grüße,
Sinter
Ixus 60 (SD600) Firmware 1.00a
CHDK-DE aktuelle Version
Benutzeravatar
Sinter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 416
Bilder: 2
Registriert: 14.08.2009, 13:16
Wohnort: München

Re: Bearbeitungszeit

Beitragvon TaiJiGong » 23.06.2010, 18:03

Hallo Sinter,

Sinter hat geschrieben:ist meine Vermutung korrekt, dass deine 30 Sekunden für den Bildfilter weitgehend von der Pixelanzahl (und natürlich Kamera-Prozessor) abhängen?


Ja, das ist sicher so. Sollte direkt proportional zur Pixelanzahl sein.

Viele Grüße, TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Beitragvon f_m_b » 03.07.2010, 23:05

Hallo CHDKLover

ich habe das Testskript auf meiner SX20 1.02b ablaufen lassen. (Zebra aus)
Es wurde eine CRW-Datei geschrieben, die ich mit meinen Programmen allerdings nicht anschauen kann, und weitere 15 JPGs die von den Tonwerten in etwa dem entsprechen was Du als Referenz eingestellt hast.

Als Motiv habe ich uhrzeitbedingt allerdings nur meinen Monitor (diese Forumsseite) abgelichtet was vielleicht nicht ganz so aussagefähig ist.
Ich versuche mich morgen an einem etwas spannenderen Motiv. ;)
Auf was sollte ich bei den Ergebnissen achten?
f_m_b
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 30.05.2010, 21:59
Kamera(s): -

Beitragvon f_m_b » 04.07.2010, 23:15

Ich habe heute weitere 9 Testreihen mit dem Skript von CHDKLover durchgeführt. Die SX20 ist dabei weiterhin nicht abgestürzt.

Die erzeugten Bilder sehen für mich plausibel aus.

Nur bei einer Testreihe, mit verschlossenem Objektivdeckel, habe ich bei fast allen JPG's einen vertikalen Streifen über die gesamte Bildhöhe (Siehe Anhang). Bei den anderen Testreihen konnte ich das nicht feststellen.

Vielleicht könnte jemand auch mal ins angehängte Log schauen ob die Erzeugungszeiten ok sind.

Noch eine Frage zu den Tonwertkurven:
Könnte man mit einer Tonwertkurve auch typische Fehlfarben der Kamera beseitigen?
Die SX20 hat z.B. Probleme mit bestimmten blau/magenta Tönen.
Also sozusagen eine Farbkalibrierung für eine bestimte Kamera bzw. eines bestimmten Kameramodells vornehmen.

Vielleicht könnte es so gehen:
- eine Farbkarte von der man xyz oder Lab-Werte kennt mit vergleichbaren Lichtverhältnissen aufnehmen
- über etwas Mathematik eine passende Tonwertkurve erzeugen
- der Kamera permanent mitgeben?
Dateianhänge
curve.txt
(566 Bytes) 549-mal heruntergeladen
IMG1.JPG
Streifen im Bild. Ausschnitt aus rechter unterer Ecke.
f_m_b
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 148
Registriert: 30.05.2010, 21:59
Kamera(s): -

Beitragvon Belichter » 06.07.2010, 21:22

Hallo zusammen,

den Test habe ich erneut durchgeführt.
Die Ergebnisse sind mit den Beispielen vergleichbar.

Ich habe mal die verfügbaren Logdateien nebeneinander gestellt.

Meine Ixus trödelt wohl leicht. :(

Bei TaiJiGong weichen die Werte stark ab. Bei den 30 ms stimmt vermutlich was nicht.
Bei Hamster sind die Werte mit kleiner Streuung.

Die SX20 ist der Burner.

bis dann
Dateianhänge
alleTests.xls
Curve Test
(11 KiB) 546-mal heruntergeladen
IXUS 970 IS 100b
Belichter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 170
Bilder: 11
Registriert: 21.05.2009, 09:21
Wohnort: Solingen
Kamera(s): ixus 970 IS 100b

Beitragvon CHDKLover » 12.07.2010, 14:23

Hallo,
Danke für eure Tests!!!
Bitte Entschuldigt, dass ich lange nicht mehr geantwortet habe. (Hab gerade Prüfungen)

@f_m_b
Der weiße Streifen ist auffällig, aber die Herkunft ist mir auch rätselhaft.
Vielleicht könnte jemand auch mal ins angehängte Log schauen ob die Erzeugungszeiten ok sind.

Die Erstellungszeiten sind OK.

Könnte man mit einer Tonwertkurve auch typische Fehlfarben der Kamera beseitigen?
In einem gewissen Grad währe es möglich, aber sobald es nicht um eine Farbraumdrehung geht. Ein weiteres Problem ist die Verarbeitungsgeschwindigkeit. Die Kurven sind nicht für eine permanente Anwendung gedacht.

@Belichter
Die Zeiten, die die Kamera in das Log schreibt sind wirklich nur Richtwerte, sie weichen stark nach oben ab.

CHDKLover
A610 100e CHDK-DE: aktuelle Version
Benutzeravatar
CHDKLover
Super-Mod
Super-Mod
 
Beiträge: 878
Bilder: 8
Registriert: 12.09.2007, 18:25
Wohnort: Dresden
Kamera(s): a610 100e

Beitragvon TaiJiGong » 14.07.2010, 22:23

Hallo Zusammen,

Habe kurz in den sourcecode geschaut, (aber bin mir nicht sicher wie es im Moment ist).

Das Aufrufen der Kurfen sollte erst nach:

Code: Alles auswählen
    if (conf.bad_pixel_removal) patch_bad_pixels();


gestartet werden. Ich habe den Eindruck das das Problem mit dem Streifen bei "f_m_b" evtl. daher kommen könnte. Sieht man leider in JPG nicht richtig, aber einzelen Pixel haben da wohl den Maximalen Helligkeitswert. (Bei geschlossenen Deckel)

Viele Grüße,

TaiJiGong
Canon IXUS 100 (SD780) Firmware: 1.00C, sonst nur rein mechanische Kameras wie Pentax-MX
TaiJiGong
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 320
Registriert: 08.04.2010, 20:10
Wohnort: München
Kamera(s): IXUS100is, 100c
IXUS IIs (etwas defekt ohne CHDK)

Beitragvon msl » 24.07.2010, 10:05

Hallo,

als ich mir diesen Test-Thread noch einmal angeschaut hatte, war mir aufgefallen, dass die A590 von h3px merkwürdige Ergebnisse liefert.

Da die A720 und A590 von der Firmware her ziemlich identisch sind, habe ich nun auch noch einmal einen Test durchgeführt. Die Ergebnisse der A720 entsprechen den von CHDKLover eingestellten Bildern. Deshalb lade ich die Testbilder auch nicht hoch.

Die Zeiten entsprechen der SX100 von Hamster.78. Aber das ist ja nicht unbedingt relevant.

Die "grünen" Ergebnisse finde ich noch nicht ganz optimal. Ansonsten kann man mit den Resultaten sehr zufrieden sein.

Da ich schon längere Zeit "Alpha-Tester" bei diesem Projekt bin, weiß ich wie viel Arbeit aber auch wie viel Potenzial in diesem Projekt steckt. Und da ist es eigentlich traurig, dass so wenige die Testmöglichkeiten wahrgenommen haben. Wie oft wurde schon von Besitzern einer 12-Bit-RAW-Kamera nachgefragt, wann es denn endlich auch die Kurven-Funktion für diese Kameras gibt.

Einfacher kann man doch nicht testen: Testversion sowie Test-Skript herunterladen und auf SD-Karte speichern. Test-Skript laufen lassen und anschließend hier über die Ergebnisse berichten.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

[Test] Kurven für alle (Curves for all)

Beitragvon homian » 24.07.2010, 17:39

Hallo,
ist mein erster Beitrag ...
Habe vorhin dieses script getestet - Anleitung dazu war sehr gut (!) - und Ergebnis ?

Super mit der SX200IS funktioniert es !!
Die Bilder sind von Farbe, Intensität und Reihenfolge mit den auf Seite 1 zum Vergleich angegebenen ähnlich.

Jetzt müßten wir nur noch weitere Verbesserungen und vor allem Anwendungen (z.B. HDR für Arme) finden ;-))

Bis zum nächsten Test / Beitrag

homian
SX200IS 100c
homian
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 3
Registriert: 22.06.2010, 17:03
Wohnort: Oberbayern

Beitragvon msl » 25.07.2010, 10:00

Hallo und herzlich willkommen.

Sehr vorbildlich. Gleich in einem ersten Beitrag über einen für die CHDK-Weiterentwicklung sehr wichtigen Test berichtet.
Bild

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

VorherigeNächste

Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste