Logarithmische Zuweisung einer Farbskala

Neue Frage »

Gregorious123 Auf diesen Beitrag antworten »
Logarithmische Zuweisung einer Farbskala
Hi!

im Rahmen meiner MA untersuche ich Mikroskopaufnahmen bestimmter Oberflächen. Mir liegen hierzu Konfokalaufnahmen vor (auf 1mm^2 etwa 20,000,000 Höhenkoordinaten z der untersuchten Oberfläche auf einem regelmäßigen x-y-Raster).
Ich möchte die Differenzenquotienten plotten. Dafür habe ich die Differenzenquotienten in x und y gebildet. 90 % der Werte liegen zwischen 0 und 1, 10 % (teils sehr weit, bei 400 ) drüber. die 10 % schneide ich momentan ab, bzw weise alle die >1 liegen = 1. Dann zum Plot: Dafür wollte ich insgesamt 200 verschiedene Farbnuancen verwenden. Ich bilde also die Differenz aus dem höchsten Gradienten (=1) und dem niedrigsten (=0), teile durch die 200 gewünschten Intervalle und iteriere jeden Wert durch die Intervalle. Im zutreffenden Intervall weise ich jedem Wert den zugehörenden Farbton zu. Das geplottete Ergebnis habe ich als Bild angehängt.




Die momentan lineare Farbzuweisung und das "Begradigen" von allen Werten über 1 finde ich nun recht unsauber. Eleganter wäre eine exponentielle / logarithmische Farbzuweisung. Nur habe ich leider absolut keine Ahnung, wie ich das Intervall von 0 bis 200 (oder eher das Delta des niedrigsten und höchsten Gradientenwertes ??) logarithmisch aufteile. Kann mir jemand helfen?
willyengland Auf diesen Beitrag antworten »

Was ist denn das Ziel?
Soll es mathematisch möglichst exakt werden, oder soll es für das menschliche Auge am passendsten sein?
Das ist nicht das selbe.
Das menschliche Augen kann weniger als 100 Graustufen unterscheiden.
Worauf kommt es in den Bildern an?
Gregorious123 Auf diesen Beitrag antworten »

Hi,

danke schonmal.

Die Bilder sollen mal einer KI übergeben werden, um Unregelmäßigkeiten zu erkennen. Daher würde ich jetzt einfach mal "mathematisch möglichst korrekt" sagen. Oder was meinst du?


Außerdem geht es auch darum, dann die Heatmap der Höhenwerte ordentlich plotten zu können. Diese sieht momentan so aus wie unten angehängt, also seeehr verschwommen. Über eine logarithmische Farbgebung (die feinsten Intervalle um den Wert, den die meisten z-Werte einnehmen, davon weggehend dann gröber werdend) stelle ich mir ein schärferes Bild vor?
Steffen Bühler Auf diesen Beitrag antworten »
RE: Logarithmische Zuweisung einer Farbskala
Zitat:
Original von Gregorious123
wie ich das Intervall von 0 bis 200 (oder eher das Delta des niedrigsten und höchsten Gradientenwertes ??) logarithmisch aufteile.

Die Null musst Du natürlich weglassen, aber typischerweise nimmt man eben jeweils den Logarithmus der Werte. Und die skalierst Du dann wieder auf 0 bis 200.

Viele Grüße
Steffen
Gregorious123 Auf diesen Beitrag antworten »
RE: Logarithmische Zuweisung einer Farbskala
aber...wie?
das ist meine frage. 2^x = 200 --> log(basis 2)(200) = x. und dann? verstehe ich nicht


bzw:
meine aufgabe ist es quasi das intervall von 0 bis 200 in regelmäßige exponentiell ansteigende abschnitte zu unterteilen, richtig?
Steffen Bühler Auf diesen Beitrag antworten »
RE: Logarithmische Zuweisung einer Farbskala
Ich würde es so machen:
lg(1)=0
lg(200)=2,3

Also jeden Wert logarithmieren und mit 200/2,3=86,9 multiplizieren.

Gerundet wird dann 100 zu 174, 10 zu 87, 5 zu 61 usw.

Meinst Du so etwas?
 
 
Gregorious123 Auf diesen Beitrag antworten »
RE: Logarithmische Zuweisung einer Farbskala
danke!!!
ich denke ja. tüftel nun erstmal
Gregorious123 Auf diesen Beitrag antworten »
RE: Logarithmische Zuweisung einer Farbskala
Nun muss ich leider doch nochmal fragen.


Zitat:
Original von Steffen Bühler
Ich würde es so machen:
lg(1)=0
lg(200)=2,3



was genau soll das lg(1)? und das lg(200)? Verstehe deine Schritte im Gesamten nicht ganz

Habe mein Problem (für mich selbst) mal grafisch dargestellt. Angenommen ich habe Gradienten zwischen von 0 - 450 und nur 13 verschiedene Farbintensitäten. Ich suche ja quasi die Grenzen, die exponentiell größer werden, um am Ende genau auf 450 zu kommen oder? Wie komme ich da mit dem von dir gezeigten Weg drauf?

Grüße
Steffen Bühler Auf diesen Beitrag antworten »
RE: Logarithmische Zuweisung einer Farbskala
Zitat:
Original von Gregorious123
was genau soll das lg(1)? und das lg(200)?

Das ist der Logarithmus zur Basis 10. Du kannst natürlich auch den zur Basis 2 (ld) oder e (ln) nehmen.

Zitat:
Original von Gregorious123
Angenommen ich habe Gradienten zwischen von 0 - 450 und nur 13 verschiedene Farbintensitäten.


Es ist lg(450)=2,653. Also muss der lg von den Gradienten mit 13/2,653=4,9 multipliziert werden, dann wird 1 zu 0 (0 musst Du extra betrachten oder weglassen) und 450 zu 13.

Falls Du es umgekehrt brauchst (Deinem Bild nach zu urteilen): Du teilst den Farbwert durch 4,9 und nimmst 10 hoch das Ergebnis. Links neben der 450 steht dann z.B. 281, daneben 176 und so weiter.
Gregorious123 Auf diesen Beitrag antworten »
RE: Logarithmische Zuweisung einer Farbskala
Zitat:
Original von Steffen Bühler
Zitat:
Original von Gregorious123
was genau soll das lg(1)? und das lg(200)?

Das ist der Logarithmus zur Basis 10. Du kannst natürlich auch den zur Basis 2 (ld) oder e (ln) nehmen.

Zitat:
Original von Gregorious123
Angenommen ich habe Gradienten zwischen von 0 - 450 und nur 13 verschiedene Farbintensitäten.


Es ist lg(450)=2,653. Also muss der lg von den Gradienten mit 13/2,653=4,9 multipliziert werden, dann wird 1 zu 0 (0 musst Du extra betrachten oder weglassen) und 450 zu 13.

Falls Du es umgekehrt brauchst (Deinem Bild nach zu urteilen): Du teilst den Farbwert durch 4,9 und nimmst 10 hoch das Ergebnis. Links neben der 450 steht dann z.B. 281, daneben 176 und so weiter.


so werden aber nur Gradienten > 1 berücksichtigt oder? 90 % der Werte liegen ja zwischen 0 und 1.

Mit der momentanen linearen Aufteilung zwischen null und 1 komme ich auf eine "Auflösung" von 1 / 200 = 0,005 Gradienteneinheiten / Farbwert. Erreiche im feinen Bereich zwischen 0 und 1 überhaupt eine solche mit einem logarithmischen Ansatz?
Steffen Bühler Auf diesen Beitrag antworten »
RE: Logarithmische Zuweisung einer Farbskala
Ich glaube, die logarithmische Einteilung bringt Dich hier nicht weiter. Was in der Bildverarbeitung typischerweise verwendet wird, ist die sogenannte Gammakorrektur:



Gamma ist hier der Exponent. Mit 1 bleiben die Werte, wie sie sind, mit kleineren Gammas werden kleinere Zahlen immer stärker betont. Und hier ist auch die Null dabei, so wie Du es brauchst.

Wenn die Eingangswerte also von 0 bis 450 gehen und die Ausgangswerte zwischen 0 und 200 liegen sollen, teilst Du also erst durch 450, potenzierst mit einem passenden Gamma und multiplizierst anschließend mit 200.

Mit einem Gamma von 0,1 ergibt sich dann für 0 die 0 und für 1 bereits eine 108.

Wäre das etwas?
Gregorious123 Auf diesen Beitrag antworten »
RE: Logarithmische Zuweisung einer Farbskala
Zitat:
Original von Steffen Bühler
Ich glaube, die logarithmische Einteilung bringt Dich hier nicht weiter. Was in der Bildverarbeitung typischerweise verwendet wird, ist die sogenannte Gammakorrektur:



Gamma ist hier der Exponent. Mit 1 bleiben die Werte, wie sie sind, mit kleineren Gammas werden kleinere Zahlen immer stärker betont. Und hier ist auch die Null dabei, so wie Du es brauchst.

Wenn die Eingangswerte also von 0 bis 450 gehen und die Ausgangswerte zwischen 0 und 200 liegen sollen, teilst Du also erst durch 450, potenzierst mit einem passenden Gamma und multiplizierst anschließend mit 200.

Mit einem Gamma von 0,1 ergibt sich dann für 0 die 0 und für 1 bereits eine 108.

Wäre das etwas?



vielen Dank!!! das sieht gut aus. ich versuche es nun erstmal weiter
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »