ⅠWhat

首先是baike给出的官方灰度化定义:

灰度化,在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。

简单理解的话,就是把彩色的图像转化为黑白(亮度)图像。

当灰度为255的时候,表示最亮(纯白);当灰度为0的时候,表示最暗(纯黑)。

灰度化有什么好处呢?

灰度化是图像处理的根基,下层基础决定上层建筑,因此学习灰度化是有关图像的一切研究之开端。

Ⅱ How

彩色图像转化为灰度图像共有三种常用的方法:
63a1f5c02c71751bf24c4f15eaea8492.png

第一种,直接取R, B, G三个分量中数值最大的分量的数值。(0视为最小,255视为最大)。

第二种,取R, B, G三个分量中数值的均值

第三种,根据人眼对于R, B, G三种颜色的敏感度,按照一定的权值进行加权平均得到。

可以发现人眼对绿色最为敏感,因此其系数最高。

matlab代码实现:

%%三种方法实现灰度化与调用MATLAB函数实现灰度化
clear all;
clc
Img = imread('mj.jpg');
[n m a] = size(Img);%判断图像的大小 a为三色 R, G, B

GrayImage= rgb2gray(Img);%调用MATLAB函数实现灰度化
Img_Gray = zeros(n, m);
for x = 1 : n  %通过双循环对图像进行灰度化处理
    for y = 1 : m
       Img_Gray_1(x, y) = max(Img(x, y, 1),max(Img(x, y, 2),Img(x, y, 3)));  %最大值法
       Img_Gray_2(x, y) = (uint16(Img(x, y, 1)) + uint16(Img(x, y, 2)) + uint16(Img(x, y, 3)))/3;%平均值法
       Img_Gray_3(x, y) = 0.3 * Img(x, y, 1) + 0.59 * Img(x, y, 2) + 0.11 * Img(x, y, 3);%加权平均法
    end
end
figure(1);
subplot(1, 3, 1);
imshow(Img);
title('原图');
subplot(1, 3, 2);
imshow(GrayImage);
title('调用系统函数实现灰度化');
subplot(1, 3, 3);
imshow(uint8(Img_Gray_3));
title('加权平均方法');
figure(2);
subplot(1, 3, 1);
imshow(Img_Gray_1);
title('最大值法');
subplot(1, 3, 2);
imshow(uint8(Img_Gray_2));
title('平均值法');
subplot(1, 3, 3);
imshow(uint8(Img_Gray_1));
title('加权平均法');

结果:

 

可以发现

1)最大值法转换的灰度图亮度很高。

2)平均值法产生的灰度图像比较柔和(暗淡, 暗处更暗)。

3)加权平均法得到的灰度图像效果最好(maybe..)。

Ⅲ Why 

图像进行灰度化处理后,可以进行进一步的特征提取操作。Phash(感知哈希算法)就是一个简单的例子,下一篇将给大家讲述一下Phash的实现原理和主要思想。

Logo

学大模型,用大模型上飞桨星河社区!每天8点V100G算力免费领!免费领取ERNIE 4.0 100w Token >>>

更多推荐