2 Bilder miteinander verrechnen
Verfasst: 27.04.2013 21:38
Hi,
bin gerade dabei zwei Bilder miteinander zu verrechnen, hier gegeneinander aufzudividieren. Dazu gehe ich wie folgt vor:
1. Ich erzeuge 3 Vektoren mit der Anzahl der Bildpixel
2. Ich lese Bild 1 in den Speicher
3. Ich lese die RGB Werte der einzelnen Pixel aus und schreibe Sie in Vektor 1
4. Vorgang 2+3 Wiederhole ich für das 2. Bild
(Anmerkung: Speichere ich die Bilder in eine Datei und schaue Sie mir an, sind diese OK)
5. Ich Berechne die Bilder und speichere die Daten in den 3. Vektor
6. Das Ergebnis ist ein Fehlfarbenbild, was aber so nicht sein sollte.
Hat jemand eine Idee wo mein Denkfehler liegt?
Nachtrag: So schreibe ich das neue Bild !!
bin gerade dabei zwei Bilder miteinander zu verrechnen, hier gegeneinander aufzudividieren. Dazu gehe ich wie folgt vor:
1. Ich erzeuge 3 Vektoren mit der Anzahl der Bildpixel
Code: Alles auswählen
Dim AddImage1.s(Width*Height)
Dim AddImage2.s(Width*Height)
Dim ResultImage.s(Width*Height)
Code: Alles auswählen
CatchImage(#Image_2,dest,len)
Code: Alles auswählen
StartDrawing(ImageOutput(#Image_2))
i=1
For h = 1 To Height-1
For w = 1 To Width-1
strTMP.s = Str(Red(Point(w,h))) + ";"
strTMP.s + Str(Green(Point(w,h))) + ";"
strTMP.s + Str(Blue(Point(w,h)))
AddImage1(i) = strTMP.s
i+1
Next
Next
StopDrawing()
(Anmerkung: Speichere ich die Bilder in eine Datei und schaue Sie mir an, sind diese OK)
5. Ich Berechne die Bilder und speichere die Daten in den 3. Vektor
Code: Alles auswählen
Procedure.s Division(r1val.i,g1val.i,b1val.i,r2val.i,g2val.i,b2val.i)
; E = (256 x I) / (M + 1) (Bilder dividieren) Quelle: http://docs.gimp.org/de/gimp-concepts-layer-modes.html
ProcedureReturn Str((r1val * 256)/(r2val + 1)) + ";" + Str((g1val * 256)/(g2val + 1)) + ";" + Str((b1val * 256)/(b2val + 1))
EndProcedure
For i = 1 To (Width*Height)-1
ResultImage(i) = Division(Val(Left(AddImage2(i),3)),Val(Mid(AddImage2(i),5,3)),Val(Right(AddImage2(i),3)),Val(Left(AddImage1(i),3)),Val(Mid(AddImage1(i),5,3)),Val(Right(AddImage1(i),3)))
Next
Hat jemand eine Idee wo mein Denkfehler liegt?
Nachtrag: So schreibe ich das neue Bild !!
Code: Alles auswählen
StartDrawing(ImageOutput(#Image_Add))
i=1
For h = 1 To Height-1
For w = 1 To Width-1
Plot(w,h,RGB(Val(Left(ResultImage(i),3)),Val(Mid(ResultImage(i),5,3)),Val(Right(ResultImage(i),3))))
i+1
Next
Next
StopDrawing()