計算機視覺之混合圖像(Hybrid)

這是之前做過的一個關於實現Hybrid Image的小項目,有錯誤及不足的地方還請批評指正~

怎麼理解圖像的高低頻?

圖像的低頻部分可以理解爲“輪廓”,比如人臉的臉型。

圖像的高頻部分可以理解爲“細節”,比如人臉的皺紋、斑點等。

因此,我們常說,對圖像做模糊處理後得到了圖像的低頻部分,對圖像做銳化處理會讓圖像的高頻信息更多。(看到這裏,玩過攝影的朋友是不是想到了人像處理中常用的“高低頻磨皮”~)

爲什麼放大縮小圖片會看到不同的結果?

在瞭解了圖像高低頻的定義後,我們就不難理解爲什麼遠近看混合圖像會感覺效果不同。

當我們放大混合圖像時,可以清楚地看到高頻信息,於是人眼更傾向於識別這部分的信息。相反地,當我們縮小圖片時,高頻信息就不那麼容易被觀察到了,這時候我們我們就更傾向於識別低頻的部分。

這裏我做了一張哈利波特和伏地魔的混疊圖像。可以看到,當圖像放大時我們看到的是哈利波特,而當圖片縮小時,我們會認爲這張圖片是描述伏地魔的。
在這裏插入圖片描述

如何實現混合圖像的效果?

實現的總體思路很簡單——將只有低頻信息的圖片和只有高頻信息的圖像疊加在一起。具體步驟如下:

  1. 取第一張圖片:
    a. 準備好低頻的濾波器(常用高斯模糊)
    b. 將圖像轉爲矩陣,分層(如JPG圖像會分成RGB三層)處理。其中,第一二列表示圖像的橫縱座標,第三列存儲不同的層的index(如JPG有0-2,PNG有0-3(其中第四層(3)存的是透明度));舉個栗子,[;, ;, 0] 指的是R層的數據點
    c. 每一個維度的圖片分別與高斯濾波器做卷積
  2. 取第二張圖片:
    a. 準備好低頻的濾波器(常用高斯模糊)
    b. 將圖像轉爲矩陣
    c. 每一個維度的圖片分別與高斯濾波器做卷積
    d. 用原圖矩陣減去卷機後的矩陣,得到高頻圖矩陣
  3. 將兩個處理後的圖像矩陣相加,得到混合圖像

如何用代碼實現?

https://github.com/MinisculeDust/Hybrid-Image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章