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