mathematical operation on each element of gpuArray

5 views (last 30 days)
How can i do mathematical operation on each element of gpuArray with the equation below? s = 2r(i, j) − r(i, j +1) + r(i, j −1). here r is the image matrix. I've written the code below:
im = imread('(HTC-1-M7)1.jpg');
tic
img = gpuArray(im);
for j =2: size(im,2) -1
A(:,:,:) = 2*img(:, :,:) -img(:,j+1,:) + img(:, j-1,:);
end
B = gather(A);
toc
Is there anyway to apply equation on each element of gpuarray with function like arrayfun without using loop? Thanks in advance.
  2 Comments
Matt J
Matt J on 22 Jan 2018
Are you certain that it is not a 2nd order differencing filter that you want:
s = 2r(i, j) r(i, j +1) - r(i, j 1)
Rouhan Noor
Rouhan Noor on 22 Jan 2018
Edited: Rouhan Noor on 22 Jan 2018
actually I found it from a research paper from IEEE. They derive this equation for row wise(x-axis) second order differentiation. But i have come to know about imgradientxy function, not sure this function does the same stuff like this equation or not.

Sign in to comment.

Answers (1)

Matt J
Matt J on 22 Jan 2018
Edited: Matt J on 22 Jan 2018
B=gather( imfilter(gpuArray(img), [+1,2,-1]) );
  4 Comments
Rouhan Noor
Rouhan Noor on 22 Jan 2018
Is there any builin function in matlab to determine the second order derivative of image like the equation above?
Matt J
Matt J on 22 Jan 2018
Edited: Matt J on 22 Jan 2018
B=gather( diff(gpuArray(img),2,2) );

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!