2017-05-24 43 views
0

我正在对与背景具有相似颜色的圆形对象进行图像分割。图像是RGB,但RGB值给出灰色的色调,即使图像看起来灰色,它也不是灰色的。在分割过程中,我必须应用渐变过滤器,并通过重构打开和关闭,以便在制作将用于分割的二进制蒙版之前将圆形对象与背景分开。我在这个过程中使用的一些功能只接受二维数组输入。事实上,图像本身的二值化只能在二维阵列输入中完成,而不能在三维阵列的RGB图像中完成。所以,我试图在做任何事情之前将我的RGB图像转换成灰色,但不是灰色。但是,当我使用rgb2gray函数时,我收到以下MATLAB错误: 使用rgb2gray> parse_inputs(第77行)时出错 MAP必须是m x 3数组。rgb2gray中的错误:MAP必须是m×3阵列

rgb2gray中的错误(第52行) [X,threeD] = parse_inputs(X);

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

有谁知道这个错误的含义和如何解决它? 这是给我的错误代码的一部分:

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

注意我正在使用预先安装的matlab图像“kids.tif”,所以,错误与我的特定图像无关。 kids.tif是一个RGB颜色图像在matlab

+0

您不显示如何调用'rgb2gray'或输入图像的类型/范围。显然MATLAB认为你的图像是一个色彩映射。 – beaker

+0

Frame1 = imread('kids.tif'); Frame = rgb2gray(Frame1); – user27407

+0

我上面发布的是我的实际代码。你提到的是我从错误中解释的东西。所以,我尝试了与预先安装的matlab图像相同的代码“kids.tif – user27407

回答

0

tif文件(至少'kids.tif')是二维索引矩阵彩色地图而不是3D(RGB)矩阵。 rgb2gray接受3D RGB矩阵或2D索引矩阵其匹配的颜色映射表。请尝试:

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