Laden...

Wertebereich von Int und double zu klein.

Erstellt von digi333 vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.181 Views
D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 16 Jahren
Wertebereich von Int und double zu klein.

Ich möchte von 2 Bildern den Fehler berechnen, dass heißt ich ziehe vom ersten Bild den Pixel an der Stelle (x,y) ab mit dem an Stelle (x,y) beim zweiten Bild - Differenz der Pixelwerte. Dass heißt im worst case habe ich als Differenz 255 (P1(x,y)=0; P2(x,y)=255). Der Fehler ist aber nicht die Differenz sondern das Quadrat daraus... also worst case 255255=65025. Jetzt hat aber ein Bild nicht nur einen Pixel sondern in der Regel 640x480... also worst case 210^10. Letztendlich wird es zwar nochmal normiert auf die Anzahl der Pixel, aber ich bin ja schon vorher weit über den Wertebereich von Integer und Double.

Wie kann ich also innerhalb des Wertebereichs bleiben??? (Ich möchte aber auch kein Int64 nutzen).

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo digi333,

Ich möchte aber auch kein Int64 nutzen

warum den das nicht? Wäre doch hier genau das richtige.

herbivore

S
8.746 Beiträge seit 2005
vor 16 Jahren

Tipp: Teile den Fehler durch 255. 0 entspricht dann keinem Fehler, 1 ist der maximale Fehler. Da kommste locker mit nem double hin. Und für die Optimierung ist das ohne Belang.

363 Beiträge seit 2007
vor 16 Jahren

Ich glaube du gehst da schon vom Ansatz her falsch ran, rechne doch erst zum schluß alles zusammen und normiere dann den fehler.
Also erst die differenz in ein gleichgroßes Array schreiben und dann zum schluß ne schleife über alles die Quadrat und aufsummiert. Für das Zwischenergebnis kannste ja ruhig nen größeren wertebereich nehmen, nach dem normieren castest das einfach wieder auf int, sollte ja dann locker reichen.

Gruß Cookiie

"Hail to the King, Baby!"

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Cookiie,

warum sollte der Ansatz falsch sein? So wie du es vorschlägst ist es doch unnötig kompliziert und um den größeren Datentyp kommst auch du nicht herum.

herbivore