AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Berechnungen mit Gleitkomma Werten

Ein Thema von itblumi · begonnen am 16. Feb 2024 · letzter Beitrag vom 16. Feb 2024
Antwort Antwort
Seite 2 von 2     12   
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
711 Beiträge
 
Delphi XE5 Professional
 
#11

AW: Berechnungen mit Gleitkomma Werten

  Alt 16. Feb 2024, 14:46
Siehe noch
https://www.delphipraxis.net/211382-...-extended.html
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
726 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Berechnungen mit Gleitkomma Werten

  Alt 16. Feb 2024, 15:28
Danke für eure zahlreichen antworten, mir war nicht bewusst das die Abweichung beim Single so groß ist. Für das Erstellen des Dictionaries(Farb und Werte Zuordnung) runde ich einfach nach jeder Addition und das reicht erstmal aus. Mir ging es hier hauptsächlich um die Daten Typen und ich kann jetzt je nach Fall meine internen Berechnung darauf anpassen. Das wird darauf hinaus lauf das ich nur mit Integer/Int64 rechne und erst am Ende auf eine Gleitkomma Zahl um schwenke, denn so sollte sich der Fehler reduzieren lassen.
Viele Gleitkommatypen haben (etwas vereinfacht dargestellt) hinter dem Komma zum Speichern von Werten halt nur die Werte 0.5, 0.5^2, 0.5^3, 0.5^4, 0.5^5,... (bis zu einem gewissen n, 0.5^n) zur Verfügung. Für zum Beispiel n=10 kannst du dann nur die Zahlen der Form k=s1*0.5^1 + s2*0.5^2 + s3*0.5^3 +... + s10*0.5^10, wobei s[k]=0 oder 1 genau abspeichern; alle anderen nicht. D.h. von den vielen Kommazahlen können gerade mal 2^10=1024 genau gespeichert werden. (Bereits bei 4 dezimalen Nachkommastellen bist du also bei n=10 Bit mehr als am A...)

Du schreibst, dass du mit ganzzahligen Werten rechnen wirst. Das führt fast sicher zu mehr Geschwindigkeit bei den Berechnungen. Das Problem der Rechengenauigkeit bleibt aber natürlich genauso wie bei den Gleitkommazahlen bestehen (ein n bit unsigned integer kann nur 2^n voneinander verschiedene Zahlen speichern). Bei RGB Werten kannst du aber die Berechnungen mit integer Werten genügend genau approximieren.

Ich habe hier eine Prozedur gepostet, mit welcher du zu gegebenen Farbgewichten für R G B eine gute integer Approximation finden kannst (verwendete Norm natürlich anpassbar). Wenn du zusätzlich auch eine Translation der Farbwerte benötigst, musst du die Prozedur anpassen.

Wenn du Bilder bearbeitest und wie ich vermute Farbwerte mittels affiner Abbildung verändern willst, dann lohnt sich unter Umständen ein Blick in GDI+, dort Colormatrix. GDIPUTIL, GDIPOBJ, GDIPAPI in Delphi einbinden und loslegen . Die 5x5 (RGB Translation und Alpha) Matrix rechnet zwar auch mit Fliesskommazahlen, GDI+ arbeitet aber relativ schnell.

Je nach Aufgabe und Hardware (GDI+) lohnt sich selber rechnen.
Beispiele auf meinem Notebook:
(a) Umrechnung in Graustufe 1 Mio Pixel Bild 32 Bit.: mit integer Approximation: 1 ms. Mit GDI+: 15ms (GDI+ rechnet mit 5x5 Matrix und "doof" alle Werte für R G B einzeln).
(b) 1 Mio Pixel 32it: Mit integer Approximation 3x3 Matrix plus setzen Alphakanal: unter 3ms. Mit GDI+: 15ms.
(c) Wenn du statt mit integer Approximation mit Fliesskommazahlen rechnest, bist du weit über den GDI+ Zeiten.
Michael Gasser

Geändert von Michael II (16. Feb 2024 um 18:22 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz