1

Ich versuche, die Abmessungen zu reduzieren, um ein RGB-Bild mit manifold learning methods grau zu machen.RGB zu grau mit scikit-learn Manifold

Ich habe ein Bild in eine numpy Array umgewandelt (image_array)

import numpy as np 
from sklearn.datasets import load_sample_image 
china = load_sample_image("china.jpg") 

# Convert to floats instead of the default 8 bits integer coding. Dividing by 
# 255 is important so that plt.imshow behaves works well on float data (need to 
# be in the range [0-1] 

china = np.arraychina, dtype=np.float64)/255 

# Load Image and transform to a 2D numpy array. 

w, h, d = original_shape = tuple(china.shape) 
assert d == 3 
image_array = np.reshape(china, (w * h, d)) 

Inspizieren image_array

image_array.shape 

(273280, 3)

Beim Versuch,

X, color = image_array 

ich

ValueError: too many values to unpack.

Gibt es eine Möglichkeit, dies zu umgehen?

Antwort

0

Sie

tun können
china = (china[:,:,:3] * [0.2989, 0.5870, 0.1140]).sum(axis=2) 

Was ist das, was ich in meiner DIY Maschine tat Lernen (Ich fand reine numpy war deutlich schneller als scikit mit, darunter eine Version von orientierten Histogramm von Gradienten sehen https://github.com/paddywwoof/Machine-Learning/blob/master/image_processor.py)

+0

Vielen Dank! Die Sache ist, dass ich verschiedene Möglichkeiten ansehe, RGB in Grau zu konvertieren. Ich habe eine Matlab-Datei mit verschiedenen Konvertierungsalgorithmen - einschließlich einer gewichteten Konvertierung als Ihre und einer Hauptkomponentenanalyse (PCA). Jetzt möchte ich versuchen, wie andere Dimensionalitätsreduktionsalgorithmen im Vergleich zu diesen Methoden durchführen. Um das Teilen von Code zu erleichtern, wollte ich zu Python wechseln. Nochmals vielen Dank für Ihre Antwort! – user3065529

+0

OK, wenn Sie etwas Gemeinsames haben, wäre ich daran interessiert, es zu sehen. Ist es schon auf Github? Vielleicht sind Sie mit Python und numpy dann nicht ganz auf dem neuesten Stand. Der Fehler in Ihrem ursprünglichen Beitrag war, weil Sie ein numpy Array image_array erstellen, das, wie Sie demonstrieren, 273280 Zeilen mal 3 Spalten ist, dann versuchen Sie, es in a zu zwingen Tupel mit nur zwei Elementen. Es passt nicht !! Was versuchst du in deine X- und Farbvariablen zu bekommen? – paddyg