如果您拥有并行计算工具箱™许可证,则blockproc
函数可以利用机器上的多个处理器核心来执行并行块处理。
并行块处理允许您通过将任务计算分配到MATLAB集合来同时处理许多块®会议,被称为工人.与您交互的MATLAB会话称为客户端.客户端保留一个工人集合,称为平行池.然后,客户端将输入图像分成块,并将块发送给工作MATLAB会话。每个worker处理块的一个子集,并将结果发送回客户端。客户端将结果聚合到输出变量中。
在处理小图像时,串行模式预期比并行模式更快。但是,对于较大的图像,并行处理可以显著提高性能。并行块处理的性能取决于三个因素:
用于处理的函数
图像大小
块大小
一般来说,在块处理图像时使用较大的块比使用较小的块完成相同任务的性能更快。然而,有时应用于图像的任务或算法需要一定的块大小,并且必须使用较小的块。当块处理使用较小的块时,并行块处理通常比常规(串行)块处理快很多。但是,如果您正在使用更大的块,则可能需要进行实验,以确定并行块处理是否可以节省计算时间。
使用并行块处理必须满足两个条件:
源映像没有指定为ImageAdapter
类。
MATLAB安装中存在并行计算工具箱许可证。
如果满足这些条件,则可以在中调用并行处理blockproc
通过指定“UseParallel”
参数为真正的
.当您这样做时,MATLAB会自动在本地机器上打开一个并行工作池,并使用所有可用的工作来处理输入图像。
在下面的例子中,并行地为图像的每个8 × 8块计算一个离散的余弦变换:
blockFun = @(block_struct) dct2(block_struct.data);result = blockproc(input_image,[8 8],blockFun,...“UseParallel”,真正的);
使用并行首选项控制并行行为,包括扩展到集群。看到parpool
(并行计算工具箱)有关配置并行环境的信息。