隨著python的大火,人工智能領(lǐng)域也在蓬勃的發(fā)展(人工智能的大火也導(dǎo)致了python的發(fā)展)。在人工智能的發(fā)展中,圖像識別技術(shù)是里面發(fā)展得比較好的一部分技術(shù),很多互聯(lián)網(wǎng)大廠都在這一方面投入了很多精力并獲得了不菲的成果。今天我們就通過介紹計算機圖像存儲的方式,來介紹一下圖像識別的原理吧!
物理基礎(chǔ)
在初中物理中我們接觸到三基色(紅綠藍)。三種基色的光可以合成所有顏色的光(而如果三種基色的光都沒有,就沒有光,就呈現(xiàn)出黑色),這就是我們可以看到彩色圖片(顯示器上的,發(fā)光的)的基礎(chǔ)。
另外,物理學(xué)上還有三原色,是紅黃藍,三基色和三原色的區(qū)別是他們的原理,一種利用加色法(三基色)進行顏色合成,另一種利用減色法(三原色)進行顏色合成,通過減色法無法合成白色。三原色是我們可以看到的彩色圖片(紙質(zhì)照片,不發(fā)光,依靠反射光的)的基礎(chǔ)
物理學(xué)上喜歡將一件物體無限的往最小方向分解,直到分解不了為止,因此我們看到了原子。在圖像處理上,我們也將圖片進行了分解,分解到最后,只剩下一個點,這個點就叫像素點。而一張圖片,由很多很多的像素點組成,以目前常見的攝像頭像素(1200萬像素)為例,一張照片就有1200萬個像素點。
如上圖所示,每三個發(fā)光單元構(gòu)成一個像素點。
計算機基礎(chǔ)
有了物理基礎(chǔ),那么計算機只要通過數(shù)據(jù)控制每個像素點就可以了。我們上文提到過,每個像素點都有三種顏色構(gòu)成,每張圖片由很多很多的像素點組成,我們將像素點進行排列,就可以得到一個像素點矩陣(可以理解為一個二維數(shù)組或者一個方陣)。而每個像素點需要記錄這個顏色的信息,那就又回到了物理學(xué)的范疇了。三基色調(diào)整顏色是通過三種顏色的光的發(fā)光強度不同來實現(xiàn)光的混合的。那么我們在每個像素點中記錄每一個像素對應(yīng)的rgb光的強度值,就能實現(xiàn)混合得到的光的顏色。
通過上述原理,數(shù)碼圖像最重要的格式——rgb模式就介紹得差不多了。rgb模式的原理就是通過一個二維數(shù)組來記錄每個像素點的位置,每個像素點都有rgb三個屬性值用來記錄對應(yīng)的數(shù)值(實際上應(yīng)該是一個三維數(shù)組)。
在rgb模式中,每個屬性值用一八位的二進制數(shù)值(也就是一字節(jié),而一字節(jié)可以表示256種狀態(tài)),一個像素點有三個這樣的屬性值,也就是說他可以合成256*256*256(1677多萬)種顏色,也就是我們所說的真彩色。
rgb的出現(xiàn)是基于彩色顯示屏的,在沒有彩色顯示屏的時代,其實使用的圖片記錄方式也很相似。比如以下要介紹的幾種模式:
- 位圖模式:我們在rgb模式中介紹到,rgb每個像素點用三個八位的二進制數(shù)值進行表現(xiàn),而位圖只用一個一位的二進制數(shù)值表現(xiàn),所以位圖只有兩種顏色,也就是白色和黑色。
- 灰度模式:與rgb模式類似,但它采用的是一個八位的二進制數(shù)值進行表現(xiàn),這個數(shù)值只控制白色的強度(也就是灰度)。
CMYK模式:CMYK模式是用來打印或印刷的模式,它是相減的模式。當(dāng)C、M、Y三值達到最大值時,在理論上應(yīng)為黑色,但實際上因顏料的關(guān)系,呈顯的不是黑色,而是深褐色。為彌補這個問題,所以加進了黑色K。由于加了黑色,CMYK共有四個通道,正因為如此,對于同一個圖像文件來說,CMYK模式比RGB模式的信息量要大四分之一。但RGB模式的色域范圍比CMYK模式大。因為印刷顏料在印刷過程中不能重現(xiàn)RGB色彩。
什么是通道
在上面我們提到了,每一個像素點都有rgb三個值。圖像通道就是將單獨的一個顏色拿出來的部分數(shù)據(jù)。如下圖所示,一張圖片可以拆分成3個通道。
當(dāng)我們只選擇綠色通道時,圖片是這個樣子的:
可以看到,在前一張圖中的綠色,在只展示綠色通道的時候變成了白色(通過黑白的方式來展示這個值的強弱)。
關(guān)于圖像識別與圖像處理
講了這么多,那這又關(guān)圖像識別和圖像處理有什么關(guān)系呢?
首先你得知道圖像是什么,才能進行處理。既然圖像是一個一個的像素點,那么我們就一個一個點的去理解他。我們在最開始一直提到過一個東西,就是圖片是存儲在一個二維數(shù)組(三維數(shù)組)里的。這種存儲方式我們又喜歡管他叫——矩陣。圖像識別的基礎(chǔ)原理,就是通過矩陣的運算來判斷圖像是否有相似之處的。比如我有兩個矩陣,他們的內(nèi)容是一樣的,那么計算機通過計算就可以得到相同的結(jié)果(其實更深化的講,矩陣可以讓計算機判斷矩陣之中的相似區(qū)塊,這部分可讀者可以自行去了解卷積神經(jīng)網(wǎng)絡(luò)和特征值)。也就是說,圖像識別的原理,是建立在圖像矩陣上的。
關(guān)于圖像識別技術(shù)還想學(xué)習(xí)更多?到編程獅學(xué)習(xí)機器學(xué)習(xí)課程吧!
圖像處理就更簡單了,我們既然知道了圖像是怎么存儲的,我們只需要對圖像數(shù)據(jù)進行修改,就能對圖像進行處理。
與python的關(guān)系
說了這么多,但卻還沒提到python,是因為上述的內(nèi)容都是計算機原理,并不是python獨家專有的。那么為什么小編在這里要提到python呢?其實是由于python的特殊性,python是現(xiàn)有語言里面生態(tài)比較好的,不管是機器學(xué)習(xí)還是圖像處理庫,python都有一套合理簡單的解決方案,而且由于使用比較簡單,而且也不需要追求太高的效率,很多機器學(xué)習(xí)的算法工程師都偏愛使用python進行開發(fā)。這也就是為什么現(xiàn)在python可以乘上人工智能的浪尖的原因了。
既然python那么火,還不趕快來學(xué)習(xí)python?編程獅python視頻教程列表在此,點擊即可前往學(xué)習(xí)!
小結(jié)
以上就是關(guān)于圖像識別原理以及計算機圖像存儲的全部內(nèi)容。關(guān)注W3C技術(shù)頭條,查看往期精彩內(nèi)容!