我有一个名为'binary3.tiff'的图片。
我被问到: “在下面的函数(称为func)中,图像以双精度矩阵的形式给出。在这些图像中,1表示对象,0(黑色)表示背景。”
输入应该是什么? 我试过了:
img = imread('binary3.tiff');
img2 = double(img)/255;
newimg = func(img2);
但它不起作用。
请帮帮我。
答案 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)
之类的命令可以正常工作。