用戶:Asialiugf/數字圖像處理-通道
數字圖像的本質
編輯數字圖像的本質是一個多維矩陣.
以一張 480x270 的 RGB 色彩空間圖像為例, 編寫如下代碼
import PIL.Image
im = PIL.Image.open('/img/jp.jpg')
r, g, b = im.split()
r.show()
g.show()
b.show()
import scipy.misc
mat = scipy.misc.imread('/img/jp.jpg')
print(mat.shape)
# (270, 480, 3)
說明這個圖像有 270 行, 480 列, 以及在色彩上有 3 個分量.
進一步分解該圖片得到 R, G, B 三個通道分量:
import PIL.Image
im = PIL.Image.open('/img/jp.jpg')
r, g, b = im.split()
r.show()
g.show()
b.show()
得到如下三張圖片, 每個分量單獨拿出來都是一個 [270, 480, 1] 的矩陣
R 通道的灰度圖像:
G 通道的灰度圖像:
B 通道的灰度圖像:
如你所見, 它們並不是彩色的,而是一幅灰度圖像
交換通道
編輯如果我們交換一下分量放置的順序, 把 B 分量放進紅色通道里, 把 G 分量放進綠色通道里, R 分量放進藍色通道里, 可以得到如下一副圖像:
import PIL.Image
im = PIL.Image.open('/img/jp.jpg')
r, g, b = im.split()
im = PIL.Image.merge('RGB', (b, g, r))
im.show()
除了交換通道順序外, 甚至可以傳入自己定義的通道分量
import PIL.Image
im = PIL.Image.open('/img/jp.jpg')
_, g, b = im.split()
# 创建一个新的 r 通道分量, 注意 mode 值为 'L'
r = PIL.Image.new('L', im.size, color=255)
im = PIL.Image.merge('RGB', (r, g, b))
im.show()
啊, 我的眼睛
學習通道的現實意義
編輯作者在辦理社保卡的時候, 要求電子證件照為白色背景幕布, 但作者只有藍色背景幕布的電子照. 作為一個懶人, 既不想去重新拍照又不想下載photoshop, 所以就理所當然的對照片的藍色通道動起了手腳.