如果我的矩阵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)
。
答案 0 :(得分:0)
如果我理解正确,您需要图像的渐变幅度。您可以使用gradient
,它接受3D矩阵以获取渐变Gradx
和Grady
的矢量分量,然后计算幅度:
[Gradx,Grady] = gradient(A)
Grad = sqrt(Gradx.^2 + Grady.^2)