我们拍到的图片都是RGB图。通过红、绿、蓝三原色的三个颜色通道的变化与组合, 就得到了我们看到的各种各样的颜色。当三个通道的值都相同时,我们就得到了灰度图。
我们需要对图片进行灰度化的原因有两个,一是我们分辨数字靠的是辨别它的形状而不是 颜色,灰度化有利于我们减少神经网络输入的特征的数量;二是 RGB 图我们需要对其三个 通道都进行处理,而灰度图我们在对一个通道进行处理之后,其它通道的值也就一起得到 了,减少了后续图像处理的工作量。
灰度化的算法有很多,比如分量法、最大值法、平均值 法和加权平均值法等。
分量法就是选择 RGB 三个分量中的某一个分量的值作为该点的灰度值。
最大值法就是选择 RGB 三个分量中最大的一个分量的值作为该点的灰度值。
平均值法就是选择 RGB 三个分量的值的平均值作为该点的灰度值
加权平均值法就是选择 RGB 三个分量的值的加权平均值作为该点的灰度值。
最常用的是一种从人体生理学角度提出的一种方案:
\(Gray = Red*0.299 + Green*0.587 + Blue*0.114\)
然而我们都知道,浮点数的运算速度要远远小于整数的运算更小于移位运算。我们可以对以上公式进行改进,将原式变形为仅含整数运算与移位运算的式子:
\(Gray = (Red*38 + Green*75 +Blue*15) >> 7\)