我在Octave上使用一个脑MRI数据集。
数据是以数百个.mat文件的形式存在的。x = load("filename.mat")
图像以0到256的数组形式存储。
然后当我尝试 imshow(x.image)
一个窗口弹出512 x 512的图形,但完全是黑色的,它还抛出一个警告说。unsupported type for cdata (= int16 matrix). Valid types are uint8, uint16, double, single, and bool.
我也试过使用图像数组来铸造: imshow(cast(x, "double"))
和上面提到的所有其他数据类型,但结果几乎一样。
请帮帮我。
你可以使用 limits
的参数 imshow
. 图像显示为黑色,因为它只包含[0,256]范围内的值,而 int16
包含的值最大为32767。
你可以手动设置限制。
imshow(x.image, [0, 256])
或者使用
imshow(x.image, [])
用于自动极限检测。
注意:在Octave上,这只适用于支持的类型。由于您的图像不包含负值,您可以将图像转换为 uint16
,这将符合你的价值观。或者你也可以使用双倍,这是一个更通用的方法。
imshow(uint16(x.image), [])
imshow(double(x.image), [])
在你的例子中,如果你不介意256的像素值被饱和到255,你可以将图像转换为: uint8
:
imshow(uint8(x.image))