Forums Neueste Beiträge
 

Zwei Farbräume kombinieren (diskreter 3D-Raum) über Gewichtung

13/11/2007 - 10:38 von maqqusz | Report spam
Hallo Ihr Experten :)

Ich habe da ein mathematisches Problem aus der Bildverarbeitung.

Zunàchst erklàre ich mal, was das Ziel ist: Es soll in einem Programm
ein Bild mit schlechten Farben (z.B. gescanntes Foto von 1974) und ein
Foto mit guten Farben (gute aktuelle Digitalkamera) geladen werden.
Die Motive auf den Fotos sollten sich àhneln. z.B. a) auf beinem Fotos
eine grüne Landschaft mit Bergen oder b) auf beiden Fotos eine
Nahaufnahme eines Gesichts.

Der Benutzer des Programms soll jetzt immer Farbpaare erstellen, indem
er im alten Foto einen Punkt (z.B. helle Gesichtsfarbe) markiert und
im zweiten Bild ebenfalls. Von solchen Paaren sollte der Benutzer so
viele wie möglich erstellen, sodass es immer "Farbentsprechungen"
zwischen Alt und neu gibt.

Folgende Farben seien mal als Beispiel gegeben. Es handelt sich hier
um RGB-Farben. Der erste Wert ist die Helligkeit von Rot, der zweite
Grün und der dritte Blau:

P1old(000,000,000)
P1new(000,000,000)

P2old(255,255,255)
P2new(255,255,255)

P1 und P2 sollen jetzt erst einmal vom Programm vorgeben sein.

P3old(123,123,123)
P3new(123,124,125)

P4old(200,010,014)
P4new(255,000,000)

P5old(100,100,070)
P5new(100,100,100)

P6old(244,002,200)
P6new(230,002,180)

P3 bis P6 soll der Benutzer als Beispiel angegeben haben.

Diese Punkte verteilen sich jetzt in einem diskreten dreidimensionalen
(Farb-)Raum mit jeweils 256 Werten auf jeder Achse.


Die Software geht jetzt vom schlechten Bild jeden einzelnen Pixel
durch und trifft beim ersten Pixel beispielsweise auf folgende Farbe:

P_old(150,150,150)

Die Frage ist jetzt, wie man die Farbe in dem "verbesserten" Bild
errechnet. Hàtte der Pixel eine Farbe, die der Nutzer exakt markiert
hat wie z.B. P_old(100,100,070), so wàre das alles kein Problem. Der
aktuelle Farbwert liegt aber jetzt _zwischen_ den ganzen anderen
markierten Farben und jetzt muss man daraus irgendwie die
Farbentsprechung im neuen "verbesserten" Bild errechnen. Den Abstand
zu jedem Punkt im Farbraum zu jeder markierten Farbe kann man sich
sicher ausrechnen das ist also auch nicht das Problem. Mein Problem
ist wie kommt man zu einer sinnvollen Gewichtung der ganzen markierten
Farben.

Hat da einer von Euch eine gute Idee?

Viele Grüße,

Markus
 

Lesen sie die antworten

#1 Klaus Nagel
13/11/2007 - 11:03 | Warnen spam
maqqusz wrote:

Zunàchst erklàre ich mal, was das Ziel ist: Es soll in einem Programm
ein Bild mit schlechten Farben (z.B. gescanntes Foto von 1974) und ein
Foto mit guten Farben (gute aktuelle Digitalkamera) geladen werden.
Die Motive auf den Fotos sollten sich àhneln. z.B. a) auf beinem Fotos
eine grüne Landschaft mit Bergen oder b) auf beiden Fotos eine
Nahaufnahme eines Gesichts.

Der Benutzer des Programms soll jetzt immer Farbpaare erstellen, indem
er im alten Foto einen Punkt (z.B. helle Gesichtsfarbe) markiert und
im zweiten Bild ebenfalls. Von solchen Paaren sollte der Benutzer so
viele wie möglich erstellen, sodass es immer "Farbentsprechungen"
zwischen Alt und neu gibt.



Vorschlag:
Seien A1, A2, .. An die Farben des alten Bildes, denen die Farben
N1, N2, .. Nn im neuen Bild zugeordnet sind.

X sei eine Farbe des alten Bildes.
Man bestimmt den kleinsten Tetraedee mit Ecken aus {A1, A2 .. } der X
enthàlt. "Kleinste" dabei nach einer geeigneten Norm, z.B. Volumen.
Die Ecken seien Ai, Aj, Ak und Al. Man bestimmt die baryzentrischen
Koordinaten

X = alpha1*Ai + alpha2*Aj + alpha3*Ak + alpha4*Al
mit alpha1 + alpha2 + alpha3 + alpha4 = 1.

Die X zugeordnete Farbe im neuen Bild ist dann

Y = alpha1*Ni + alpha2*Nj + alpha3*Nk + alpha4*Nl.

Gruß,

Klaus Nagel

Ähnliche fragen