首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >swi.nii图像(医学图像)中的3Dnumpy数组中的Np.min

swi.nii图像(医学图像)中的3Dnumpy数组中的Np.min
EN

Stack Overflow用户
提问于 2021-11-14 07:55:08
回答 1查看 42关注 0票数 0

我想计算3Dnumpy数组( swi.nii.gz医学图像)的np.min,但由于源图像中的空白区域,结果图像是黑色的,并且我不能在np.min的计算中指定将非零点作为最小值。我计算了基于z轴的3Dnumpy数组的np.max easily.but np.min太难了。

代码语言:javascript
运行
复制
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()

click here to see the output image

while the output image should be this

EN

回答 1

Stack Overflow用户

发布于 2021-11-14 08:34:10

好吧,我想我明白你的意思了。使用

和我不能在np.min的计算中指定将非零点作为最小值

你的意思是说你的算法应该

查找不为零的最小像素值

如果是这样的话,可以这样做:

代码语言:javascript
运行
复制
minimum = np.min(image[image != 0])

编辑:您更新的代码使其看起来像是您想要沿着特定轴的最小值。这是一个完全不同的问题。试试这个:

代码语言:javascript
运行
复制
minimum = np.ma.masked_equal(image, 0).min(axis=2)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69961259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档