Wenn ich eine Reihe von Pixeln habe, die von etwa -500 bis +1000 reichen, wie würde ich dann alle Pixel auf dem gleichen Gradient normalisieren, so dass sie zwischen einem bestimmten Bereich liegen, sagen wir 0 und 255?
Ein solcher Pseudocode würde Werte linear von einem Bereich zum anderen skalieren
%Vor%Ihre Frage ist nicht sehr klar, deshalb gehe ich davon aus, dass Sie eine Art Bildverarbeitung durchführen und die Ergebnisse, die Sie bekommen, sind Werte von -500 bis 1000 und jetzt müssen Sie die Farbe in einer Datei speichern wobei jeder Wert zwischen 0 und 255 liegen muss.
Wie Sie dies tun, ist wirklich sehr abhängig in der Anwendung, was ist wirklich die Bedeutung der Ergebnisse und was genau Sie tun möchten. Die zwei Hauptoptionen sind:
Lineare Normalisierung - linear kann Ihr minimaler Wert auf 0 und Ihr maximaler Wert auf 255 gesetzt werden. Natürlich müssen Sie zuerst das Minimum und Maximum finden. Sie tun:
%Vor% In diesem Fall werden die Werte zuerst auf [0,1]
abgebildet und dann auf [0,255]
zurückgestreckt.
Eine dritte Option besteht darin, diese beiden Optionen miteinander zu kombinieren. Ihre Anwendung fordert möglicherweise, dass Sie negative Werte als nicht benötigte Werte behandeln und sie auf 0 und positive Werte festhalten, um sie linear auf [0,255]
abzubilden.
Erstellen Sie zwei Variablen, MinInputValue
und MaxInputValue
. Initialisiere MinInputValue
auf eine sehr große positive Zahl (höher als der größte Pixelwert, den du jemals sehen wirst) und MaxInputValue
auf eine sehr große negative Zahl (niedriger als der niedrigste Pixelwert, den du jemals erwarten würdest).
Schleife über jedes Pixel im Bild. Wenn der Pixelwert PixelValue
für jedes Pixel niedriger als MinInputValue
ist, setzen Sie MinInputValue
auf PixelValue
. Wenn der Pixelwert höher als MaxInputValue
ist, setzen Sie MaxInputValue
auf PixelValue
.
Erstellen Sie eine neue Variable, InputValueRange
, und setzen Sie sie auf MaxInputValue - MinInputValue
.
Sobald dies erledigt ist, durchlaufen Sie erneut jedes Pixel im Bild. Errechnen Sie für jedes Pixel PixelValue
den Ausgabe-Pixelwert als 255.0 * (PixelValue - MinInputValue) / InputValueRange
. Sie können diesen neuen Wert wieder dem ursprünglichen PixelValue
zuweisen, oder Sie können das entsprechende Pixel in einem Ausgabebild der gleichen Größe festlegen.
Tags und Links math image-processing