Octave imshow()不分析八度int16数组的任何内容

Octave imshow()不分析八度int16数组的任何内容,octave,Octave,我正在用脑MRI数据集研究八度音阶 数据的格式是数百个.mat文件。 我使用:x=load(“filename.mat”)加载数据文件,图像以0到256的数组形式存储 然后,当我尝试imshow(x.image)时,会弹出一个带有512 x 512图形的窗口,但它是完全黑色的。 它还抛出一条警告:“cdata(=int16矩阵)的类型不受支持。有效类型为uint8、uint16、双精度、单精度和布尔值。 我还尝试使用:imshow(cast(x,“double”)和上面提到的所有其他数据类型强制

我正在用脑MRI数据集研究八度音阶

数据的格式是数百个.mat文件。 我使用:
x=load(“filename.mat”)
加载数据文件,图像以0到256的数组形式存储

然后,当我尝试
imshow(x.image)
时,会弹出一个带有512 x 512图形的窗口,但它是完全黑色的。 它还抛出一条警告:“cdata(=int16矩阵)的类型不受支持。有效类型为uint8、uint16、双精度、单精度和布尔值。

我还尝试使用:
imshow(cast(x,“double”)
和上面提到的所有其他数据类型强制转换图像数组,但结果几乎相同

请帮助我。

您可以使用
imshow
的参数。图像显示为黑色,因为它只包含[0256]范围内的值,而
int16
最多包含32767个值

您可以手动设置限制:

imshow(x.image,[0256])
或使用

imshow(x.image,[]
用于自动极限检测


注意:在倍频程上,这只适用于支持的类型。由于图像不包含负值,因此可以将图像转换为符合您的值的
uint16
。或者您可以使用double,以获得更一般的方法:

imshow(uint16(x.image),[])
imshow(双(x图像),[])
在您的情况下,如果您不介意将256值的像素饱和为255,则可以将图像转换为
uint8

imshow(uint8(x.image))

我可以用倍频程5.2绘制
int16矩阵。
typeinfo(x.image)
的输出是什么?