Shift Values in Array of ones and zeros

1 次查看(过去 30 天)
I have a 512x512x100 array of ones and zeros. How do i shift the ones in by a certain integer factor in any direction (up,down,right,left) in all 100 images
the code will have to find all the ones in the 512x512x100 array and shift them in that direction without changing the array size. so the ones will be shifted to take over another zero's place and not shift the zeros with it to create a larger/smaller array. Can you please use code that will work for 3D arrays
example:
shift up
0 0 0 0 0
0 0 0 1 0
0 1 1 1 0
0 0 1 0 0
0 0 0 0 0
becomes:
0 0 0 1 0
0 1 1 1 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
And my images don't have any ones in the outermost border of the 512x512 images so that shouldn't be a problem trying to shift a one on the corners

回答(1 个)

Matthias Walle
Matthias Walle 2019-9-30
编辑:Matthias Walle 2019-9-30
If you have Image Processing Toolbox this would be the easiest in my opinion
A=[0 0 0 0 0;
0 0 0 1 0;
0 1 1 1 0;
0 0 1 0 0;
0 0 0 0 0];
A_new=imtranslate(A,[0, -1],'OutputView','same');
Or you look at affine transformation in the documentation

类别

Help CenterFile Exchange 中查找有关 Get Started with Image Processing Toolbox 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by