Scikit-image 简明教程
Scikit Image - Multi Images
多图像或多帧图像通常是指一种图像格式,可以在单个文件中存储和表示多张图像或帧。例如,动图和多帧 TIFF 文件就是多图像格式的示例。
Multi Image or Multi-frame Image, in general, refers to an image format that can store and represent multiple images or frames within a single file. For instance, animated GIFs and multi-frame TIFF files are examples of multi-image formats.
MultiImage class in Scikit Image
scikit-image io module 中的 MultiImage 类用于专门处理多帧 TIFF 图像。它提供了一种加载和处理多帧 TIFF 图像的便捷方法。
The MultiImage class in the scikit-image io module is used to specifically handle multiframe TIFF images. It provides a convenient way to load and manipulate multi-frame TIFF images.
在使用 MultiImage 类处理多帧 TIFF 时,它会返回一个图像数据数组列表,类似于 ImageCollection 类。然而,它们处理多帧图像的方式有所不同。Multi-Image 将多帧 TIFF 图像的所有帧存储为列表中的一个单独元素,其形状为 (N, W, H),其中 N 是帧数,W 和 H 是每个帧的宽度和高度。
When working with multi-frame TIFFs using the MultiImage class, it returns a list of image-data arrays, similar to the ImageCollection class. However, there is a difference in how they handle multi-frame images. Multi-Image stores all frames of a multi-frame TIFF image as a single element in the list, with a shape of (N, W, H), where N is the number of frames and W and H are the width and height of each frame.
以下是此类的语法−
Following is the syntax of this class −
class skimage.io.MultiImage(filename, conserve_memory=True, dtype=None,
**imread_kwargs)
以下是类的参数−
Here are the parameters of the class −
-
filename − A string or list of strings specifying the pattern or filenames to load. The path can be absolute or relative.
-
conserve_memory (optional) − A boolean value. If set to True, only one image will be kept in memory at a time. If set to False, images will be cached after loading to improve subsequent access speed.
Example 1
以下示例演示了如何使用 MultiImage 类加载多帧 TIFF 图像并获取有关加载图像的信息。
The following example demonstrates how to use the MultiImage class to load a multiframe TIFF image and obtain information about the loaded image.
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)
Example 2
让我们使用 ImageCollection 类读取相同的多帧 TIFF 文件“Multi_Frame.tif”,并观察与 MultiImage 类相比,它如何处理多帧图像。
Let’s read the same Multi-frame TIFF file, "Multi_Frame.tif" using the ImageCollection class and observe how it treats the multi-frame images compared to the MultiImage class.
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 image, 时,MultiImage 只读取第一帧,而 ImageCollection 默认读取所有帧。
When working with an animated GIF image, MultiImage reads only the first frame, whereas the ImageCollection reads all frames by default.
Example 3
让我们研究以下示例并观察 MultiImage 类如何处理动画 GIF 图像。
Let’s look into the following example and observe how the MultiImage class treats the animated GIF image.
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)
Example 4
让我们使用 ImageCollection 类读取相同的 GIF 文件“dance-cartoon.gif”,并观察与 MultiImage 类相比,它如何处理动画 GIF 图像。
Let’s read the same GIF file, "dance-cartoon.gif" using the ImageCollection class and observe how it treats the animated GIF image compared to the MultiImage class.
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)