dask_image.ndinterp 包
dask_image.ndinterp 包¶
- dask_image.ndinterp.affine_transform(image, matrix, offset=0.0, output_shape=None, order=1, output_chunks=None, **kwargs)[source]¶
使用 Dask 应用仿射变换。对于每个输出块,仅处理包含图像相关部分的切片。分块处理使用 ndimage.affine_transform 或 cupyx.scipy.ndimage.affine_transform 执行,具体取决于输入类型。
注意
与 ndimage.affine_transformation 的区别: - 当前不支持预滤波
(在插值 order > 1 时会影响输出)
默认阶数是 1
不支持 'reflect', 'mirror' 和 'wrap' 模式
参数与 ndimage.affine_transformation 相同,除了 output_chunks。
- 参数
image (array_like (Numpy Array, Cupy Array, Dask Array...)) – 图像数组。
matrix (array (ndim,), (ndim, ndim), (ndim, ndim+1) or (ndim+1, ndim+1)) – 变换矩阵。
offset (float 或 sequence, 可选) – 应用变换时数组的偏移量。如果为浮点数,offset 对每个轴相同。如果为序列,offset 应包含每个轴的一个值。
output_shape (tuple of ints, 可选) – 要返回的数组的形状。
order (int, 可选) – 样条插值的阶数。请注意,对于 order>1,scipy 的 affine_transform 会应用预滤波,此实现尚不支持并跳过该步骤。
output_chunks (tuple of ints, 可选) – 输出 Dask 数组的块形状。
- 返回值
affine_transform – 表示变换后输出的 dask 数组
- 返回类型
Dask Array
- dask_image.ndinterp.rotate(input_arr, angle, axes=(1, 0), reshape=True, output_chunks=None, **kwargs)[source]¶
使用 Dask 旋转数组。
使用指定的阶数样条插值,在由 axes 参数给定的两个轴定义的平面中旋转数组。
分块处理使用 dask_image.ndinterp.affine_transform 执行,ndimage 函数支持的其他参数可以作为关键字参数传递。
注意
与 ndimage.rotate 的区别: - 当前不支持预滤波
(在插值 order > 1 时会影响输出)
默认阶数是 1
不支持 'reflect', 'mirror' 和 'wrap' 模式
参数与 ndimage.rotate 相同,除了 - output (此处不存在) - output_chunks (在 dask 数组上下文中相关)
- 参数
input_arr (array_like (Numpy Array, Cupy Array, Dask Array...)) – 图像数组。
angle (float) – 旋转角度,以度为单位。
axes (tuple of 2 ints, 可选) – 定义旋转平面的两个轴。默认为前两个轴。
reshape (bool, 可选) – 如果 reshape 为真,输出形状将进行调整,以便输入数组完全包含在输出中。默认为 True。
output_chunks (tuple of ints, 可选) – 输出 Dask 数组的块形状。
**kwargs (dict, 可选) – 附加的关键字参数将传递给 dask_image.ndinterp.affine_transform。
- 返回值
rotate – 表示旋转后输入的 dask 数组。
- 返回类型
Dask Array
示例
>>> from scipy import ndimage, misc >>> import matplotlib.pyplot as plt >>> import dask.array as da >>> fig = plt.figure(figsize=(10, 3)) >>> ax1, ax2, ax3 = fig.subplots(1, 3) >>> img = da.from_array(misc.ascent(),chunks=(64,64)) >>> img_45 = dask_image.ndinterp.rotate(img, 45, reshape=False) >>> full_img_45 = dask_image.ndinterp.rotate(img, 45, reshape=True) >>> ax1.imshow(img, cmap='gray') >>> ax1.set_axis_off() >>> ax2.imshow(img_45, cmap='gray') >>> ax2.set_axis_off() >>> ax3.imshow(full_img_45, cmap='gray') >>> ax3.set_axis_off() >>> fig.set_tight_layout(True) >>> plt.show() >>> print(img.shape) (512, 512) >>> print(img_45.shape) (512, 512) >>> print(full_img_45.shape) (724, 724)