用于获得3D矩阵中的图像的梯度的矢量化方式

时间:2018-01-30 06:43:24

标签: matlab matrix vectorization

如果我的矩阵A是一个3D矩阵,其中每个切片都是一个图像,是否可以使用矢量化方法获得每个切片的渐变而没有循环?我目前的方法:

A=rand(50,50,50);
grad=zeros(size(A));

for i=1:size(A,3)
    grad(:,:,i)=imgradient(A(:,:,i));
end

当前处理3D矩阵中的大量图像时,当前方法的性能会非常慢。想知道是否有更快更清洁的方法来获得渐变,就像简单的grad=imgradient(A)

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您需要图像的渐变幅度。您可以使用gradient,它接受​​3D矩阵以获取渐变GradxGrady的矢量分量,然后计算幅度:

[Gradx,Grady] = gradient(A)
Grad = sqrt(Gradx.^2 + Grady.^2)