Как указывает комментарий @ user630317, для 3D-изображения u должен быть 3D-вектором.
Кроме того, изображение «вокселизировано», то есть дискретно.Следовательно, x - это вектор с целочисленными значениями и единицами измерения в виде вокселей (не мм).Элементы u могут быть или не быть целыми числами, но имеют единицы измерения в качестве вокселей.Если у вас есть дробные элементы, то пришлось бы интерполировать дробные сдвиги и потерять информацию.
Функция matlab imtranslate может выполнять как целочисленные, так и дробные сдвиги.
Позвольте, я буду 3-D-массив в Matlab, представляющий объем 3D.Пусть, u будет трехмерным вектором переводов (в единицах вокселей).
Тогда переведенное изображение будет I2 = imtranslate (I, u)
Это пример кода с 3Dмассив:
I = randn(3,3,3);
u = [1.5,1,1];
I2 = imtranslate(I,u);