照片是如何存儲在計算機中的?磨皮又是如何用卷積實現的?

磨皮是很多人喜聞樂見的功能,尤其女人。

那麼,手機,或者說計算機,

是如何通過計算實現磨皮的呢

我們首先來看,照片是如何存儲在計算機中的

圖像的存儲

我們所見的圖像,在電腦中實際上是一個數字陣列,即矩陣。

圖片有寬度(width)和高度(height),而矩陣有(row)和(column),正好一個蘿蔔一個坑地對應。

舉一個通俗的例子。

假設圖片分辨率為4×4,那麼,圖片“/”,可在電腦中表示為:

照片是如何存儲在計算機中的?磨皮又是如何用卷積實現的?

255在顯示器上將被顯示為純白,0為純黑。

介於0到255之間的,將被顯示為不同程度的“灰色”,因此,這圖被稱為“灰度圖”。

為什麼是0到255呢?

這是因為,我們使用一個字節,也就是8bit二進制(0000 0000到1111 1111)來存儲每個像素點,它可以表示256種不同的灰度。

當然,也有用10bits或12bits或16bits的場景,比如一些醫療成像器械。如果用16bits,可以表示65536種灰顏色,顏色分辨得更精準。

彩色圖像由RGB(紅、綠、藍)三色組成,原理一樣。

這樣一來,對圖像的操作,就可以轉換成對矩陣的操作,實際上,圖像處理軟件正是這麼做的。

有了圖像矩陣,如何進行磨皮的操作呢?

平均與模糊

磨皮,實際上就是將該模糊的區域模糊化,這樣就能消除皺紋、痘痘等等細節。

那麼,如何將圖片模糊?

在生活中,我們可能遇到過這種情況:

稱體重時,反覆稱三四次,再求個平均,以確保秤沒問題,是自己真變肥了。

為什麼平均呢?

因為,誤差會產生“干擾”,會使數據“波動”,“平均”可使數據更“平滑”。

“平滑”,就是圖像中的“模糊”

如果我們將圖像矩陣中的每一個點與其周圍進行“平均”,那麼照片就變平滑了。

比如,上面的4×4矩陣:

照片是如何存儲在計算機中的?磨皮又是如何用卷積實現的?

我們可以將藍色方框中的像素點與周圍的點進行平均:

藍色點 = (255×7 + 0 + 0) / 9 = 198

然後,我們“從左到右、從上到下”一格一格地移動紅色的窗口,將每一點都重新進行平均計算(邊緣補零),就會發現:

原本純黑的地方,向白色靠攏了;原本純白的地方,向黑色靠攏了。

黑白的界限不再“涇渭分明”,而變成“逐漸過渡”。

這個紅色方框所構成的3×3矩陣,就是一個“濾波器”,該矩陣的各個元素都是1,上面的算法就是矩陣的“卷積”。

照片是如何存儲在計算機中的?磨皮又是如何用卷積實現的?

如果我們對這張測試圖片進行類似的“平滑”操作:

照片是如何存儲在計算機中的?磨皮又是如何用卷積實現的?

測試圖片

則效果如下:

照片是如何存儲在計算機中的?磨皮又是如何用卷積實現的?

平滑處理後的圖片

這樣,圖片就被模糊了。

又比如,經典的lena圖:

照片是如何存儲在計算機中的?磨皮又是如何用卷積實現的?

原圖

平均一下?

照片是如何存儲在計算機中的?磨皮又是如何用卷積實現的?

模糊

非常顯然,尖銳的地方,比如帽子上的羽毛,被模糊(平滑)了。

如果我們僅對面部進行模糊,就是一種“磨皮”的效果。

當然,這裡僅採用了“平權平均”,為了追求更好的效果,實際程序員往往會使用“加權平均”。

至於如何選取合適的“加權係數”,這就是數字圖像處理中“卷積與濾波器”的內容,而且,圖像不僅能進行平均,還能進行傅里葉變換等其它操作,在此點到為止,不予展開。

科技的日新月異使我們突然意識到:

1.照片拍得太清晰,並不一定受歡迎,

2.磨皮不僅可以用砂紙,還能用矩陣。



分享到:


相關文章: