rgb2gray中的错误:MAP必须是m x 3数组

时间:2017-05-24 23:18:43

标签: image matlab

我正在对与背景颜色相似的圆形物体进行图像分割。图像是RGB,但RGB值给出灰色调,即使图像看起来是灰色也不是灰度。在分割过程中,我必须应用渐变滤镜并通过重建打开和关闭,以便在制作我将用于分割的二进制遮罩之前将圆形对象与背景分离。我在此过程中使用的一些函数仅接受2D数组输入。事实上,图像本身的二值化只能在2D阵列输入中完成,而不能在3D图像的RGB图像中完成。因此,我正在尝试转换我的RGB图像,该图像在执行任何其他操作之前看起来是灰色但不是灰度。但是,当我使用rgb2gray函数时,我从MATLAB中得到以下错误:  使用rgb2gray> parse_inputs时出错(第77行) MAP必须是m x 3阵列。

rgb2gray出错(第52行) [X,threeD] = parse_inputs(X);

Mask_Biophysics中的错误(第2行) Frame = rgb2gray(rgb);

有谁知道这个错误意味着什么以及如何修复它? 这是给我错误的代码的一部分:

rgb = imread(' kids.tif'); 帧= rgb2gray(rgb);

注意我正在使用预先安装的matlab图像" kids.tif",因此,错误与我的特定图像无关。 kids.tif是matlab中的RGB彩色图像

1 个答案:

答案 0 :(得分:0)

tif文件(至少'kids.tif')是具有色彩图而非3D(RGB)矩阵的2D索引矩阵。 rgb2gray接受3D RGB矩阵或2D索引矩阵 其匹配的色彩映射。尝试:

[rgb,cmap]= imread('kids.tif');
Frame= rgb2gray(rgb,cmap);