Matlab:为什么输入错了?

时间:2012-05-18 12:43:29

标签: matlab input

我有一个名为'binary3.tiff'的图片。

This is my image

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

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

img = imread('binary3.tiff');
img2 = double(img)/255;
newimg = func(img2);

但它不起作用。

请帮帮我。

2 个答案:

答案 0 :(得分:2)

如果没有关于func所做的更多细节以及您所遇到的错误的性质,我无法帮助您,但您可以这样做:

img2 = double(img > 0);

确保输入图像中的值是二进制的,并给它另一个去。请注意,您可以将0代替{{1}},而不是将任何阈值数量设置为低于它的“背景”。

答案 1 :(得分:2)

问题可能是因为imread假设tiff图像使用CMYK颜色空间而不是RGB颜色空间,从而使img=imread('image.tiff')一个矩阵的thrid尺寸大小为4而不是3,由于这样,某些函数在img上无法正常工作,例如,image(img)会抛出错误,这可能就是您将输入解释为错误的原因。

img=imread('image.tiff')的格式是uint8,这意味着每个值都是0到255之间的整数,如果要将它们转换为0到1之间的双精度,那么将img2=double(img)/255作为分割是正确的标量矩阵与用标量划分每个元素相同。

最后,如果您确定您的图像位于RGB颜色空间中,您只需执行img=imread('image.tif')然后img=img(:,:,1:3)即可丢弃矩阵的第4个颜色图层,然后执行此操作确实在RGB中,诸如image(img)之类的命令可以正常工作。