文档

blockproc

清晰的图像分块处理

语法

B = blockproc(A,[m n],fun)
B = blockproc(src_filename,[m n],fun)
B = blockproc(适配器,[m n],fun)
blockproc (___、名称、值)

描述

例子

B= blockproc (一个(mn)有趣的处理图像一个通过应用这个函数有趣的到每个不同大小的块(mn)并将结果连接到输出矩阵中,B

例子

B= blockproc (src_filename(mn)有趣的使用文件名处理图像src_filename每次读取和处理一个数据块。此语法对于处理大型图像非常有用。

B= blockproc (适配器(mn)有趣的处理指定的源映像适配器,一个ImageAdapter对象。

例子

blockproc (___名称,值处理输入图像,指定参数和相应的值,这些参数和值控制块行为的各个方面。参数名不区分大小写。

例子

全部折叠

将图像读入工作区。

I = imread(“pears.png”);

创建块处理函数。

Fun = @(block_struct) imresize(block_struct.data,0.15);

逐块处理图像。

I2 = blockproc(I,[100 100],fun);

显示原始图像和处理后的图像。

图;imshow(我);

图;imshow (I2);

创建块处理函数。

Fun = @(block_struct)...Std2 (block_struct.data) * ones(size(block_struct.data));

执行块处理操作,通过文件名指定输入图像。

I2 = blockproc(“moon.tif”[32 32],有趣的);

显示原始图像和处理后的版本。

图;imshow (“moon.tif”);

图;imshow (I2, []);

将图像读入工作区。

I = imread(“peppers.png”);

创建块处理函数。

Fun = @(block_struct) block_struct。数据(:,:,[2 1 3]);

执行块处理操作。

blockproc(我,200年[200],有趣,“目的地”“grb_peppers.tif”);

显示原始图像和处理后的图像。

图;imshow (“peppers.png”);

图;imshow (“grb_peppers.tif”);

注意:要运行此示例,必须替换“largeImage.tif”文件的名称。

创建块处理函数。

Fun = @(block_struct) block_struct.data;

将TIFF图像转换为新的JPEG2000图像。取代“largeImage.tif”实际映像文件的名称。

blockproc (“largeImage.tif”1024年[1024],有趣,“目的地”“New.jp2”);

输入参数

全部折叠

输入图像,指定为数字矩阵。

源文件名,指定为字符向量。文件必须具有这些文件类型中的一种,并且必须以列出的文件扩展名之一命名。

  • TIFF (*.tif, *.tiff)

  • JPEG2000 (*.jp2, *.jpf, *.jpx, *.jpx)j2c, * .j2k)

数据类型:字符

图像适配器,指定为ImageAdapter对象。一个ImageAdapter是用户定义的类,提供blockproc使用一个通用的API来读写特定的图像文件格式。有关更多信息,请参见对不支持格式的图像文件进行块处理万博1manbetx

块大小,指定为2元素向量。行数是和吗n是块中的列数。

函数句柄,指定为句柄。函数必须接受ablock_struct作为输入并返回一个矩阵、向量或标量。如果有趣的然后返回空blockproc不生成任何输出,处理完所有块后返回空。

有关函数句柄的详细信息,请参见创建函数句柄(MATLAB)。

名称-值对参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在单引号内(' ').您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“BorderSize”,[8 4]

全部折叠

目标,指定为逗号分隔的对,由“目的地”下面是其中之一。

  • 具有目标文件名的字符向量。文件必须具有这些文件类型中的一种,并且必须以列出的文件扩展名之一命名。

    • TIFF (*.tif, *.tiff)

    • JPEG2000 (*.jp2, *。j2c, * .j2k)

    如果存在此名称的文件,则会覆盖该文件。

  • 一个ImageAdapter对象,它提供了一个通用的API用于读取和写入特定的图像文件格式。有关更多信息,请参见对不支持格式的图像文件进行块处理万博1manbetx

当您指定“目的地”参数,blockproc不将处理后的图像作为输出参数返回,而是将输出写入“目的地”.的“目的地”当您期望输出太大而无法装入内存时,参数非常有用。它为任意大的图像提供了文件到文件图像处理的工作流。

请注意

属性时,不能请求输出参数“目的地”参数。

全部折叠

要添加到每个块的边框像素数,由逗号分隔的对组成“BorderSize”一个2元正整数向量[v h].函数添加v每个块的上面和下面的行h每个块的左右列。每个生成块的大小为:

[m + 2 * v、n + 2 * h]

的结果中自动删除边框有趣的.看到TrimBorder为获取更多信息而争论。

该函数垫块,其边界扩展到图像边缘与零。

填充部分块以使其完整大小,指定为由逗号分隔的对组成“PadPartialBlocks”而且真正的.当图像大小不能被块大小整除时,出现部分块。如果它们存在,则部分块位于图像的右侧和底部边缘。

当设置为真正的blockproc垫部分块,使他们全尺寸——- - - - - -n块。默认为,这意味着该函数不填充部分块,而是按原样处理它们。blockproc必要时使用零填充部分块。

方法用于填充图像边界,指定为由逗号分隔的对组成“PadMethod”下面是其中之一。

价值 描述
“复制” 重复边界元素。
“对称” 垫图像与镜子反射本身。
数字标量 带有标量值的填充图像。默认情况下,图像边界用该值填充0

数据类型:字符|字符串

从用户函数的输出中删除边界像素,指定为由逗号分隔的对组成“TrimBorder”而且真正的.当设置为真正的,blockproc函数从用户函数的输出中删除边界像素,有趣的.函数移除v的输出的顶部和底部的行有趣的,h来自左右边缘的列。的BorderSize参数定义v而且h

使用并行处理,指定为由逗号分隔的对组成“UseParallel”而且真正的.这种图像处理模式需要并行计算工具箱™。当设置为真正的blockproc尝试在并行模式下运行,将处理分布到多个工作者(MATLAB®会话)在一个开放的MATLAB池。在并行模式下,输入图像不能是ImageAdapter对象。看到parpool有关配置并行环境的信息。

显示等待栏,指定为由逗号分隔的对组成“DisplayWaitbar”而且真正的.当设置为真正的blockproc显示一个等待条,以指示长时间运行的操作的进度。为了防止blockproc从显示waitbar, setDisplayWaitbar

输出参数

全部折叠

输出矩阵,作为数字矩阵返回。

更多关于

全部折叠

块结构

一个块结构是一个MATLAB结构,包含块数据和关于块的其他信息。字段块结构是:

描述
边境 这种形式的2元向量[v h].的边境字段指定数据块周围垂直和水平填充的大小。看到BorderSize为获取更多信息而争论。
blockSize 这种形式的2元向量(行峡路).的blockSize字段指定块数据的大小。如果已指定边界,则大小不包括边界像素。
数据 ——- - - - - -n——- - - - - -n——- - - - - -p块数据矩阵。
图象尺寸 这种形式的2元向量(行峡路).的图象尺寸字段指定输入图像的完整大小。
位置 这种形式的2元向量(行坳).的位置Field指定块数据在输入图像中的第一个像素(最小行,最小列)的位置。如果已指定边界,则位置指的是离散块数据的第一个像素,而不是添加的边界像素。

提示

  • 选择合适的块大小可以显著提高性能。有关更多信息,请参见块大小和性能

  • 如果输出矩阵B太大,无法装入内存,请省略输出参数,而使用目的地参数将输出写入文件。

在R2009b中引入

这个话题有用吗?