OpenCV: Wie man Rainbow Gradient Map auf ein Bild anwenden kann?

8

Sagen wir, wir hätten ein Bild, das wir irgendwie über openCV geändert haben:

Und jetzt würden wir uns sehr gerne daran Verlaufs-Map (wie man es über Photoshop anwenden kann) wenden ) :

Also frage ich mich, wie man gradient map (Regenbogenfarben) über openCV anwendet?

    
myWallJSON 06.04.2012, 23:26
quelle

2 Antworten

12

Hier ist eine Methode zum Erstellen falscher / Pseudo-Farb-Bilder mit Python, sollte die Konvertierung in C ++ sehr einfach sein. Übersicht:

  1. Öffnen Sie Ihr Bild als Graustufen und RGB
  2. Konvertieren Sie das RGB-Bild in den HSV-Farbraum (Farbton, Sättigung, Wert / Helligkeit). Dies ist ein zylindrischer Raum, dessen Farbton durch einen einzelnen Wert auf der Polarachse dargestellt wird.
  3. Stellen Sie den Farbtonkanal auf das Graustufenbild ein, das wir bereits geöffnet haben. Dies ist der entscheidende Schritt.
  4. Stellen Sie den Wert und die Sättigungskanäle auf beide Werte ein.
  5. Konvertiere zurück in den RGB-Raum (andernfalls wird die Darstellung falsch sein).

Es gibt allerdings ein paar Fänge ...

  1. Da der Farbton in Grad gehalten wird und das Farbspektrum von 0 bis 180 dargestellt wird (nicht 0-256 und nicht 0-360 (manchmal der Fall)), müssen wir das Graustufenbild durch Multiplizieren mit 180 / 256.0 entsprechend neu skalieren.
  2. Im opencv-Fall beginnt die Farbton-Farbskala bei blau (nicht rot, wie in Ihrem Bild). dh. Das Mapping geht so:

von: zu:

Wenn dies wichtig ist, können wir dies tun, indem wir alle Farbtonelemente versetzen und sie um 180 Grad wickeln (sonst sättigen sie sich). Der Code tut dies, indem er das Bild an diesem Schnittpunkt maskiert und dann entsprechend abgleicht. Mit einem Offset von 120 wird die Farbskala erstellt:

von: zu:

und das so verarbeitete Bild scheint am Ende sehr gut zu dir zu passen.

%Vor%

Ihr Bild wurde mit offset = 120 :

verarbeitet

    
fraxel 09.04.2012, 07:28
quelle
0

Jetzt gibt es die openCV-Funktion namens applyColorMap , die diesen Prozess trivial macht. Der folgende Code macht den Trick

%Vor%

Und das ist das Ergebnis:

Abbildung 1: Originalebene Abbildung2: Ebene nach dem Anwenden der Colormap

    
richar8086 14.12.2017 09:53
quelle

Tags und Links