Schnittstelle von Gamma fkt < Computergraphik < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 14:31 Mi 05.12.2007 | Autor: | ghostdog |
Aufgabe |
Schnittpunkt zweier funktionen finden.
% y = 255 * pow ( x/z, 1/g)
% z = pow(2,n) - 1
% y = output
% x = input (von 0 bis 2047)
% pow(a,b) = a to the power of b
% g = Gamma in Absolute value = Gamma in integer value/1024.0
% n = # of bits from the analog-to-digital (A/D) converter= 11 bit
vereinfacht
[mm] f_{2}(x) [/mm] = 255* [mm] (\bruch{x}{2047})^{\bruch{1}{gamma}}
[/mm]
Der Anfang der Kurve wird bis zum Schnittpunkt linearisiert.
mit
[mm] f_{1}(x) [/mm] = 255* [mm] \bruch{1}{gamma}*x [/mm] |
Hallo leider ist mein Algebra schon eine weile her.
Da ich hier immer sehr gute Hilfe gefunden habe wollte ich mal mein Problem hier schildern.
Ich möchte eine Gamma entzerrung für ein Bild machen und habe gemerkt das die verwendete Gammafunktion am Anfang Linearisiert wurde.
Die Linearisierung erfolgt nach meinen Messdaten bis zum Schnittpunkt der beiden Funktionen.
Meine frage ist dummer weise wie berechne ich den Schnittpunkt?
Also ich weiß noch das ich die beiden Formel gleich setzten muss,
aber da die eine funktion nicht linear ist bekomme ich kein vernünftiges Ergebnis.
Hat jemand eine Lösung?
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 13:23 Do 06.12.2007 | Autor: | rainerS |
Hallo!
> Schnittpunkt zweier funktionen finden.
>
> % y = 255 * pow ( x/z, 1/g)
> % z = pow(2,n) - 1
> % y = output
> % x = input (von 0 bis 2047)
> % pow(a,b) = a to the power of b
> % g = Gamma in Absolute value = Gamma in integer
> value/1024.0
> % n = # of bits from the analog-to-digital (A/D)
> converter= 11 bit
> vereinfacht
> [mm]f_{2}(x)[/mm] = 255* [mm](\bruch{x}{2047})^{\bruch{1}{gamma}}[/mm]
>
> Der Anfang der Kurve wird bis zum Schnittpunkt
> linearisiert.
> mit
> [mm]f_{1}(x)[/mm] = 255* [mm]\bruch{1}{gamma}*x[/mm]
> Hallo leider ist mein Algebra schon eine weile her.
> Da ich hier immer sehr gute Hilfe gefunden habe wollte ich
> mal mein Problem hier schildern.
> Ich möchte eine Gamma entzerrung für ein Bild machen und
> habe gemerkt das die verwendete Gammafunktion am Anfang
> Linearisiert wurde.
> Die Linearisierung erfolgt nach meinen Messdaten bis zum
> Schnittpunkt der beiden Funktionen.
> Meine frage ist dummer weise wie berechne ich den
> Schnittpunkt?
> Also ich weiß noch das ich die beiden Formel gleich
> setzten muss,
> aber da die eine funktion nicht linear ist bekomme ich
> kein vernünftiges Ergebnis.
> Hat jemand eine Lösung?
Du willst ein [mm]x_0[/mm] finden, für das
[mm] f_1(x_0) = f_2(x_0) [/mm] oder [mm] f(x_0) = f_1(x_0) - f_2(x_0) = 0[/mm].
In deinem Fall ist (die 255 lasse ich mal weg): [mm] \bruch{1}{\gamma} x - \left(\bruch{x}{2047}\right)^{1/\gamma} = 0 [/mm].
Für diese Gleichung gibt's keine analytische Lösung. Es gibt viele Verfahren, numerisch eine solche Lösung zu bestimmen.
Wenn du mit Sicherheit weisst, dass es nur einen Schnittpunkt der beiden Kurven gibt, ist eine fortgesetzte Bisektion (Intervallschachtelung) eine einfache Methode: du beginnst mit zwei Punkten, die rechts und links vom Schnittpunkt liegen (zum Beispiel [mm]x_1=1[/mm] und [mm]x_2=1025[/mm]).
Dann ist in einem Punkt [mm]f(x_1) = f_1(x_1)-f_2(x_1) > 0[/mm] und [mm]f(x_2) = f_1(x_2)-f_2(x_2) < 0[/mm].
Dann nimmst du den Punkt in der Mitte zwischen beiden: [mm]x_3 = (x_1 + x_2)/2 [/mm] und rechnest deine beiden Funktionen an diesem Punkt aus. Der Schnittpunkt liegt entweder zwischen [mm]x_1[/mm] und [mm]x_3[/mm] (wenn [mm]f(x_3)<0[/mm]) oder zwischen [mm]x_3[/mm] und [mm]x_2[/mm] (wenn [mm]f(x_3)>0[/mm]). Dann nimmst du die beiden Punkte, zwischen denen der Schnittpunkt liegt und wiederholst den Schritt. Da dein x ja nur 11Bit hat, bist du nach 11 Schritten fertig.
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Korrektur) kleiner Fehler | Datum: | 15:42 Do 06.12.2007 | Autor: | Martin243 |
Hallo,
wenn wir nach x auflösen wollen, dann gibt es doch eine analytische Lösung.
Gruß
Martin
|
|
|
|
|
Status: |
(Korrektur) oberflächlich richtig | Datum: | 16:00 Do 06.12.2007 | Autor: | rainerS |
Hallo!
> wenn wir nach x auflösen wollen, dann gibt es doch eine
> analytische Lösung.
Oops, ja stimmt.
Viele Grüße
Rainer
|
|
|
|
|
Hallo,
hier liegt ein einfaches Polynom in x vor:
[mm] $\left(\bruch{x}{2047}\right)^{\bruch{1}{\gamma}} [/mm] - [mm] \bruch{1}{\gamma}x [/mm] = 0$
[mm] $\Leftrightarrow x\left(\bruch{1}{2047}\left(\bruch{x}{2047}\right)^{\bruch{1}{\gamma}-1} - \bruch{1}{\gamma}\right) [/mm] = 0$
Also ist die Null eine Lösung oder wir rechnen weiter:
[mm] $\bruch{1}{2047}\left(\bruch{x}{2047}\right)^{\bruch{1}{\gamma}-1} [/mm] - [mm] \bruch{1}{\gamma} [/mm] = 0$
[mm] $\left(\bruch{x}{2047}\right)^{\bruch{1}{\gamma}-1} [/mm] = [mm] \bruch{2047}{\gamma}$
[/mm]
[mm] $\bruch{x}{2047} [/mm] = [mm] \left(\bruch{2047}{\gamma}\right)^\bruch{\gamma}{1-\gamma}$
[/mm]
Also:
$x = 2047 [mm] \left(\bruch{2047}{\gamma}\right)^\bruch{\gamma}{1-\gamma}$
[/mm]
Gruß
Martin
|
|
|
|