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