如何在MATLAB中将彩色图像转换为灰度图像?

10

我正在尝试实现计算机视觉中的一个算法,并希望在一组图片上进行测试。这些图片都是彩色的,但我不想处理它们的彩色信息,只需将其转换为灰度图像即可对算法进行测试。

如何将彩色图像转换为灰度图像?

我正在使用以下代码读取图片:

x = imread('bla.jpg');

我可以在imread中添加哪些参数来读取灰度图像?在读取后,有没有办法将x转换为灰度图像?

7个回答

25

使用rgb2gray将色相和饱和度剥离(即转换为灰度)。文档


2
他们真的需要停止移动文档。 :) - Donnie

8
x = imread('bla.jpg');
k = rgb2gray(x);
figure(1),imshow(k);

k = rgb2gray(im); 类型为 'uint8' 的输入参数,函数 'rgb2gray' 未定义。 - ntg

2

2
你可以使用以下代码:
im=imread('your image');
k=rgb2gray(im);
imshow(k);

使用Matlab


1
使用imread()rgb2gray()函数获取灰度图像。
示例:
I = imread('input.jpg');
J = rgb2gray(I);
figure, imshow(I), figure, imshow(J); 

如果您有一张彩色地图图片,则必须按照以下步骤进行操作:
[X,map] = imread('input.tif');
gm = rgb2gray(map);
imshow(X,gm);

您自己实现的 rgb2gray 算法如下:
f(R,G,B) = (0.2989 * R) + (0.5870 * G) + (0.1140 * B)

1

I=imread('yourimage.jpg');
p=rgb2gray(I)

我知道答案很简单,但这里不鼓励只有代码的回答。请加入一些上下文,解释rgb2gray的作用,并可能链接到文档。 - horchler

0

彩色图像

Color Image

灰度图像

Gray Scale image

  bg = imread('C:\Users\Ali Sahzil\Desktop\Media.png');  // Add your image 
  redChannel = bg(:, :, 1);
  greenChannel = bg(:, :, 2);
  blueChannel = bg(:, :, 3);
  grayImage = .299*double(redChannel) + .587*double(greenChannel) 
  +.114*double(blueChannel);
  imshow(grayImage);

这是比使用内置的 rgb2gray 更好的解决方案吗? - Nathan Fellman
是的,使用内置函数完全没有问题,但手动操作可以更好地理解灰度图像是如何生成的。 - Syed Ali Shahzil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接