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()

输出

运行上述代码将得到以下结果 −

Imshow Collection