2009-11-22 142 views
10

我正试图在计算机视觉中实现一种算法,并且我想在一组图片上尝试一下。这些照片都是彩色的,但我不想处理这些。我想将它们转换为足够用于测试算法的灰度。如何在MATLAB中将彩色图像转换为灰度图像?

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

我与阅读它:

x = imread('bla.jpg'); 

有没有我可以添加到imread读它为灰度任何参数?在阅读后有什么办法将x更改为灰度

回答

24

使用rgb2gray去除色调和饱和度(即转换为灰度)。 Documentation

+2

@Donnie:我更新了最新文档的链接。 – gnovice 2009-11-22 19:25:55

+0

@Donnie:我借此更新了最新的文档。 – leMoisela 2013-04-09 18:53:34

+2

他们确实需要停止移动文档。 :) – Donnie 2013-04-21 02:12:53

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

>> k = rgb2gray(im); 未定义的函数'rgb2gray'用于输入'uint8'类型的参数。 – ntg 2013-12-11 19:08:23

1

您可以使用此代码:

im=imread('your image'); 
k=rgb2gray(im); 
imshow(k); 

使用MATLAB的

0

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

我知道答案很简单,但在这里不鼓励使用代码解答。请添加一点上下文,解释'rgb2gray'的作用,并可能链接到文档。 – horchler 2015-10-14 17:56:01

0

使用imread()rgb2gray()˚F获取灰度图像的联合。

例子:

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)