我想计算3Dnumpy数组( swi.nii.gz医学图像)的np.min,但由于源图像中的空白区域,结果图像是黑色的,并且我不能在np.min的计算中指定将非零点作为最小值。我计算了基于z轴的3Dnumpy数组的np.max easily.but np.min太难了。
import nibabel as nib
import matplotlib.pyplot as plt
import numpy as np
import os
from os import listdir
from os.path import isfile, join
import glob
image_path = 'd:\img\swi.nii.gz'
# comment [load img by nibabel]
image_obj = nib.load(image_path)
image_data = image_obj.get_fdata()
print(f'type of images class={type(image_data)}')
print(image_data)
plt.title(os.path.basename(image_path))
# comment [plt.imshow(np.min(np.where(image_data>0,image_data,1), axis=2), cmap='jet')
# plt.imshow(np.min(np.ndarray.nonzero(image_data), axis=2), cmap='jet')]
plt.imshow(np.min(image_data>0, axis=2), cmap='jet')
plt.axis('off')
plt.show()
发布于 2021-11-14 08:34:10
好吧,我想我明白你的意思了。使用
和我不能在np.min的计算中指定将非零点作为最小值
你的意思是说你的算法应该
查找不为零的最小像素值
如果是这样的话,可以这样做:
minimum = np.min(image[image != 0])
编辑:您更新的代码使其看起来像是您想要沿着特定轴的最小值。这是一个完全不同的问题。试试这个:
minimum = np.ma.masked_equal(image, 0).min(axis=2)
https://stackoverflow.com/questions/69961259
复制相似问题