Recorte de imágenes#

Cuando trabajamos con imágenes de microscopía, a menudo tiene poco sentido procesar toda la imagen. Típicamente recortamos regiones interesantes y las procesamos en detalle.

from skimage.io import imread, imshow
image = imread("../../data/blobs.tif")

Antes de poder recortar una imagen, es posible que queramos conocer su forma (dimensiones) exacta:

image.shape
(254, 256)

Recapitulación: Visualización usando imshow:

imshow(image)
<matplotlib.image.AxesImage at 0x2448a01e9d0>
../_images/9a8c839dc0acff2ba809f86a23468055d8bdd1640593ff51f6da4c23eaeaaa5e.png

El recorte de imágenes funciona exactamente igual que el recorte de listas y tuplas, utilizando índices para especificar el rango de elementos a usar:

cropped_image1 = image[0:128]

imshow(cropped_image1);
../_images/166eed5c1c0ee8fe248cd58b80a3ba6890fe8f13143de5e8c646a1a7a0ab4b6e.png
mylist = [1,2,2,3,4,5,78]

Para recortar la imagen también en la segunda dimensión, agregamos una , en los corchetes:

cropped_image2 = image[0:128, 128:]

imshow(cropped_image2);
../_images/6984d54e12d0cfc03d33deacd59308e9501822d4506d7273fd2bebfca85d82e3.png

Submuestreo de imágenes#

También se pueden especificar tamaños de paso como si procesáramos listas y tuplas. Técnicamente, estamos submuestreando la imagen en este caso. Muestreamos un subconjunto de los píxeles originales, por ejemplo, en pasos de 5:

sampled_image = image[::5, ::5]

imshow(sampled_image);
../_images/9acacd83d855db9ff4df52fe458641d10f4ceb657e208677466e538cfd68ad56.png

Volteo de imágenes#

Los tamaños de paso negativos voltean la imagen.

flipped_image = image[::, ::-1]

imshow(flipped_image);
../_images/9975815040af600d91ec3649a4a64b2ef821164b2b1d7babdd7702cfab6e38c0.png

Ejercicio#

Abre el conjunto de datos banana020.tif y recorta la región donde se encuentra la rodaja de plátano.