|
|
|||||||||||||||
![]() |
||||||||||||||||
|
||||||||||||||||
|
|
#31 |
|
Themenersteller
Registriert seit: 17.05.2005
Ort: in der Nähe von Köln
Beiträge: 2.052
|
Hallo eiq,
ich bin beeindruckt, Dein Programm liest sich sehr gut! Leider kann ich es nicht laufen lassen, da ich keinen C-Compiler habe. Meine oben angeschnittenen Gedanken möchte ich deshalb mit COMAL Zeilen erläutern, wo so große Felder leider nicht erlaubt sind. Zunächst werden drei Felder deklariert für die drei RAW-Daten. 0090 DIM feld1#(-4:3011,-4:2003) //Original 0091 DIM feld2#(-4:3011,-4:2003) // Dunkelbild (evtl Mittelwert von mehreren Dunkelbildern) 0092 DIM feld3#(-4:3011,-4:2003) // Ergebnis Es folgt das Lesen der Daten für file 1 und file 2 in der Art 0440 FOR y#:= -4 TO 2003 DO 0450 FOR x#:=-4 TO 3011 STEP 2 DO 0460 // step 2, da 3 Byte fuer 2 Pixel gelesen werden 0550 dwert1$:=""; dwert2$:="" 0560 FOR k:=1 TO 3 DO 0570 a$:=GET$(1,1) 0580 IF a$="" THEN a$:=CHR$(0) 0600 dwert1$:=dwert1$+a$ 0610 ENDFOR k 0630 // aus drei 8-Bit-Werten werden zwei 12-bit-werte 0650 drei8_in_zwei12(dwert1$,wertfile1pix1#,wertfile1pi x2#) 0700 feld1#(x#,y#):=wertfile1pix1# 0710 feld1#(x#+1,y#):=wertfile1pix2# 0730 ENDIF 0740 ENDIF 0770 ENDFOR x# 0780 ENDFOR y# Dann wird Feld 3 erzeugt durch Subtraktion. Wegen der Organisation der Pixel auf dem Chip (x nach rechts, y nach unten, Startwerte jeweils -4) rgrgrgrgrgrgrg gbgbgbgbgbgb rgrgrgrgrgrgrg gbgbgbgbgbgb rgrgrgrgrgrgrg gbgbgbgbgbgb müssen dann im Bereich 0<=x<=3007(***); 0<=y<=1999 "Löcher" im File 3 gesucht werden und durch Interpolation ersetzt werden. Für BLAU (wenn x ungerade und y ungerade) und für ROT (Wenn x gerade und y= gerade) könnte man Mittelwerte von den Positionen x-2 und x+2 und y-2 und y+2 bilden. Für die übrig bleibenden GRÜNen Pixel Mittelwerte aus den 4 umgebenden grünen Pixeln bei x+/-1, y+/-1. Gruß, Stuessi (***) Wert korrigiert |
|
|
|
| Sponsored Links | |
|
|
|
|
|