Sliding window in a sparse 3d volume
이전 댓글 표시
Hi, I have a 3d (MxNxL) matrix, and I want to compute for a list of x,y,z (actually all x,y, and a certain z, not for each x,y,z!) a function over a i*j*k window.
The sliding window should be of size(i*j*k) but not all values in the window are the neighborhood, for example, the window can be a sphere of radius r that is bound in that square window, or it could be a cylinder or some kind of other shape.
The results I need is a MxN matrix (2D, so no convn), where for each x,y location I have the result of the function applied on x,y 3d neighborhood. MxN could be very large, I don't want to do it with loops.
Example for a window I want to slide over the 3d volume:
[x,y,z] = meshgrid(1:r,1:r,1:r);
xc = floor(r./2)+1;
yc = floor(r./2)+1;
zc = floor(r./2)+1;
sphere_window = (x-xc).^2 + (y-yc).^2 + (z-zc).^2 <= r.^2;
댓글 수: 7
Sean de Wolski
2013년 4월 8일
What does the function look like? It might be something you could do with convn() or similar but we'll have to see the function.
Orly amsalem
2013년 4월 8일
Image Analyst
2013년 4월 8일
If you can do it with convn, I'd recommend that. It is highly optimized so it won't be as slow as you think. For example with a 10x10x10 cube, moving it over by 1 voxel only has to read in another 100 voxels, not a thousand.
Orly amsalem
2013년 4월 8일
Image Analyst
2013년 4월 8일
Then use conv2().
Orly amsalem
2013년 4월 8일
Orly amsalem
2013년 4월 8일
답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Volume Visualization에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!