python - 在python中插值时如何保持图像的大小?
问题描述
我已经通过线性方法插入了我的 nifti 图像(mri 数据)。但问题是输出中的视野发生变化(输入为 400*400 但输出为 4000*3000 )我正在寻找一种在插值时保持尺寸的方法。你有解决办法吗?谢谢
t1_ = "name.nii.gz"
img_t1_ = nib.load(t1_)
img_t1_ = np.double(img_t1_.get_fdata())
slice_ = 300
img_t1_ = np.rot90(img_t1_[:,:,slice_,0])
x = np.linspace(0, img_t1_.shape[1], img_t1_.shape[1])
y = np.linspace(0, img_t1_.shape[0], img_t1_.shape[0])
X, Y = np.meshgrid(x, y)
Z = img_t1_
x2 = np.linspace(0, img_t1_.shape[1], 9*img_t1_.shape[1])
y2 = np.linspace(0, img_t1_.shape[0], 9*img_t1_.shape[0])
print(x2.shape[0], y2.shape[0])
tmp_z_ = np.zeros((x2.shape[0], y2.shape[0]))
f_linear = interp2d(x, y, Z, kind='linear')
Z2 = f_linear(x2, y2)
解决方案
我假设通过保持尺寸,您的意思是保持纵横比(即输入:400x400 -> 输出:4000x4000)。另外,我不确定您要通过插值实现什么。但是,根据用例,'模块中的zoom
函数可以完成这项工作。如果您选择参数,这对应于线性插值。scipy
ndimage
order=1
我不熟悉您用于导入图像的包。以下示例假设图像数据已加载到img_data
二维浮点数组。只需适应您的用例即可。
from scipy.ndimage import zoom
interpolated_img_data = zoom(img_data, 10, order=1)
推荐阅读
- android - 我想在片段内制作可滚动卡片
- typescript - 使用自定义扩展构建 jupyterlab 时 Webpack 找不到模块 vscode
- python - 在 Python 中使用带有大 csv 文件的 Kmodes
- ios - 迦太基构建伞框架
- rest - Spring Boot REST端点连接未释放
- linux - 在 Shell 脚本中传递“If 语句”问题
- amazon-web-services - AWS DMS - InvalidParameterValueException)调用 CreateReplicationTask 操作时:复制任务设置文档错误:无效的 json
- postgresql - 尝试解析 PipelineDB 中的数据类型并将错误流式传输到失败的文本表?
- android - FirestoreRecyclerAdapter 依赖于一个注册的监听器
- java - 将附加数据传递到休眠 postInsertEvent 侦听器