這是之前做過的一個關于實現(xiàn)Hybrid Image的小項目,有錯誤及不足的地方還請批評指正~
怎么理解圖像的高低頻?
圖像的低頻部分可以理解為“輪廓”,比如人臉的臉型。
圖像的高頻部分可以理解為“細節(jié)”,比如人臉的皺紋、斑點等。
因此,我們常說,對圖像做模糊處理后得到了圖像的低頻部分,對圖像做銳化處理會讓圖像的高頻信息更多。(看到這里,玩過攝影的朋友是不是想到了人像處理中常用的“高低頻磨皮”~)
為什么放大縮小圖片會看到不同的結果?
在了解了圖像高低頻的定義后,我們就不難理解為什么遠近看混合圖像會感覺效果不同。
當我們放大混合圖像時,可以清楚地看到高頻信息,于是人眼更傾向于識別這部分的信息。相反地,當我們縮小圖片時,高頻信息就不那么容易被觀察到了,這時候我們我們就更傾向于識別低頻的部分。
這里我做了一張哈利波特和伏地魔的混疊圖像??梢钥吹?,當圖像放大時我們看到的是哈利波特,而當圖片縮小時,我們會認為這張圖片是描述伏地魔的。

如何實現(xiàn)混合圖像的效果?
實現(xiàn)的總體思路很簡單——將只有低頻信息的圖片和只有高頻信息的圖像疊加在一起。具體步驟如下:
1. 取第一張圖片:
????a. 準備好低頻的濾波器(常用高斯模糊)
????b. 將圖像轉為矩陣,分層(如JPG圖像會分成RGB三層)處理。其中,第一二列表示圖像的橫縱坐標,第三列存儲不同的層的index(如JPG有0-2,PNG有0-3(其中第四層(3)存的是透明度));舉個栗子,[;, ;, 0] 指的是R層的數據點
????c. 每一個維度的圖片分別與高斯濾波器做卷積
2. 取第二張圖片:
????a. 準備好低頻的濾波器(常用高斯模糊)
????b. 將圖像轉為矩陣
????c. 每一個維度的圖片分別與高斯濾波器做卷積
????d. 用原圖矩陣減去卷機后的矩陣,得到高頻圖矩陣
3. 將兩個處理后的圖像矩陣相加,得到混合圖像
如何用代碼實現(xiàn)?
https://github.com/MinisculeDust/Hybrid-Image