RGB to Gray function with Matlab code

hi all , we all know the Matlab belt in rgb2gray ,
i am tring to do it myself ,, here's my function
function out=gray(x)
[p,q,n]=size(x);
%out=uint8(ones(m,n,p));
R=x(:,:,1);
G=x(:,:,2);
B=x(:,:,3);
out=((R+G+B)/3);
and i have this error whn calling gray()
??? Subscript indices must either be real positive integers or logicals.
i don't know what's wrong , if any one know the solution .. Thanx in advance ..

 采纳的回答

Fangjun Jiang
Fangjun Jiang 2011-11-1
gray() is a MATLAB function too. Do the following to see if there are conflicts.
which gray -all

3 个评论

i changed the function name and it goes well but i have this error instead when viewing the resulted image..
g= rgbtogray2(x);
imshow(g)
//Error
??? Index exceeds matrix dimensions.
Error in ==> gray at 6
G=x(:,:,2);
Error in ==> imageDisplayParseInputs at 207
common_args.Map = gray(256);
Error in ==> imshow at 173
[common_args,specific_args] = ...
thanx in advance
You mean you change the name of your own gray() function? Why did the error message still say "Error in ==> gray at 6, G=x(:,:,2);"?
yes ,, i deleted the old one and it worked very well ..
thanx very much

请先登录,再进行评论。

更多回答(1 个)

Chances are you are trying to call gray() from within a routine in which you have a variable named "gray".

类别

帮助中心File Exchange 中查找有关 Images 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by