我正在使用大脑 MRI 数据集研究 Octave。
数据采用数百个 .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])
Run Code Online (Sandbox Code Playgroud)
或使用
imshow(x.image, [])
Run Code Online (Sandbox Code Playgroud)
用于自动极限检测。
注意:在 Octave 上,这仅适用于支持的类型。由于您的图像不包含负值,您可以将图像转换为uint16
,这将适合您的值。或者您可以使用 double 来获得更通用的方法:
imshow(uint16(x.image), [])
imshow(double(x.image), [])
Run Code Online (Sandbox Code Playgroud)
在您的情况下,如果您不介意值为 256 的像素饱和为 255,则可以将图像转换为uint8
:
imshow(uint8(x.image))
Run Code Online (Sandbox Code Playgroud)