2023年12月7日發(作者:學生社團)

如何理解圖片RGB通道在python(numpy)中的數據構成
該文將盡可能簡短的描述基于numpy,在python中使用skimage的io或PIL或其他方法讀取圖片后GRB數據的結構與呈現方式。
我們肉眼看到的圖片無非兩種(灰色和彩色),而通過編程語言轉換為電腦能認識的模樣也就是數字了。這些數字決定了在電腦中它是彩色
還是灰色,對于彩色圖片決定的方式就是——顏色通道,而最常見的就是RGB三通道了,顧名思義RGB三色通道就是指由R、G、B三個通
道組成的。
這里需要說明的一點就是RGB三色道分別對應三個矩陣,而這三個矩陣都是數字向量構成的矩陣,并不代表顏色的意思(矩陣能代表顏色
嗎?),這里比較貼切可以理解為調色板,例如當該矩陣的某個位置的數值較大,則表示該處對應調色板使用的顏色就越”白/淺“,而越
小則對應調色板使用顏色越“黑/深”。8bit的圖像,對應的矩陣元素取值為0-255(也可以使用0-1表示),這里我們主要理解數據,對
于圖像的理解下面給出鏈接。
看一張圖片:
這是一張彩色圖片,現在通過skimage的io方法讀取該圖片后在numpy中呈現的數據格式如下:
通過shape得到圖形形狀(287,496,3),其中287表示列,496表示行,3表示分量(即三個通道分量),是不是有點蒙,下面正是本文
要講的重點,如何理解上面讀取出來的數據格式?
首先我們應該按 列 來看,可以看到有3列 (即190 48 64對應往下的3列),這便是RGB對應的 3 個通道,從頭到尾的一列數據構成了一
個通道分量,共三個:
然后再來理解287,從上圖中可以看到有很多的 [ 符號,其實按層次來分也就三層,這里的287表示共有287個中間層的矩陣:
最后再來看496,這個數字從哪來?上面的287個矩陣中每一個矩陣的每一列都有496個元素(數字),雖然這些數字是按照行來分塊,但
實際上列之間的元素才有關聯,每一列的元素組合成行,構成了該通道矩陣的一行數據:
下面來看看將上面的整體矩陣分解為三個通道后的模樣,做個對比是不是清楚很多了。
上面的三個通道為相同的矩陣大小,而后將三者按照通道順序排列重疊后構成了RGB彩色圖片,當然順序有可能不是RBG,例如opencv轉
換后為BGR。
以上為彩色圖片在numpy中解析后的理解介紹,下面是部分代碼:
1.
from skimage
import io
2.
3.
path_c =
r"G:"
4.
color = (path_c)
5.
print(color,)
6.
7.
# R
8.
print(color[:,:, 0],color[:,:, 0].shape)
9.
# G
10.
print(color[:,:, 1],color[:,:, 1].shape)
11.
# B
12.
print(color[:,:, 2],color[:,:, 2].shape)
13.
14.
fig,axes = ts( 1, 3,figsize=( 12, 7))
15.
axes[ 0].imshow(color[:,:, 0])
16.
axes[ 0].t_title( 'R')
17.
axes[ 1].imshow(color[:,:, 1])
18.
axes[ 1].t_title( 'G')
19.
axes[ 2].imshow(color[:,:, 2])
20.
axes[ 2].t_title( 'B')
21.
22.
()
該文僅為理解圖片的數據構成,跟多詳細的內容還請自行Google。
本文發布于:2023-12-07 17:44:10,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/1701942250114132.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:如何理解圖片RGB通道在python(numpy)中的數據構成.doc
本文 PDF 下載地址:如何理解圖片RGB通道在python(numpy)中的數據構成.pdf
| 留言與評論(共有 0 條評論) |