Если у вас есть лицензия 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
(Parallel Computing Toolbox) для получения информации о конфигурировании вашей параллельной среды.