python+matplotlib对图片的灰度化处理

彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255255255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。

  • 对图片的灰度化处理主要有下面三种方法,我们用一个简单的例子介绍下
    %matplotlib inline使用%matplotlib命令可以将matplotlib的图表直接嵌入到Notebook之中,或者使用指定的界面库显示图表,它有一个参数指定matplotlib图表的显示方式。inline表示将图表嵌入到Notebook中。
import matplotlib.pyplot as plt
%matplotlib inline
#使用%matplotlib命令可以将matplotlib的图表直接嵌入到Notebook之中,或者使用指定的界面库显示图表,它有一个参数指定matplotlib图表的显示方式。inline表示将图表嵌入到Notebook中。

先使用plt.imread读取图片

im_data = plt.imread(r'C:\Users\‘\Documents\Tencent Files\2569046373\Image\C2C\E481588D70689018F723ADBAC6D938EC.jpg')
im_data.shape

>>>(240, 240, 3)

把图片在展示出来一下,方便对照

plt.imshow(im_data)

    1. 使用最大值法
#(240,240,3) --->>> (240,240)
'''
1. 使用最大值法

'''
im_data[0,0]
im_data1 = im_data.max(axis=2)
im_data1.shape
plt.imshow(im_data1,cmap='gray')
  • 2.使用平均值
'''
2.使用平均值
'''
im_data2 = im_data.mean(axis=2)
im_data2.shape
plt.imshow(im_data2,cmap='gray')
  • 3.加权平均法
'''
3.加权平均法
'''
import numpy as np
im_data3 = np.dot(im_data,[0.299,0.587,0.114])    #[0.299,0.587,0.114]固定值
im_data3.shape
plt.imshow(im_data3,cmap='gray')

[0.299,0.587,0.114]是固定值,人眼对绿色的敏感度最高,对红色的敏感度次之,对蓝色的敏感度最低,因此使用不同的权重将得到比较合理的灰度图像。实验和理论推导得出 0.299、 0.587、 0.114。

推荐阅读更多精彩内容