Как извлечь случайную разницу в интенсивности сдвига элементов трехмерного массива в MATLAB? - PullRequest
0 голосов
/ 11 декабря 2018

Я делаю сегментацию изображений на медицинских изображениях 3D.В одной из связанных статей авторы извлекли особенность, которую я не понимаю, как мне ее рассчитать: f(x, u) = I(x + u) − I(x) - это разность интенсивности случайного сдвига между вокселем x и смещением u в mm^3.Если мы считаем, что pixel_spacing медицинского изображения 0.36x0.36x0.7 mm^3, как я могу извлечь и получить эту функцию для всего тома в памяти и вычислительно эффективным способом для u=2 mm^3?Ваша помощь приветствуется.

1 Ответ

0 голосов
/ 13 декабря 2018

Как указывает комментарий @ 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);
...