В этом примере показано, как выполнить основанные на пикселе операции на графическом процессоре при помощи функций, которые отправляют и данные и операции к графическому процессору для обработки. Этот метод является самым эффективным для поэлементных операций, которые требуют двух или больше наборов данных.
Считайте и отобразите изображение.
I = imread('concordaerial.png');
imshow(I)
Переместите данные с центрального процессора на графический процессор путем создания gpuArray
Объект (Parallel Computing Toolbox).
Igpu = gpuArray(I);
Выполните операцию на графическом процессоре. Этот пример задает пользовательскую функцию под названием rgb2gray_custom
это преобразует изображение RGB в шкалу полутонов при помощи пользовательского взвешивания красных, зеленых, и синих цветовых каналов. Эта функция задана в конце примера. Передайте указатель на пользовательскую функцию и данные к графическому процессору для оценки arrayfun
(Parallel Computing Toolbox) функция.
Igray_gpu = arrayfun(@rgb2gray_custom, ...
Igpu(:,:,1),Igpu(:,:,2),Igpu(:,:,3));
Caught front-end user exception: MATLAB:m_illegal_character
Положите обратно данные к центральному процессору от графического процессора при помощи gather
(Parallel Computing Toolbox) функция.
I_gpuresult = gather(Igray_gpu);
Отобразите результат.
imshow(I_gpuresult)
rgb2gray_custom
помощник функционирует, берет линейную комбинацию трех каналов и возвращает одно выходное изображение канала.
function gray = rgb2gray_custom(r,g,b) gray = 0.5*r + 0.25*g + 0.25*b; end
gpuArray
(Parallel Computing Toolbox) | gather
(Parallel Computing Toolbox) | arrayfun
(Parallel Computing Toolbox)