我有一个名为“binary3.tiff”的图像。
我被问到:“在以下函数(称为 func)中,图像以双精度矩阵的形式给出。在这些图像中,1 代表对象,0(黑色)代表背景。”
输入应该是什么?我试过了:
img = imread('binary3.tiff');
img2 = double(img)/255;
newimg = func(img2);
但它不起作用。
请帮我。
如果没有有关您遇到的错误的作用和性质的更多详细信息func
,我无法为您提供太多帮助,但您可以这样做:
img2 = double(img > 0);
确保输入图像中的值是二进制的,然后再试一次。请注意,0
您当然可以将任何阈值数字置于其被视为“背景”的阈值以下,而不是您。
问题可能是由于 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)
可以正常工作。