blockproc
清晰的图像分块处理
语法
B = blockproc(A,[m n],fun)
B = blockproc(src_filename,[m n],fun)
B = blockproc(适配器,[m n],fun)
blockproc (___、名称、值)
描述
例子
创建图像缩略图
将图像读入工作区。
I = imread(“pears.png”);
创建块处理函数。
Fun = @(block_struct) imresize(block_struct.data,0.15);
逐块处理图像。
I2 = blockproc(I,[100 100],fun);
显示原始图像和处理后的图像。
图;imshow(我);
图;imshow (I2);
32 × 32块的“像素”设置为“标准偏差”
创建块处理函数。
Fun = @(block_struct)...Std2 (block_struct.data) * ones(size(block_struct.data));
执行块处理操作,通过文件名指定输入图像。
I2 = blockproc(“moon.tif”[32 32],有趣的);
显示原始图像和处理后的版本。
图;imshow (“moon.tif”);
图;imshow (I2, []);
切换RGB图像的红色和绿色波段
将图像读入工作区。
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”);
转换大TIFF图像为JPEG2000图像
注意:要运行此示例,必须替换“largeImage.tif”
文件的名称。
创建块处理函数。
Fun = @(block_struct) block_struct.data;
将TIFF图像转换为新的JPEG2000图像。取代“largeImage.tif”
实际映像文件的名称。
blockproc (“largeImage.tif”1024年[1024],有趣,“目的地”,“New.jp2”);
输入参数
一个
- - - - - -输入图像
数字矩阵
输入图像,指定为数字矩阵。
src_filename
- - - - - -源文件名
特征向量
源文件名,指定为字符向量。文件必须具有这些文件类型中的一种,并且必须以列出的文件扩展名之一命名。
TIFF (*.tif, *.tiff)
JPEG2000 (*.jp2, *.jpf, *.jpx, *.jpx)j2c, * .j2k)
数据类型:字符
适配器
- - - - - -图像适配器
ImageAdapter
对象
图像适配器,指定为ImageAdapter
对象。一个ImageAdapter
是用户定义的类,提供blockproc
使用一个通用的API来读写特定的图像文件格式。有关更多信息,请参见对不支持格式的图像文件进行块处理万博1manbetx.
(mn)
- - - - - -块大小
2-element向量
块大小,指定为2元素向量。米
行数是和吗n
是块中的列数。
有趣的
- - - - - -函数处理
处理
函数句柄,指定为句柄。函数必须接受ablock_struct作为输入并返回一个矩阵、向量或标量。如果有趣的
然后返回空blockproc
不生成任何输出,处理完所有块后返回空。
有关函数句柄的详细信息,请参见创建函数句柄(MATLAB)。
名称-值对参数
的可选逗号分隔对名称,值
参数。的名字
参数名称和价值
对应的值。的名字
必须出现在单引号内(' '
).您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
“BorderSize”,[8 4]
“目的地”
- - - - - -目的地
特征向量|ImageAdapter
对象
目标,指定为逗号分隔的对,由“目的地”
下面是其中之一。
具有目标文件名的字符向量。文件必须具有这些文件类型中的一种,并且必须以列出的文件扩展名之一命名。
TIFF (*.tif, *.tiff)
JPEG2000 (*.jp2, *。j2c, * .j2k)
如果存在此名称的文件,则会覆盖该文件。
一个
ImageAdapter
对象,它提供了一个通用的API用于读取和写入特定的图像文件格式。有关更多信息,请参见对不支持格式的图像文件进行块处理万博1manbetx.
当您指定“目的地”
参数,blockproc
不将处理后的图像作为输出参数返回,而是将输出写入“目的地”
.的“目的地”
当您期望输出太大而无法装入内存时,参数非常有用。它为任意大的图像提供了文件到文件图像处理的工作流。
请注意
属性时,不能请求输出参数“目的地”
参数。
“BorderSize”
- - - - - -边界大小
[0 0]
(默认)|正整数的2元向量
要添加到每个块的边框像素数,由逗号分隔的对组成“BorderSize”
一个2元正整数向量[v h]
.函数添加v
每个块的上面和下面的行h
每个块的左右列。每个生成块的大小为:
[m + 2 * v、n + 2 * h]
的结果中自动删除边框有趣的
.看到TrimBorder
为获取更多信息而争论。
该函数垫块,其边界扩展到图像边缘与零。
“PadPartialBlocks”
- - - - - -垫部分块
假
(默认)|真正的
填充部分块以使其完整大小,指定为由逗号分隔的对组成“PadPartialBlocks”
而且假
或真正的
.当图像大小不能被块大小整除时,出现部分块。如果它们存在,则部分块位于图像的右侧和底部边缘。
当设置为真正的
,blockproc
垫部分块,使他们全尺寸米
——- - - - - -n
块。默认为假
,这意味着该函数不填充部分块,而是按原样处理它们。blockproc
必要时使用零填充部分块。
“PadMethod”
- - - - - -垫的方法
0
(默认)|“复制”
|“对称”
|数字标量
方法用于填充图像边界,指定为由逗号分隔的对组成“PadMethod”
下面是其中之一。
价值 | 描述 |
---|---|
“复制” |
重复边界元素。 |
“对称” |
垫图像与镜子反射本身。 |
数字标量 | 带有标量值的填充图像。默认情况下,图像边界用该值填充0 . |
数据类型:字符
|字符串
“TrimBorder”
- - - - - -删除边界像素
真正的
(默认)|假
从用户函数的输出中删除边界像素,指定为由逗号分隔的对组成“TrimBorder”
而且真正的
或假
.当设置为真正的
,blockproc
函数从用户函数的输出中删除边界像素,有趣的
.函数移除v
的输出的顶部和底部的行有趣的
,h
来自左右边缘的列。的BorderSize
参数定义v
而且h
.
“UseParallel”
- - - - - -使用并行处理
假
(默认)|真正的
使用并行处理,指定为由逗号分隔的对组成“UseParallel”
而且假
或真正的
.这种图像处理模式需要并行计算工具箱™。当设置为真正的
,blockproc
尝试在并行模式下运行,将处理分布到多个工作者(MATLAB®会话)在一个开放的MATLAB池。在并行模式下,输入图像不能是ImageAdapter
对象。看到parpool
有关配置并行环境的信息。
“DisplayWaitbar”
- - - - - -显示等待栏
真正的
(默认)|假
显示等待栏,指定为由逗号分隔的对组成“DisplayWaitbar”
而且真正的
或假
.当设置为真正的
,blockproc
显示一个等待条,以指示长时间运行的操作的进度。为了防止blockproc
从显示waitbar, setDisplayWaitbar
来假
.
输出参数
B
-输出矩阵
数字矩阵
输出矩阵,作为数字矩阵返回。
更多关于
块结构
一个块结构是一个MATLAB结构,包含块数据和关于块的其他信息。字段块结构是:
场 | 描述 |
---|---|
边境 |
这种形式的2元向量[v h] .的边境 字段指定数据块周围垂直和水平填充的大小。看到BorderSize 为获取更多信息而争论。 |
blockSize |
这种形式的2元向量(行峡路) .的blockSize 字段指定块数据的大小。如果已指定边界,则大小不包括边界像素。 |
数据 |
米 ——- - - - - -n 或米 ——- - - - - -n ——- - - - - -p 块数据矩阵。 |
图象尺寸 |
这种形式的2元向量(行峡路) .的图象尺寸 字段指定输入图像的完整大小。 |
位置 |
这种形式的2元向量(行坳) .的位置 Field指定块数据在输入图像中的第一个像素(最小行,最小列)的位置。如果已指定边界,则位置指的是离散块数据的第一个像素,而不是添加的边界像素。 |
在R2009b中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。