1. 程式人生 > >影象混合(前景+背景)【例項4】

影象混合(前景+背景)【例項4】

我們可以將一些logo圖案加在其他的影象上,這和影象的按比重加法的不同之處在於按比重加法是整體的加法,要求比較多,而在本節內容中,則主要是提取一些特徵來實現加法,實用性更強,首先來對比一下這兩者的差別。

圖1 影象按比重混合(左)影象前景背景混合(右)

實現的過程(程式碼網上較多,本文就不附程式碼)

1. 獲取前景影象的特徵輪廓(logo部分)

將前景影象轉為灰度影象,然後進行二值化(確保logo與背景在灰度圖中畫素值差異明顯,提取的效果才會好)

img2gray=cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)#將影象轉為灰度圖
ret,mask=cv2.threshold(img2gray,242,255,cv2.THRESH_BINARY)#第二個引數為閾值,第三個引數為高於閾值取值結果,第四個是閾值方法

ret值存放的是閾值,mask存放二值圖,我們希望logo部分的值為0,這樣和背景圖做與運算時,logo部分就會保留(為0)

圖2 logo二值化後2. logo二值化後與背景圖做與運算

這樣做的結果就是在背景圖中,logo部分的畫素值均會為0

圖3 logo二值化後與背景圖上的ROI區域做與運算3. 對logo的二值化圖取反,將其與logo圖做與運算

結果就和上一步相反,logo圖中的特徵部分保留,其背景被消除

圖4 logo圖二值化取反後與logo原圖與運算4. 上兩步的結果相加

相加後,我們希望的結果就實現了!然後,將這一部分複製到我們原圖的對應部分(ROI區域)

圖5 相加後的結果

5. 對影象中的噪點進行濾波 

5.1對取得logo的邊緣後對其濾波(在最終相加前)

圖 6 對logo部分濾波(均值濾波,核矩陣大小為5*5)濾波後,影象邊緣噪點要少,但影象模糊化了,在貓的眼睛部分尤其明顯,採用小的核矩陣效果會好一些,但在邊緣處的處理有不如前者。5.2 對相加後的結果濾波圖7 相加後對影象濾波對比兩者(相加前和相加後濾波),可以發現後者在對邊緣的處理效果要好,噪點少,更加平滑。後續的可以結合其他的濾波方法,來對比效果,選擇最佳的濾波方法。

參考文獻:OpenCV官方文件(中文版) for python