Scikit Image - 图像集合
在计算机视觉和图像处理中,图像集合是一个术语,用于描述一组或一组图像,这些图像被视为一个单一实体,目的是同时管理和处理多个图像。
它可用于存储和管理一组相关图像,例如视频中的一系列帧,或来自各种来源的图像集合。它简化了多幅图像的管理和处理,使处理图像处理和计算机视觉任务变得更加容易。
skimage 中的 ImageCollection 类
在 scikit-image 库中,图像集合由 ImageCollection 类表示,该类提供加载、管理和操作图像文件集合的功能。
它允许您指定模式或文件名列表,将相应的图像加载到内存中并方便地访问它们。以下是该类的语法 −
class skimage.io.ImageCollection(load_pattern, conserve_memory=True, load_func=None, **load_func_kwargs)
以下是类的参数 −
- load_pattern − 表示要加载的文件名模式的字符串或字符串列表。文件名路径可以是绝对路径或相对路径。
- conserve_memory(可选) − 布尔值。如果设置为 True,则一次只会在内存中保留一张图像。如果设置为 False,则加载后将缓存图像以提高后续访问速度。
- load_func(可选) − 用于读取图像文件的可调用对象。默认情况下,它使用 scikit-image 库中的 imread 函数。但是,您可以根据需要指定其他函数。
- **load_func_kwargs(可选) − 传递给 load_func 函数的其他关键字参数。
它创建一个 ImageCollection 对象,允许您对加载的图像执行各种操作,例如遍历集合、访问单个图像以及将操作应用于整个集合。
示例 1
以下示例将演示如何加载指定目录中的所有 JPEG 文件。并且生成的 ImageCollection 对象将存储在 collection 变量中。
from skimage import io # 加载目录中的所有 JPEG 文件 collection = io.ImageCollection('Images_/*.jpg') print('Type:',type(collection)) print('Total loaded JPEG files are',len(collection))
输出
输出显示 collection 对象的类型和已加载的 JPEG 文件数量。
Type: < class 'skimage.io.collection.ImageCollection'> Total loaded JPEG files are 5
示例 2
以下示例演示如何使用 ImageCollection 对象的 files 属性访问扩展的文件名。
from skimage import io # 加载目录中的所有 JPEG 和 PNG 文件 collection = io.ImageCollection(['Images_/*.jpg', 'Images_/*.png']) # 访问扩展的文件列表 file_list = collection.files # 逐个打印文件列表 print("Files:") for image in file_list: print(image)
输出
Files: Images_\Blank.png Images_\Blank_img.png Images_\ColorDots.png Images_\Trees.jpg Images_\WhiteDots2.jpg Images_\WhiteDots4.jpg Images_\Zoo.jpg Images_\balloons_noisy.png Images_\binary image.png Images_ ree.jpg
您还可以使用 skimage.io 模块中名为 io.imread_collection() 的直接函数来读取图像集合。
imread_collection() 函数
imread_collection() 函数用于加载图像集合。它将返回一个 ImageCollection 对象,表示已加载的图像集合。
以下是函数的语法和参数 −
skimage.io.imread_collection(load_pattern, conserve_memory=True, plugin=None, **plugin_args)
以下是此函数的参数 −
- load_pattern −表示要加载的文件名模式的字符串或字符串列表。文件名路径可以是绝对路径,也可以是相对路径。
- conserve_memory(可选) − 布尔值。如果设置为 True,则一次只会将一张图像保留在内存中。如果设置为 False,则加载后将缓存图像以提高后续访问速度。
- plugin_args(可选) − 将传递给所选插件的附加关键字参数。
imread_collection() 是一个方便的包装函数,它在内部创建一个 ImageCollection 对象以加载图像集合。除了直接使用 ImageCollection 类之外,当您需要根据模式或文件名列表快速加载图像时,最好使用 imread_collection() 函数进行简单的用例。
示例 1
以下示例演示如何加载特定目录中的所有 tiff 文件。
from skimage import io # 加载所有 tiff 图像 collection = io.imread_collection('Images_/*.tiff', plugin='tifffile') print('Dipaly the tifffile collection:') print(collection)
输出
Dipaly the tifffile collection: ['Images_\file_example_TIFF_1MB.tiff', 'Images_\file_example_TIFF_10MB.tiff']
示例 2
以下示例将通过指定字符串(模式)列表来加载 tiff 和 JPEG 图像集合。
from skimage import io # 加载 JPEG 和 tifffile 图像集合 collection = io.imread_collection(['Image Collection/*.jpg', 'Image Collection/*.tiff']) print('Dipaly the JPEG and tifffile collection:') print(collection)
输出
Dipaly the JPEG and tifffile collection: ['Image Collection\Trees.jpg', 'Image Collection\WhiteDots2.jpg', 'Image Collection\WhiteDots4.jpg', 'Image Collection\Zoo.jpg', 'Image Collection\file_example_TIFF_1MB.tiff', 'Image Collection\file_example_TIFF_10MB.tiff', 'Image Collection\tree.jpg']
Imread_collection_wrapper() 函数
imread_collection_wrapper 是一个装饰器函数,用于创建 imread_collection() 函数的自定义版本。此包装器函数封装了使用指定图像读取函数创建 ImageCollection 对象的逻辑。
以下是此函数的语法 −
skimage.io.imread_collection_wrapper(imread)
imshow_collection() 函数
imshow_collection() 函数用于显示图像集合。它以 ImageCollection 对象为输入,并显示该集合中包含的图像。
这里是函数的语法和参数 −
skimage.io.imshow_collection(ic, plugin=None, **plugin_args)
以下是参数 −
- ic − 表示要显示的图像集合的 ImageCollection 对象。
- plugin(可选) − 指定用于图像显示的插件名称的字符串。默认情况下,会尝试不同的插件,直到找到合适的插件。
- plugin_args −传递给所选插件以显示图像的附加关键字参数。
示例
以下示例演示如何使用 imshow_collection() 函数显示图像集合。
from skimage import io # 加载目录中的所有 JPEG 和 PNG 文件 collection = io.ImageCollection('Images_/*.jpg') # 访问展开的文件列表 file_list = collection.files # 逐个打印文件列表 print("Files:") for image in file_list: print(image) # 显示图像集合 io.imshow_collection(collection) io.show()
输出
运行上述代码将得到以下结果 −
