Если у вас есть лицензия Parallel Computing Toolbox™, то функция blockproc
может использовать в своих интересах несколько ядер процессора на вашей машине, чтобы выполнить параллельную обработку блока.
Параллельная обработка блока позволяет вам обрабатывать много блоков одновременно распределительными вычислениями задачи к набору сеансов MATLAB®, названных рабочими. Сеанс работы с MATLAB, с которым вы взаимодействуете, называется клиентом. Клиент резервирует набор рабочих, названных параллельным пулом. Затем клиент делит входное изображение на блоки и отправляет блоки в сеансы работы с MATLAB рабочего. Каждый рабочие процессы подмножество блоков и передает результаты обратно клиенту. Клиент агрегировал результаты в выходную переменную.
При обработке маленьких изображений последовательный режим, как ожидают, будет быстрее, чем параллельный режим. Для увеличенных изображений, однако, можно видеть значительное увеличение производительности от параллельной обработки. Производительность параллельной обработки блока зависит от трех факторов:
Функция используется для обработки
Размер изображения
Размер блока
В целом, с помощью больших блоков, в то время как блок, обрабатывающий изображение, приводит к более быстрой производительности, чем завершение той же задачи с помощью меньших блоков. Однако иногда задача или алгоритм, вы обращаетесь к своему изображению, требуют определенного размера блока, и необходимо использовать меньшие блоки. Когда обработка блока с помощью меньших блоков, параллельная обработка блока обычно быстрее, чем регулярная (последовательная) обработка блока, часто большим полем. Если вы используете большие блоки, однако, вы можете должны быть экспериментировать, чтобы определить, экономит ли параллельная обработка блока вычислительное время.
Необходимо удовлетворить двум условиям, чтобы использовать параллельную обработку блока:
Исходное изображение не задано как класс ImageAdapter
.
Лицензия Parallel Computing Toolbox существует в установке MATLAB.
Если вы удовлетворяете этим условиям, то можно вызвать параллельную обработку в blockproc
путем определения аргумента 'UseParallel'
как true
. Когда вы делаете так, MATLAB автоматически открывает параллельный пул рабочих на вашей локальной машине и использует всех доступных рабочих, чтобы обработать входное изображение.
В следующем примере вычислите дискретное косинусное преобразование для каждого 8 8 блок изображения параллельно:
blockFun = @(block_struct) dct2(block_struct.data); result = blockproc(input_image,[8 8],blockFun, ... 'UseParallel',true);
Управляйте параллельным поведением с параллельными настройками, включая увеличение масштаба к кластеру. Смотрите parpool
для получения информации о конфигурировании вашей параллельной среды.