2016-03-27 7 views
1

Ich versuche, ein RGB-Bild in Graustufen mit skimage in Python zu konvertieren. Hier ist, was ich mache:Konvertieren eines RGB-Bildes in Graustufen in Python

for im_path in glob.glob(os.path.join(pos_raw, "*")): 
    im = imread(im_path) 
    im = color.rgb2gray(im) 
    image_name = os.path.split(im_path)[1].split(".")[0] + ".pgm" 
    image_path = os.path.join(pos_img_path, image_name) 
    imwrite(image_path, im) 

für eine Reihe von Bilddateien. Mein Eingangsbild sieht wie folgt aus:

Color image

Und das Ausgangsbild sieht wie folgt aus:

Black image

Die erwartete Ausgabe ist dies:

Gray image

Was Kann das Problem hier sein?

+0

Haben Sie versucht, dies in kleinere Teile zu zerlegen? Wissen Sie beispielsweise, dass das Bild korrekt gelesen und gespeichert wird? Ihr Code, der in Graustufen konvertiert wird, sieht gut aus. Ich würde die Abschnitte zum Lesen/Schreiben von Dateien überprüfen. (Ich bin nicht wirklich vertraut mit "scikit-image", geben Sie nur einen allgemeinen Hinweis) –

+0

Achten Sie darauf, Ihre Lösung als Antwort zu posten und akzeptieren Sie es für die zukünftige Referenz der anderen. Froh, dass ich geholfen habe. –

+1

Ihr Code wie oben funktioniert gut für mich und gibt eine Graustufenversion des Bildes aus. Allerdings musste ich 'imsave' anstelle von' imwrite' verwenden. – mfitzp

Antwort

4

Ich habe es herausgefunden. Das Problem war Kontrast.

Ich druckte das Bild aus und sah, dass die Werte alle nahe bei 0 lagen. Ich führte eine kleine Linie ein, um den Kontrast zwischen 0 und 255 in der Schleife zu dehnen, die es funktionierte.

im = rescale_intensity(im, out_range=(0, 255)) 

Wo rescale_intensity von skimage.exposure importiert wurde.