«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно обрезать случайные фрагменты изображений из 4D-массива Numpy с помощью срезов на основе полос?

Как эффективно обрезать случайные фрагменты изображений из 4D-массива Numpy с помощью срезов на основе полос?

Опубликовано 8 ноября 2024 г.
Просматривать:991

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

Эффективное срезирование Numpy для случайной обрезки изображений

Для эффективного обрезки случайных фрагментов 16x16 из 4D-массива Numpy, представляющего многоцветные изображения (где первое измерение — это количество изображений, а второе и третье — равная ширина и высота), можно использовать подход, основанный на шагах.

Использование np.lib.stride_tricks.as_strided или scikit- image's view_as_windows

Эти методы создают скользящие окна в качестве представлений во входном массиве, уменьшая нагрузку на память. view_as_windows из Scikit-image упрощает настройку, определяя форму окна в виде кортежа, элементы которого соответствуют размерам входного массива. Осям скольжения присваиваются длины окон, а другим осям присваивается значение 1.

Пример кода

# 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)

Этот код генерирует четыре случайные пары (x_offset, y_offset) и извлекает 4 случайных патча 16x16 в пределах заданных параметров с минимальными затратами памяти.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3