1. 程式人生 > 其它 >python+matplotlib對圖片的灰度化處理

python+matplotlib對圖片的灰度化處理

https://www.jianshu.com/p/02064982f9f9

彩色影象中的每個畫素的顏色有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。



作者:_aLIEz
連結:https://www.jianshu.com/p/02064982f9f9
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。