-2

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

这是我的形象

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

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

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

但它不起作用。

请帮我。

4

2 回答 2

2

如果没有有关您遇到的错误的作用和性质的更多详细信息func,我无法为您提供太多帮助,但您可以这样做:

img2 = double(img > 0);

确保输入图像中的值是二进制的,然后再试一次。请注意,0您当然可以将任何阈值数字置于其被视为“背景”的阈值以下,而不是您。

于 2012-05-18T14:53:58.803 回答
2

问题可能是由于 imread 假设 tiff 图像使用 CMYK 颜色空间而不是 RGB 颜色空间,因此制作img=imread('image.tiff')了一个矩阵,其第三维的大小为 4,而不是 3,因此,某些功能不起作用img例如,正确打开image(img)会引发错误,这可能就是您将输入解释为不正确的原因。

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

最后,如果您确定您的图像在 RGB 颜色空间中,您可以简单地丢弃矩阵的第 4 个颜色层,img=imread('image.tif')然后img=img(:,:,1:3)如果您这样做,并且图像确实是 RGB,则诸如此类的命令image(img)可以正常工作。

于 2012-05-18T14:59:06.313 回答