1. 程式人生 > >OpenCV背景去除的幾種方法

OpenCV背景去除的幾種方法

1、膚色偵測法
   膚色提取是基於人機互動方面常見的方法。因為膚色是人體的一大特徵,它可以迅速從複雜的背景下分離出自己的特徵區域。一下介紹兩種常見的膚色提取:

1)HSV空間的膚色提取
 
    HSV色彩空間是一個圓錐形的模型,具體如右圖所示:
 色相(H)是色彩的基本屬性,就是平常說的顏色名稱,例如紅色、黃色等,
依照右圖的標準色輪上的位置,取360度得數值。(也有0~100%的方法確定) 飽和度(S)是色彩的純度,越高色彩越純,低則變灰。取值為0~100%。明度(V)也叫亮度,取值0~100。
     根據膚色在HSV三個分量上的值,就可以簡單的偵測出一張影象上膚色的部分。一下是膚色偵測函式的原始碼:

 (2)YCrCb空間的膚色提取
   YCrCb也是一種顏色空間,也可以說是YUV的顏色空間。Y是亮度的分量,而膚色偵測是對亮度比較敏感的,由攝像頭拍攝的RGB影象轉化為YCrCb空間的話可以去除亮度對膚色偵測的影響。下面給出基於YCrCb膚色偵測函式的原始碼:

2、基於混合高斯模型去除背景法

   高斯模型去除背景法也是背景去除的一種常用的方法,經常會用到視訊影象偵測中。這種方法對於動態的視訊影象特徵偵測比較適合,因為模型中是前景和背景分離開來的。分離前景和背景的基準是判斷畫素點變化率,會把變化慢的學習為背景,變化快的視為前景。

3、背景相減背景去除方法

   所謂的背景相減,是指把攝像頭捕捉的影象第一幀作為背景,以後的每一幀都減去背景幀,這樣減去之後剩下的就是多出來的特徵物體(要偵測的物體)的部分。但是相減的部分也會對特徵物體的灰階值產生影響,一般是設定相關閾值要進行判斷。以下是程式碼部分: