跳至內容

使用者: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, 所以就理所當然的對照片的藍色通道動起了手腳.