2016-07-18 13 views
-1

Ich verwende opencv und numpy, um einige Satellitenbilder zu verarbeiten.Wie kann ich prüfen, ob ein Pixel in einem RGB-Bild grün ist?

Ich muss unterscheiden, was "Land" von was ist "grün" (Pflanzen und Vegetation).

Meine Frage ist: Wie kann ich entscheiden, welche Werte im RGB-Format nah an grün sind?

Was ich bisher zu tun ist:

img = cv2.imread('image1.jpg',1) 
mat = np.asarray(img) 
for elemento in mat: 
    for pixel in elemento: 
     if pixel[1] > 200: # If the level of green is higher than 200, I change it to black 
      pixel[0] = 0 
      pixel[1] = 0 
      pixel[2] = 0 
     else: # If the level of G is lower than 200 I change it to white. 
      pixel[0] = 255 
      pixel[1] = 255 
      pixel[2] = 255 

Dieser Code funktioniert, aber es ist nicht wirklich nützlich. Ich brauche eine genauere Art zu entscheiden, welche RGB-Werte Grün entsprechen und welche nicht.

Wie kann ich das erreichen?

+2

Eine leichte Falte r = 255 g = 200 b = 255 ist hellviolett. Ziehen Sie stattdessen die Verwendung von g> 64 und g> r + b –

+2

in Betracht, was Ihnen dabei helfen kann: [Farbabstand] (https://en.wikipedia.org/wiki/Color_difference). – Arnial

+0

Normalerweise möchten Sie eine überwachte Klassifizierung durchführen, die auch Infrarotbänder und andere Faktoren wie Textur zusammen mit Grundwahrheit und Genauigkeitsanalyse verwenden könnte. Der Versuch, dies nur mit RGB zu tun, wird wahrscheinlich zu einem begrenzten Erfolg führen. –

Antwort

0

Sie können die InRange-Funktion verwenden, um Farben in einem bestimmten Bereich zu finden, da Sie keine grüne Farbe von Satelliten mit nur einem oder wenigen Pixeln finden können. Die InRange-Funktion hilft Ihnen, eine Reihe von festgelegten Farben zu finden (Sie sollten den Bereich der grünen Farben einstellen) und ein Bild mit den Koordinaten dieser grünen Pixel im Originalbild zurückgeben. Ich habe eine ähnliche Frage HERE mit Beispielen und Code beantwortet (obwohl es nicht Python ist, sollten Sie die Methoden verstehen und leicht in Ihrem OpenCV-Projekt implementieren), sollten Sie dort alles finden, was Sie brauchen.

+1

danke Dainius, ich habe Ihren Beitrag gelesen und den opencv Link in der Post Sie mich umgeleitet und das hat sehr geholfen. –

Verwandte Themen