"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como cortar com eficiência fragmentos de imagens aleatórias de um array Numpy 4D usando fatiamento baseado em Strided?

Como cortar com eficiência fragmentos de imagens aleatórias de um array Numpy 4D usando fatiamento baseado em Strided?

Publicado em 2024-11-08
Navegar:996

How to Efficiently Crop Random Image Patches from a 4D Numpy Array using Strided-Based Slicing?

Efficient Numpy Slicing for Random Image Cropping

Para corte eficiente de patches aleatórios de 16x16 de uma matriz 4D Numpy representando múltiplas imagens coloridas (onde o primeira dimensão é o número de imagens, e a segunda e terceira são a mesma largura e altura), uma abordagem baseada em passos pode ser utilizado.

Utilizando np.lib.stride_tricks.as_strided ou view_as_windows do scikit-image

Esses métodos criam janelas deslizantes como visualizações na matriz de entrada, reduzindo a sobrecarga de memória. O view_as_windows do Scikit-image simplifica a configuração especificando o formato da janela como uma tupla cujos elementos correspondem às dimensões da matriz de entrada. Os eixos para deslizamento recebem comprimentos de janela e outros eixos são definidos como 1.

Exemplo de código

# Import scikit-image for view_as_windows
from skimage.util.shape import view_as_windows

# Get sliding windows
w = view_as_windows(X, (1,16,16,1))[...,0,:,:,0]

# Generate random per-image offsets
x = np.random.randint(0,12,X.shape[0])
y = np.random.randint(0,12,X.shape[0])

# Index and extract specific windows
out = w[np.arange(X.shape[0]),x,y]

# Reformat if necessary
out = out.transpose(0,2,3,1)

Este código gera quatro pares aleatórios (x_offset, y_offset) e extrai 4 patches aleatórios 16x16 dentro dos parâmetros fornecidos, com sobrecarga mínima de memória.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3