将二进制文件中的体素值读入 matlab

Reading voxel values from binary file into matlab

我有一个 16 位体素数据集,我需要从中提取每个体素的整数值。数据集可以从here下载,是'Head Aneuyrism 16Bits'数据集(需要点击血管图片下载16bit版本)。它的大小是 512x512x512,但我不知道它是灰度还是彩色,也不知道这是否重要。看网站上的图片我猜是彩色的,但我不确定图片是否应该照字面意思。

关于 SO 的相关问题如下:How can I read in a RAW image in MATLAB?

和以下数学作业:http://www.mathworks.com/matlabcentral/answers/63311-how-to-read-an-n-dimensioned-matrix-from-a-binary-file

感谢这些问题的答案中的信息,我设法使用 matlab 从文件中提取了一些信息,如下所示:

fileID=fopen('vertebra16.raw','r');

A=fread(fileID,512*512*512,'int16');

B=reshape(A,[512 512 512]);

我不需要可视化图像,我只需要每个体素的整数值,但我不确定我的脚本是否以正确的方式读取信息。 我发现尝试检查我是否具有正确的体素值的唯一方法是使用以下方法可视化 B:

implay(B)

现在,使用上面的代码,然后使用 implay(B) 我得到了一个黑白电影,中间有一个白色的光盘,背景是黑色的,一些黑色像素在光盘中移动(我试图上传一个电影的框架,但它没有用)。查看我下载文件的网站上的图像,我得到的电影帧似乎与该图像完全不同,因此我得出结论,我没有正确的体素值。

以下是一些与我的问题相关的问题:

看来你读对了数据。

显示时的问题是值的比例。 implay 似乎假定值在 [0,1] 中,因此将所有值都限制在该范围内,您的数据范围在哪里 [0,3000].

简单做

B = B / max(B(:))

会将您的数据重新调整为 [0,1] 并使用

再次查看数据
implay(B)

给你看一些更明智的东西。