- Scikit Image 教程
- Scikit Image - 简介
- Scikit Image - 图像处理
- Scikit Image - NumPy 图像
- Scikit Image - 图像数据类型
- Scikit Image - 使用插件
- Scikit Image - 图像处理
- Scikit Image - 读取图像
- Scikit Image - 写入图像
- Scikit Image - 显示图像
- Scikit Image - 图像集合
- Scikit Image - 图像堆栈
- Scikit Image - 多图像
Scikit Image - 多图像
多图像或多帧图像通常指的是一种图像格式,它可以在单个文件中存储和表示多个图像或帧。例如,动画 GIF 和多帧 TIFF 文件就是多图像格式的示例。
Scikit Image 中的 MultiImage 类
scikit-image 的 io 模块中的 MultiImage 类用于专门处理多帧 TIFF 图像。它提供了一种方便的方式来加载和操作多帧 TIFF 图像。
使用 MultiImage 类处理多帧 TIFF 时,它会返回一个图像数据数组列表,类似于 ImageCollection 类。但是,它们处理多帧图像的方式有所不同。Multi-Image 将多帧 TIFF 图像的所有帧作为列表中的单个元素存储,其形状为 (N, W, H),其中 N 是帧数,W 和 H 分别是每帧的宽度和高度。
以下是此类的语法:
class skimage.io.MultiImage(filename, conserve_memory=True, dtype=None, **imread_kwargs)
以下是类的参数:
- filename - 指定要加载的模式或文件名(字符串或字符串列表)。路径可以是绝对路径或相对路径。
- conserve_memory(可选) - 布尔值。如果设置为 True,则一次只保留一个图像在内存中。如果设置为 False,则加载后会缓存图像以提高后续访问速度。
示例 1
以下示例演示了如何使用 MultiImage 类加载多帧 TIFF 图像并获取有关加载图像的信息。
from skimage.io import MultiImage # Load the multi-frame TIFF image multi_image = MultiImage('Images_/Multi_Frame.tif') # Access and display information about the loaded image file print(multi_image) print('Type:',type(multi_image)) print('Length:',len(multi_image)) print('Shape:',multi_image[0].shape)
输出
['Images_/Multi_Frame.tif'] Type: < class 'skimage.io.collection.MultiImage' > Length: 1 Shape: (6, 382, 363, 3)
示例 2
让我们使用 ImageCollection 类读取同一个多帧 TIFF 文件“Multi_Frame.tif”,并观察它与 MultiImage 类相比如何处理多帧图像。
from skimage.io import ImageCollection # Load the multi-frame TIFF image ic = ImageCollection('Images_/Multi_Frame.tif') # Access and display information about the loaded image file print(ic) print('Type:',type(ic)) print('Length:',len(ic)) print('Shape:',ic[0].shape)
输出
['Images_/Multi_Frame.tif'] Type: < class 'skimage.io.collection.ImageCollection' > Length: 6 Shape: (382, 363, 3)
处理动画 GIF 图像时,MultiImage 只读取第一帧,而 ImageCollection 默认读取所有帧。
示例 3
让我们看一下下面的示例,并观察 MultiImage 类如何处理动画 GIF 图像。
from skimage.io import MultiImage # Load an animated GIF image multi_image = MultiImage('Images/dance-cartoon.gif') # display the multi_image object print(multi_image) print('Type:',type(multi_image)) print('Length:',len(multi_image)) for i, frame in enumerate(multi_image): print('Image {} shape:{}'.format(i, frame.shape))
输出
['Images/dance-cartoon.gif'] Type: < class 'skimage.io.collection.MultiImage'> Length: 1 Image 0 shape:(300, 370, 4)
示例 4
让我们使用 ImageCollection 类读取同一个 GIF 文件“dance-cartoon.gif”,并观察它与 MultiImage 类相比如何处理动画 GIF 图像。
from skimage.io import ImageCollection # Load an animated GIF image ic = ImageCollection('Images/dance-cartoon.gif') # Access and display information about the loaded image file print(ic) print('Type:',type(ic)) print('Length:',len(ic)) for i, frame in enumerate(ic): print('Image {} shape:{}'.format(i, frame.shape))
输入图像
输出
['Images/dance-cartoon.gif'] Type: <class 'skimage.io.collection.ImageCollection'> Length: 12 Image 0 shape:(300, 370, 4) Image 1 shape:(300, 370, 4) Image 2 shape:(300, 370, 4) Image 3 shape:(300, 370, 4) Image 4 shape:(300, 370, 4) Image 5 shape:(300, 370, 4) Image 6 shape:(300, 370, 4) Image 7 shape:(300, 370, 4) Image 8 shape:(300, 370, 4) Image 9 shape:(300, 370, 4) Image 10 shape:(300, 370, 4) Image 11 shape:(300, 370, 4)
广告