Matlab中计算图像的灰度值

本文详细介绍了如何在Matlab中将RGB图像转换为灰度图像,探讨了灰度值的不同计算方法,包括加权平均、算数平均、几何平均、调和平均、最小值、最大值、最大最小值均值和中值,并提供了相应的代码实现。通过比较,发现rgb2gray函数在保留色彩信息方面表现优秀。
摘要由CSDN通过智能技术生成

在生活中,我们经常遇见RGB(红色、绿色和蓝色)组成的色彩空间内的图像,然而我们想要进一步对其进行处理时,往往需要先将其转换为灰度图像,那么什么是灰度图像呢?

一、灰度图像

灰度数字图像是每个像素只有一个采样颜色的图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑白两种颜色,灰度图像在黑色与白色之间还有许多级的颜色深度。

因此,可以这样理解灰度图像,灰度图像即为一张单通道颜色组成的图像,每个像素可以拥有不同的颜色深度。

二、灰度值的计算

根据不同的计算方法,我们就可以得到不同的灰度值大小,如下所示。

1、加权平均值

由于人眼对绿色较为敏感,所以我们往往在计算灰度值时赋予绿色通道较大的权重,例如,matlab中内嵌的rgb2gray函数就是采用了如下公式进行计算:

0.2989 * R + 0.5870 * G + 0.1140 * B

2、算数平均

算数平均采用如下公式:

(1/3)*(R+G+B)

3、几何平均

几何平均采用如下公式:

(R*G*B)^(1/3)

4、调和平均

调和平均采用如下公式:

3/(1/R+1/G+1/B)

5、最小值

公式如下:

min(R,G,B)

6、最大值

公式如下:

max(R,G,B)

7、最大最小值均值

公式如下:

(min(R,G,B)+max(R,G,B))/2

8、中值

公式如下:

median(R,G,B)

三、代码实现

上述各种灰度值计算的代码如下所示:

% Matlab

% Read Image
A = imread('ngc6543a.jpg');

% rgb2gray (weighted mean)
A_rg = rgb2gray(A);
subplot(2,4,1)
image(A_rg)
title('weighted mean')

% Arithmetic mean
A_am = mean(A,3);
subplot(2,4,2)
image(A_am)
title('arithmetic mean')

% Geometric mean
A_gm = prod(A,3).^(1/3);
subplot(2,4,3)
image(A_gm)
title('geometric mean')

% Harmonic mean
A_hm = 3./sum(1/A,3);
subplot(2,4,4)
image(A_hm)
title('harmonic mean')

% min
A_min = min(A,[],3);
subplot(2,4,5)
image(A_min)
title('min')

% max
A_max = max(A,[],3);
subplot(2,4,6)
image(A_max)
title('max')

% (min+max)/2
A_maxmin = (max(A,[],3)+min(A,[],3))/2;
subplot(2,4,7)
image(A_maxmin)
title('(min+max)/2')

% median
A_median = median(A,3);
subplot(2,4,8)
image(A_median)
title('median')

% Histogram
figure
subplot(2,4,1)
histogram(A_rg,256)
title('weighted mean')

subplot(2,4,2)
histogram(A_am,256)
title('arithmetic mean')

subplot(2,4,3)
histogram(A_gm,256)
title('geometric mean')

subplot(2,4,4)
histogram(A_hm,256)
title('harmonic mean')

subplot(2,4,5)
histogram(A_min,256)
title('min')

subplot(2,4,6)
histogram(A_max,256)
title('max')

subplot(2,4,7)
histogram(A_maxmin,256)
title('(min+max)/2')

subplot(2,4,8)
histogram(A_median,256)
title('median')

效果如下:

 从图中可以发现,使用rgb2gray函数的效果较佳,其余几种计算方法都不能较好的区分色彩信息。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你可真搞笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值