¿Cuál es la mejor manera de usar Numpy para convertir una matriz de tamaño (x, y, 3) de valores de píxeles rgb en una matriz de tamaño (x, y, 1) de valores de píxeles en escala de grises?
Tengo una función, rgbToGrey(rgbArray) que puede tomar la matriz [r,g,b] y devolver el valor en escala de grises. Me gustaría usarlo junto con Numpy para reducir la tercera dimensión de mi matriz del tamaño 3 al tamaño 1.
¿Cómo puedo hacer esto?
Nota: Esto sería bastante fácil si tuviera la imagen original y pudiera escalarla en gris primero usando Pillow, pero no la tengo.
ACTUALIZAR:
La función que estaba buscando era np.dot() .
De la respuesta a esta pregunta :
Suponiendo que convertimos rgb en escala de grises a través de la fórmula:
.3r * .6g * .1b = gris,
podemos hacer np.dot(rgb[...,:3], [.3, .6, .1]) para obtener lo que estoy buscando, una matriz 2d de valores solo grises.