В этом примере показано, как выполнить операции на основе пикселей на графическом процессоре с помощью функций, которые отправляют данные и операции в графический процессор для обработки. Этот метод наиболее эффективен для поэлементных операций, которые требуют двух или более наборов данных.
Чтение и отображение изображения.
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)
The rgb2gray_custom
вспомогательные функции берут линейную комбинацию из трех каналов и возвращают одно выходное изображение канала.
function gray = rgb2gray_custom(r,g,b) gray = 0.5*r + 0.25*g + 0.25*b; end
arrayfun
(Parallel Computing Toolbox) | gather
(Parallel Computing Toolbox) | gpuArray
(Parallel Computing Toolbox)