Para as pessoas que vêm do Google e procuram uma maneira rápida de reduzir a resolução de imagens em numpy
arrays para uso em aplicativos de aprendizado de máquina, aqui está um método super rápido (adaptado daqui ). Este método só funciona quando as dimensões de entrada são um múltiplo das dimensões de saída.
Os exemplos a seguir reduzem a resolução de 128x128 para 64x64 (isso pode ser facilmente alterado).
Último pedido de canais
# large image is shape (128, 128, 3)
# small image is shape (64, 64, 3)
input_size = 128
output_size = 64
bin_size = input_size // output_size
small_image = large_image.reshape((output_size, bin_size,
output_size, bin_size, 3)).max(3).max(1)
Primeira ordem dos canais
# large image is shape (3, 128, 128)
# small image is shape (3, 64, 64)
input_size = 128
output_size = 64
bin_size = input_size // output_size
small_image = large_image.reshape((3, output_size, bin_size,
output_size, bin_size)).max(4).max(2)
Para imagens em tons de cinza, apenas altere o 3
para 1
assim:
Primeira ordem dos canais
# large image is shape (1, 128, 128)
# small image is shape (1, 64, 64)
input_size = 128
output_size = 64
bin_size = input_size // output_size
small_image = large_image.reshape((1, output_size, bin_size,
output_size, bin_size)).max(4).max(2)
Este método usa o equivalente ao max pooling. É a maneira mais rápida de fazer isso que encontrei.