Параллельная обработка блоков на больших файлах изображений

Если у вас есть лицензия Parallel Computing Toolbox™, то blockproc функция может использовать преимущества нескольких процессорных ядер на вашей машине, чтобы выполнить параллельную обработку блоков.

Что такое параллельная обработка блоков?

Параллельная обработка блоков позволяет вам обрабатывать много блоков одновременно путем распределения расчетов задачи в набор MATLAB® сеансов, называемых рабочими. Сеанс работы с MATLAB, с которой вы взаимодействуете, называется клиентом. Клиент резервирует набор рабочих мест, называемую параллельным пулом. Затем клиент делит вход изображение на блоки и отправляет блоки в рабочие Сеансы работы с MATLAB. Каждый рабочий процесс обрабатывает подмножество блоков и отправляет результаты обратно клиенту. Клиент агрегирует результаты в переменный выход.

Когда использовать параллельную обработку блоков

При обработке небольших изображений последовательный режим ожидается быстрее, чем параллельный режим. Однако для больших изображений вы можете увидеть значительное увеличение эффективности при параллельной обработке. Эффективность параллельной обработки блоков зависит от трех факторов:

  • Функция, используемая для обработки

  • Размер изображения

  • Размер блока

В целом использование больших блоков во время обработки блоков приводит к более высокой эффективности, чем выполнение той же задачи с использованием небольших блоков. Однако иногда задача или алгоритм, который вы применяете к своему изображению, требуют определенного размера блока, и вы должны использовать меньшие блоки. При обработке блоков с использованием меньших блоков параллельная обработка блоков обычно быстрее, чем обычная (последовательная) обработка блоков, часто с большим запасом. Если вы используете большие блоки, однако, вам может потребоваться экспериментировать, чтобы определить, экономит ли параллельная обработка блоков время вычислений.

Как использовать параллельную обработку блоков

Вы должны удовлетворить двум условиям, чтобы использовать параллельную обработку блоков:

  • Исходное изображение не задано как ImageAdapter класс.

  • В установке MATLAB существует лицензия Parallel Computing Toolbox.

Если вы удовлетворяете этим условиям, то можно вызвать параллельную обработку в 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) для получения информации о конфигурировании параллельного окружения.

См. также

Похожие темы