数字图像处理(入门篇)三 灰度化

目录

1 灰度化

2 灰度化的意义?

3 灰度化方法

(1)最大值法

(2)平均值法

(3)加权平均值法

5 效果图

6 结论

1 灰度化

灰度化:将多通道的彩色图像转换为单通道的灰度图像的过程。

灰度范围为0-255。0为纯黑,255为纯白。

2 灰度化的意义?

在不关心颜色的处理场景中,图像灰度化有什么意义呢?

(1)与彩色图像相比,灰度图占内存小,运算速度快。

(2)灰度化后,可在视觉上增加对比,突出目标区域。

3 灰度化方法

常见的灰度化方法有3种,如下:

(1)最大值法

取R、G、B三个分量中数值最大的值。公式:

  

(2)平均值法

取R、G、B三个分量数值的平均值。公式:

 

(3)加权平均值法

按照一定的权值对R、G、B三个分量加权求均值。公式:

 

说明: 鉴于人眼对绿色敏感,因此G对应的系数较大。

4 代码

灰度化的操作可以调用图像处理库的API来完成。代码如下:

import numpy as np
import matplotlib.pyplot as plt
def run(img_path):
    img = plt.imread(img_path)
    print("原图: ", img.shape)
    max_img = img.max(axis=2)
    mean_img = img.mean(axis=2)
    weighted_mean_img = np.dot(img, [0.299, 0.587, 0.114])
    titles = ["img", "max_img", u'mean_img', u'weighted_mean_img']
    images = [img, max_img, mean_img, weighted_mean_img]
    for i in range(4):
        plt.subplot(2, 2, i + 1), plt.imshow(images[i], 'gray')
        plt.title(titles[i])
        plt.xticks([]), plt.yticks([])
    plt.show()
if __name__ == '__main__':
    run("test.jpg")
    pass

5 效果图

数字图像处理(入门篇)三 灰度化_第1张图片

 

6 结论

最大值法得到的灰度图亮度很高。

平均值法得到的灰度图较柔和,暗处整体偏暗。

加权平均法得到的灰度图整体效果更好。

你可能感兴趣的:(数字图像处理,图像处理)