Algorithm for converting RGB image to Grayscale in detail
2 views (last 30 days)
Show older comments
Simple steps to convert RGB image to Grayscale
0 Comments
Answers (2)
Walter Roberson
on 25 Aug 2012
Note: the formula in that Wikipedia section is for the sRGB color space. rgb2gray() uses a different formula, based upon the assumption that the values are in a linear colorspace instead of in sRGB.
0 Comments
Image Analyst
on 25 Aug 2012
Edited: Image Analyst
on 25 Aug 2012
One way:
grayImage = rgb2gray(rgbImage);
Another way is to take one color channel:
grayImage = rgbImage(:, :, 2); % Take green channel.
Some useful formulas are here:
2 Comments
Rawan hamdi
on 23 Feb 2014
This is my code and i get an error which says Index exceeds matrix dimensions.
Error in ==> graysc at 14 gray(i,j) = 0.29 * rgb(:,:,1) + 0.59 * rgb(:,:,2) + 0.11 * rgb(:,:,3);
%%code
function [gray] = graysc(input)
rgb = double(imread(input));
[h,w,k] = size(rgb);
gray = zeros(h,w,k);
for i = 1 : h
for j =1 : w
% Assume you have an RGB image of class double, or create a random one
gray(i,j) = 0.29 * rgb(:,:,1) + 0.59 * rgb(:,:,2) + 0.11 * rgb(:,:,3);
end
end
imshow(gray);
end
Image Analyst
on 23 Feb 2014
What is the value of k? It should be 3. Then, don't use k when you allocate space for gray with zeros(). Just do
gray = zeros(h, w);
See Also
Categories
Find more on Import, Export, and Conversion in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!