Matlab:为什么输入错误?

Matlab:为什么输入错误?,matlab,input,Matlab,Input,我有一个名为“binary3.tiff”的图像 有人问我: “在以下函数(称为func)中,图像以双精度矩阵形式给出。在这些图像中,1表示对象,0(黑色)表示背景。” 输入应该是什么? 我试过: 但它不起作用 请帮帮我。如果没有更多关于func的功能和错误性质的详细信息,我帮不了你多少忙,但你可以这样做: img2 = double(img > 0); 确保输入图像中的值是二进制的,并再次尝试。请注意,您当然可以不使用0而将其视为“背景”(background)。问题可能是因为imre

我有一个名为“binary3.tiff”的图像

有人问我: “在以下函数(称为func)中,图像以双精度矩阵形式给出。在这些图像中,1表示对象,0(黑色)表示背景。”

输入应该是什么? 我试过:

但它不起作用


请帮帮我。

如果没有更多关于
func
的功能和错误性质的详细信息,我帮不了你多少忙,但你可以这样做:

img2 = double(img > 0);

确保输入图像中的值是二进制的,并再次尝试。请注意,您当然可以不使用
0
而将其视为“背景”(background)。问题可能是因为imread假设tiff图像使用CMYK颜色空间而不是RGB颜色空间,从而使
img=imread('image.tiff')
成为第三维度大小为4的矩阵,因此,某些函数在
img
上不能正常工作,而不是3,例如,
image(img)
将抛出错误,这可能就是您将输入解释为不正确的原因

img=imread('image.tiff')
的格式是uint8,这意味着每个值都是一个介于0和255之间的整数,如果要将它们转换为介于0和1之间的双倍值,则正确的做法是执行
img2=double(img)/255
,因为用标量除以矩阵等于用该标量除以每个元素


最后,如果你确定你的图像在RGB颜色空间中,你可以通过执行
img=imread('image.tif')
然后
img=img(:,:,1:3)
来丢弃矩阵的第四颜色层,如果你这样做,并且图像确实在RGB中,那么像
image(img)
这样的命令可以正常工作。

什么是“不工作”的意思?更具体地说,您预期会发生什么以及会发生什么,而不是img的值是什么?
img2
的值是什么?
img2 = double(img > 0);