2015-04-18 9 views
8

Sono estremamente nuovo alla libreria di scikit-image (skimage) in Python per l'elaborazione delle immagini (avviata pochi minuti fa!). Ho usato imread per leggere un file immagine in un numpy.ndarray. L'array è tridimensionale dove la dimensione della terza dimensione è 3 (ovvero una per ciascuna delle componenti Rosso, Verde e Blu di un'immagine).Come estrarre il canale verde dall'immagine RGB in Python usando la libreria Scikit-Image?

rgb_image = imread("input_rgb_image.jpg") 
rgb_image.shape # gives (1411L, 1411L, 3L) 

ho cercato di estrarre canale verde come:

green_image = rgb_image[:,:,1] 

Ma quando scrivo questa matrice immagine ad un file di output come:

imsave("green_output_image.jpg",green_image) 

ottengo un'immagine che non lo fa davvero guardare SOLO verde!

+0

Ohh. Colpa mia. Penso a quello che ho fatto creando una nuova immagine RGB con dimensioni più ridotte. Grazie per il puntatore! – Sangram

+0

Stranamente, estrarre di nuovo solo il verde restituisce un'immagine rossa. Ecco il link dell'immagine che stavo cercando di estrarre il canale verde da: http://upload.wikimedia.org/wikipedia/commons/3/37/Fundus_photograph_of_normal_right_eye.jpg – Sangram

+0

Ok. Quindi dovevo impostare il componente rosso a zero come: 'rgb_image [:,:, 0] = 0' e così via .... – Sangram

risposta

14

Quello che stai estraendo è solo un singolo canale e questo ti mostra quanto colore verde ha ogni pixel. Questo alla fine verrà visualizzato come un'immagine in scala di grigi in cui i pixel più scuri indicano che non c'è molta "tonalità" in quei punti e che i pixel più chiari indicano che c'è una quantità elevata di "verde" in quei punti.

Se sto interpretando quello che stai dicendo correttamente, desideri visualizzare il "verde" di ogni colore. In tal caso, impostare i canali rosso e blu su zero e lasciare intatto il canale verde.

Quindi:

green_image = rgb_image.copy() # Make a copy 
green_image[:,:,0] = 0 
green_image[:,:,2] = 0 

Nota che ho fatto una copia dell'immagine originale e cambiato i canali invece di modificare quello originale in caso di necessità. Tuttavia, se vuoi solo estrarre il canale verde e visualizzarlo come un'immagine in scala di grigi come ho menzionato sopra, fare ciò che hai fatto sopra con l'impostazione della tua variabile green_image va bene.

Problemi correlati