如何在 MATLAB 中提取 3D 数组元素的随机位移强度差异?

How to extract the random shift intensity difference a 3D array elements in MATLAB?

我正在对 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?感谢您的帮助。

@user630317 的评论指出,对于 3D 图像,u 应该是 3D 向量。

另外,图像是 'voxelized' 即离散的。 因此 x 是一个包含整数条目和单位作为体素(不是毫米)的向量。 u 的元素可以是整数,也可以不是整数,但单位为体素。 如果你有小数元素,则必须对小数位移进行插值并丢失信息。

matlab 函数 imtranslate 可以进行整数移位和小数移位。

让我成为代表 3D 体积的 matlab 中的 3 维数组。 让 u 成为平移的 3D 矢量(以体素为单位)。

那么翻译后的图像就是 I2 = imtranslate(I,u)

这是一个带有 3D 数组的示例代码:

I = randn(3,3,3);
u = [1.5,1,1];
I2 = imtranslate(I,u);