#python-3.x #ubuntu-18.04 #simpleitk
#python-3.x #ubuntu-18.04 #simpleitk
Вопрос:
В Ubuntu 18.04 LTS я пытаюсь изменить расстояние между вокселями в 3D-изображении, как в этом примере . Изображение довольно большое, имеет около 500x500x300 вокселов и использует около 100 МБ. При resampler.Execute()
достижении строки оболочка прекращает выполнение скрипта python3. Я думаю, это из-за нехватки памяти, но какой памяти? Жесткий диск? Оперативная память? Кто-нибудь знает, почему это может произойти, и есть ли какое-либо обходное решение?
Ответ №1:
У вас заканчивается оперативная память. Ваш объем составляет 75 миллионов вокселов, но в этом примере кода повторной выборки используются 32-разрядные числа с плавающей запятой. Итак, это 300 мегабайт памяти. И затем есть память выходного тома. Итак, кто знает, сколько памяти вам нужно в общей сложности.
Попробуйте установить тип выходного пикселя на что-то меньшее, например, знак short или unsigned char .
Комментарии:
1. Я изменил тип выходного пикселя на uint8, но он все равно выходит из строя. Как я могу получить использованную память изображения sitk? Когда я преобразую его в numpy с
image = numpy.uint8(image)
помощью и получаю память, используемую в байтах,image.nbytes
он возвращает 49283072 байта, что меньше 50 МБ… Мне это не кажется слишком большим…2. Вы можете определить размер памяти изображения с помощью следующих методов: GetNumberOfPixels, GetNumberOfComponentsPerPixel и GetSizeOfPixelComponent . Умножьте результаты этих 3 вместе, чтобы получить количество байтов.