Imágenes y matrices NumPy
Las matrices NumPy encuentran un amplio uso en el almacenamiento y manipulación de datos de imágenes. Pero, ¿qué son verdaderamente los datos de imagen?
Las imágenes están formadas por píxeles que se almacenan en forma de matriz. Cada píxel tiene un valor que varía entre 0 y 255: 0 indica un píxel negro y 255 indica un píxel blanco. Una imagen en color consta de tres matrices 2-D, una para cada uno de los canales de color: rojo, verde y azul, colocadas una detrás de la otra formando así una matriz 3-D. Cada valor de la matriz constituye un valor de píxel. Entonces, el tamaño de la matriz depende de la cantidad de píxeles a lo largo de cada dimensión"Dimensión" es un término que se utiliza en diversas disciplinas, como la física, la matemática y la filosofía. Se refiere a la medida en la que un objeto o fenómeno puede ser analizado o descrito. En física, por ejemplo, se habla de dimensiones espaciales y temporales, mientras que en matemáticas puede referirse a la cantidad de coordenadas necesarias para representar un espacio. Su comprensión es fundamental para el estudio y....
Eche un vistazo a la próxima imagen:
Python puede leer la imagen como una matriz usando el scipy.misc.imread () método en la biblioteca SciPy. Y cuando lo generamos, es simplemente una matriz 3-D que contiene los valores de píxeles:
import numpy as np import matplotlib.pyplot as plt from scipy import misc # read image im = misc.imread('./original.jpg') # image im
array([[[115, 106, 67], [113, 104, 65], [112, 103, 64], ..., [160, 138, 37], [160, 138, 37], [160, 138, 37]], [[117, 108, 69], [115, 106, 67], [114, 105, 66], ..., [157, 135, 36], [157, 135, 34], [158, 136, 37]], [[120, 110, 74], [118, 108, 72], [117, 107, 71], ...,
Podemos chequear la forma y el tipo de esta matriz NumPy:
print(im.shape) print(type(type))
(561, 997, 3) numpy.ndarray
Ahora, dado que una imagen es solo una matriz, podemos manipularla fácilmente usando una función de matriz que hemos visto en el post. Como, podríamos voltear la imagen horizontalmente usando el np.flip () método:
# flip plt.imshow(np.flip(im, axis=1))
O puede normalizar o cambiar el rango de valores de los píxeles. A veces, esto es útil para cálculos más rápidos.
im/255
array([[[0.45098039, 0.41568627, 0.2627451 ], [0.44313725, 0.40784314, 0.25490196], [0.43921569, 0.40392157, 0.25098039], ..., [0.62745098, 0.54117647, 0.14509804], [0.62745098, 0.54117647, 0.14509804], [0.62745098, 0.54117647, 0.14509804]], [[0.45882353, 0.42352941, 0.27058824], [0.45098039, 0.41568627, 0.2627451 ], [0.44705882, 0.41176471, 0.25882353], ..., [0.61568627, 0.52941176, 0.14117647], [0.61568627, 0.52941176, 0.13333333], [0.61960784, 0.53333333, 0.14509804]], [[0.47058824, 0.43137255, 0.29019608], [0.4627451 , 0.42352941, 0.28235294], [0.45882353, 0.41960784, 0.27843137], ..., [0.6 , 0.52156863, 0.14117647], [0.6 , 0.52156863, 0.13333333], [0.6 , 0.52156863, 0.14117647]], ...,
¡Recuerde que esto es utilizar el mismo concepto de ufuncs y transmisión que vimos en el post!
Hay muchas más cosas que podría hacer para manipular sus imágenes que serían útiles cuando clasifique imágenes usando redes neuronales. Si está interesado en construir su propio clasificador de imágenes, ¡puede dirigirse aquí para obtener un tutorial increíble sobre el tema!
Notas finales
Posts Relacionados:
- SQL para ciencia de datos | Guía para principiantes de SQL para la ciencia de datos
- Estadísticas para la ciencia de datos | Guía para principiantes de estadísticas para ciencia de datos
- Pasantía en ciencia de datos | Guía para principiantes para obtener una pasantía en ciencia de datos
- Tutorial de expresiones regulares de Python | Tutorial de Python Regex