文件

blockproc

图像的不同块处理

句法

blockSize, B = blockproc(有趣)
b = blockproc(src_filename,blocksize,fun)
B = blockproc(适配器、blockSize有趣)
blockProc(___,名称,值,......)

描述

B.= blockproc (一种BlockSize.有趣的的)处理图像一种通过应用该功能有趣的每个不同的区块一种并将结果连接到B.,输出矩阵。BlockSize.是一个双元素矢量,[Rows Cols],它指定块的大小。有趣的是一个接受一个函数的句柄块结构作为输入并返回一个矩阵、向量或标量y.例如,Y =乐趣(block_struct).(有关a的更多信息块结构, 看定义。)对于输入图像中的每个数据块,一种blockproc通过块在一个块结构对于用户功能,有趣的,生产y,输出图像中的相应块。如果y是空的,blockproc不生成任何输出,并在处理所有块后返回空。选择合适的块大小可以显著提高性能。有关更多信息,请参见选择的块大小.有关函数句柄的更多信息,请参见创建函数处理(MATLAB)。

B.= blockproc (src_filename.BlockSize.有趣的的)处理图像src_filename.,一次读取和处理一个街区。该语法对于处理大图像是有用的,因为只有一个图像块一次被读入存储器。如果输出矩阵B.太大而无法融入内存,省略输出参数,而是使用'目的地'参数/值对将输出写入文件。

B.= blockproc (适配器BlockSize.有趣的的)处理指定的源图像适配器, 一个ImageAdapter目的。一个ImageAdapter是提供的用户定义类blockproc使用通用API读写特定的图像文件格式。有关更多信息,请参见使用blockproc以不支持的格式读和写数据金宝app

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

输入参数

一种

输入图像。

BlockSize.

块的大小,指定为双元素向量,[Rows Cols]

有趣的

函数的句柄块结构作为输入并返回矩阵,向量或标量。

src_filename.

输入图像。

适配器

提供的用户定义类blockproc使用通用API读写特定的图像文件格式。

名称-值对的观点

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

“BorderSize”

为每个块添加到每个块的边框像素数,指定为双元素向量,[v h].该功能增加了V.每个区块的上面和下面H每个块左右列。每个结果块的大小是:

n + 2* v, n + 2* h
默认情况下,函数自动从的结果中删除边界有趣的.看看“TrimBorder”参数以获取更多信息。函数用扩展到图像边缘之外的零填充块。

默认:[0 0](无边界)

'目的地'

输出的目标,指定为字符向量或ImageAdapter对象。字符向量是TIFF文件的名称,该文件必须包含'.tif'文件扩展名。如果存在具有此名称的文件,则会覆盖该文件。Imageadapters.提供一个接口来读取和写入任意图像文件格式。

'目的地'当您希望输出太大以适应内存时,参数很有用。它为任意大图像的文件到文件图像处理提供了工作流程。当您指定时'目的地'参数,blockproc不会将已处理的图像作为输出参数返回,而是将输出写入'目的地'.(当您无法请求输出参数'目的地'指定参数。)

“PadPartialBlocks”

填充部分块,使其成为完整大小的块,指定为逻辑标量真正的.设置到真正的blockproc填充部分块,使它们全尺寸(m×n的)块。当图像大小不能被块大小整除时,就会出现部分块。如果它们存在,部分块位于图像的右侧和底部边缘。默认值是,这意味着该函数不会填充部分块,而是按原样处理它们。blockproc在必要时使用零填充部分块。

默认:

“PadMethod”

用于填充图像边界的方法,指定为任何这些值。“PadMethod”决定了blockproc将填充图像边界。选项有:

价值 描述
“复制” 重复边界元素。
“对称” 垫图像与镜面反射本身。
X 垫图像与标量值X.默认情况下x == 0.

“TrimBorder”

从用户函数的输出中删除指定为逻辑标量的边框像素真正的.设置到真正的, 这blockproc函数从用户函数的输出中删除边框像素,有趣的.功能删除V.的输出的顶部和底部的行有趣的,H列从左和右边缘。这“BorderSize”参数定义V.H.默认值是真正的,意思是blockproc函数自动删除有趣的输出。

默认:真正的

'使用指惯'

启用并行模式,指定为逻辑标量真正的.这种图像处理模式需要并行计算工具箱™。设置到真正的blockproc尝试以并行模式运行,将处理分散到多个工作人员(MATLAB®会话)在一个开放的matlab池中。在并行模式下,输入图像不能是ImageAdapter目的。看parpool.有关配置并行环境的信息。

默认:

'displaywaitbar'

显示等待条,指定为逻辑标量真正的.设置到真正的blockproc显示一个助服务器,以指示长时间运行操作的进度。阻止blockproc从显示一个助地栏,设置DisplayWaitbar

默认:真正的

文件格式支持:金宝app输入和输出文件blockproc(如指定的src_filename.'目的地'参数)必须具有以下文件类型之一,必须使用其中一个列出的文件扩展名命名:

  • 读/写文件格式:TIFF (*.tif, *. TIFF), JPEG2000 (*.jp2, *.jp2)。j2c, * .j2k)

  • 只读文件格式:jpeg2000(* .jpf,* .jpx)

输出参数

B.

输出矩阵。

例子

全部折叠

将图像读入工作区。

我= imread ('pears.png');

创建块处理功能。

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

处理图像,逐块。

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

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

图;imshow(我);

图;imshow (I2);

创建块处理功能。

有趣= @ (block_struct)......std2 (block_struct.data) *的(大小(block_struct.data));

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

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

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

图;imshow (“moon.tif”);

图;imshow (I2, []);

将图像读入工作区。

我= imread (“peppers.png”);

创建块处理功能。

fun = @(block_struct)block_struct.data(:,:,[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”);

更多关于

全部折叠

块结构

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

  • block_struct.border.:两个元素矢量,[v h],这指定了数据块周围的垂直和水平填充的大小。(见“BorderSize”输入部分中的参数。)

  • block_struct.blocksize.:两个元素矢量,[Rows Cols],指定块数据的大小。如果指定了边框,则尺寸不包括边框像素。

  • block_struct.data.m×n的m-by-by-p块数据矩阵

  • block_struct.imagesize.:两个元素矢量,[Rows Cols],这指定了输入图像的完整大小。

  • block_struct.location:两个元素矢量,(行坳),它指定输入图像中的块数据的第一像素(最小行,最小列)的位置。如果指定了边界,则该位置指的是离散块数据的第一像素,而不是添加的边界像素。

也可以看看

||

主题

在R2009B中介绍

这个话题有用吗?