目录
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 效果图
6 结论
最大值法得到的灰度图亮度很高。
平均值法得到的灰度图较柔和,暗处整体偏暗。
加权平均法得到的灰度图整体效果更好。