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