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

# Load all the JPEG files in a directory
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

# Load all the JPEG and PNG files in a directory
collection = io.ImageCollection(['Images_/*.jpg', 'Images_/*.png'])
# Access the expanded file list
file_list = collection.files
# Print the list of files one by one
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_\tree.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

# Load all the tiff images
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

# Load a collection of JPEG and tifffile images
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

# Load all the JPEG and PNG files in a directory
collection = io.ImageCollection('Images_/*.jpg')
# Access the expanded file list
file_list = collection.files
# Print the list of files one by one
print("Files:")
for image in file_list:
   print(image)
# Display the collection of images
io.imshow_collection(collection)
io.show()

输出

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

Imshow Collection
广告