本篇隸屬于文集:《零基礎(chǔ)入門音視頻開發(fā)》,查看文集全部文章,請點擊文字鏈接。
想看最新文章,可以直接關(guān)注微信公眾號:金架構(gòu)
這篇文章會按照下面這個路線圖進(jìn)行介紹,閱讀本文需要三分鐘,詳細(xì)閱讀本文需要半小時。

流程圖最后一項,伽馬矯正、JPEG壓縮編碼和文件格式,只做粗略的理論介紹。因為伽馬矯正和壓縮編碼,需要在實際應(yīng)用,并且結(jié)合其他知識來理解,所以在后面會單開幾篇。
1、顏色是啥和我們?yōu)槭裁茨芸吹剿?/h5>
顏色是啥,它其實是我們的視覺系統(tǒng),對可見光的一種感知。如果我們是瞎子,那人類肯定不會發(fā)現(xiàn)還有顏色這種神奇的東西。光透過我們的眼睛,傳入我們的大腦,就像照相機咔嚓一聲,將一幅圖片記錄到內(nèi)存卡。
早在之前,人類就發(fā)現(xiàn)光是一種電磁波,而人類并不能看見所有的電磁波,因此把能看見的電磁波,定為可見光。它的波長在380和780nm之間,
我們在自然界看到的大多數(shù)光,都不是一種波長的光,它是由許許多多,不同波長的光組合而成,因此我們才能看到這么多顏色。
就像我們看到的太陽光,它也是由多種不同顏色的光組合而成。我們小時候都玩過鏡子,用一面鏡子,來折射太陽光線到水里,光線再通過水折射到墻上,就出現(xiàn)了彩虹。而牛頓,很早的時候就用棱鏡演示了這個事實:白光包含所有可見光譜的波長。

在人的視網(wǎng)膜中,有三種對紅綠藍(lán)敏感程度不同的椎體細(xì)胞,視網(wǎng)膜通過神經(jīng)元感知外部世界的顏色,而每個神經(jīng)元,是一個對顏色敏感的椎體。紅綠藍(lán)三種椎體細(xì)胞,對不同頻率的光的感知不同,對不同亮度的感知程度也不同。所以后來人們在數(shù)字化圖像的時候,面對巨大的數(shù)據(jù)量,就可以使用壓縮編碼技術(shù),來降低圖像的數(shù)據(jù)量,而使人眼感覺不到圖像質(zhì)量的下降。
2、圖像的顏色模型
2.1 RGB相加混色模型
一個能發(fā)出光波的物體稱為有源物體,它的顏色,由該物體發(fā)出的光波決定。就像彩色CRT一樣,三個電子槍分別產(chǎn)生R、G、B三種波長的光,并以各種不同的相對強度組合產(chǎn)生不同的顏色。
因為R、G、B顏色模型是用三種光疊加,來產(chǎn)生特定的顏色,所以這種方法又稱為RGB相加混色模型。
在自然界中,任何一種顏色,都可以用R、G、B這三種顏色值之和來確定,在數(shù)學(xué)書,它們構(gòu)成一個三維的RGB矢量空間。所以只要R、G、B的數(shù)值不同,混合得到的顏色就不同,也就是光波的波長不同。
顏色 = R(紅的百分比)+ G(綠的百分比)+ B(藍(lán)的百分比)

2.2 彩色圖像
在柵格圖像下,一幅彩色圖像,可以看成由許多點組成。每個點稱為一個像素,每個像素都有一個值,它表示特定顏色的強度。一個像素值通常由R、G、B三個分量表示。如果每個像素的每個顏色分量用“1”和“0”表示,即每種顏色的強度是100%或0%,那么每個像素所呈現(xiàn)的顏色,就會是8種(2的三次方)顏色之一。

2.3 CMY相減混色模型
一個不發(fā)光波的物體,稱為無源物體,它的顏色,由物體吸收或者反射那些光波決定。就像我們看見樹葉是綠色的,是因為陽光照在樹葉上,其他的可見光被吸收,綠光被反射,所以我們才看得見。如果半夜去,能看見我服你!
當(dāng)我們畫水彩的時候,我們將顏料進(jìn)行混合,繪制的圖畫,也是一種無源物體。
使用C(青色cyan)、M(品紅magenta)、Y(黃色yellow)按一定比例混合得到顏色的方法,稱為CMY模型,也稱CMY相減混色模型(為什么下面講)。
同樣,任何一種顏色使用C、M、Y也可以混合得到。

2.3.1 為什么叫做CMY相減混色模型
CMY相減混色模型這樣命名的原因,是因為這種混色模型,使用從白光中,減去對應(yīng)數(shù)值的C(青色cyan)、M(品紅magenta)、Y(黃色yellow)三種顏色而產(chǎn)生顏色。
如果這句話不能使你充分理解,那么可以結(jié)合RGB相加混色模型一起理解。如下圖:

如圖所示,R(紅)、G(綠)、B(藍(lán))的兩兩交集產(chǎn)生C(青)、M(品紅)、Y(黃),而RGB三者的交集產(chǎn)生白色。
列成等式就是這樣:
(1)白 = 紅 + 藍(lán) + 綠;
(2)黃 = 紅 + 綠;
(3)青 = 藍(lán) + 綠;
(4)品紅 = 紅 + 藍(lán);
如果我們現(xiàn)在使用CMY相減混色模型來產(chǎn)生顏色,那么它產(chǎn)生顏色的過程如下:
假如“黃”的數(shù)值已知,那么可以用白色(基準(zhǔn)值)減去黃色得到藍(lán)色,同理可得紅色和綠色的值。而我們都知道,RGB可以組成幾乎所有的顏色,因此顏色產(chǎn)生。
如果說到這還想不明白,請用(1)式分別減(2)、(3)、(4)式。
所以總結(jié)起來,相減混色和相加混色其實互為互補色,RGB中顏色值為1的地方,在CMY對應(yīng)的位置上,其顏色值為0。它們的關(guān)系如下所示:

利用這種關(guān)系,RGB可以轉(zhuǎn)化成CMY,因為RGB常用在顯示器、計算機圖像等顯示設(shè)備上,而CMY常用在打印機、印刷上,所以可以把顯示的顏色,轉(zhuǎn)換成打印的顏色。
3 圖像的三個基本屬性
3.1 圖像分辨率
前面我們介紹過顯示器分辨率,它表示顯示器能夠顯示畫面的細(xì)膩度。而圖像分辨率,是圖像精細(xì)程度的度量方法。對同樣尺寸的一幅圖像,如果像素數(shù)目越多,則說明圖像的分辨率越高,看上去越逼真。相反,圖像看起來越粗糙。
圖像分辨率也稱空間分辨率,或者像素分辨率。
在實際應(yīng)用中,我們通常這樣表示圖像分辨率:
1、物理尺寸:通過每毫米的線數(shù)或行數(shù)來標(biāo)識,比如一幅640x480的圖像,物理尺寸為10mm x 10mm,那么它每毫米有48行
2、行列像素:像素/行 x 行/幅,如640像素/行 x 480行/幅
3、像素總數(shù):如手機或者數(shù)碼相機上標(biāo)的,1200萬像素
4、單位長度上的像素:如像素每英寸(pixels per inch, PPI)
5、線對數(shù):以黑白相鄰的兩條線為一對
在這五種表示法中,如果是顯示在手機或者計算機顯示器上,第五種和第一種很少用到。比如線對數(shù),在顯示器中,圖像被單行掃描,所以線對數(shù)用到較少,有興趣的可以自行百度。
3.1.1 圖像分辨率和屏幕分辨率
有的人可能咋然看到這兩個詞,有點分不清。其實道理很簡單,屏幕相當(dāng)于畫布,圖像如果大于畫布,就畫不下,只能畫出整幅圖像的一部分。比如,如果屏幕分辨率為640x480,那么一副320x240的圖像,就只占顯示屏的1/4。相反,2400x3000像素的圖像就不能顯示完整畫面。
有的人可能又會說,不對呀,我在電腦上或手機上打開任何一幅圖,都能看到完整的畫面呀。是這樣,我們在電腦上打開或者手機上打開圖片的時候,都會默認(rèn)使用看圖軟件打開,在打開的時候,看圖軟件已經(jīng)對原圖做了處理。
比如一幅分辨率大于屏幕分辨率的圖像,軟件會刪除圖像的一些像素,來顯示完整。如果你對圖片進(jìn)行放大,那么程序會根據(jù)算法,再添加一些像素進(jìn)去。這樣一來,一幅高分辨率的圖像,被放大之后,被程序加入的像素就比低分辨率的要少,所以它依然很清晰,而低分辨率的此時可能已經(jīng)看不清了。
有人可能還會說,不對呀,我在電腦上放大一幅圖片的時候,放大到最后,圖像的每個像素我都能看得見,程序加的像素在哪兒呢?在這里我也放大一幅圖片放在這,請看下圖:

問這個問題的,首先是沒搞清楚圖像分辨率和屏幕分辨率是怎么一回事。我現(xiàn)在使用的屏幕分辨率是1280x800,圖像被放大到每個像素都能看見,然而,像素點有這么大嘛?顯示器上每行有1280個像素點,圖像被放大后,顯示器上依然有1280個點,而圖像的總像素也沒有變,那程序加的像素在哪兒呢?
就在放大后的每個像素格子上!可以這樣理解,放大前圖像的一個像素用顯示器的一個像素顯示,放大之后,圖像的一個像素格子用顯示器的20個像素顯示。那每個格子多余的19個像素從哪兒來?