camShift跟蹤演算法介紹

2021-07-10 16:02:42 字數 909 閱讀 8321

camshift演算法的全稱是

"continuously adaptive mean-shift",即:連續自適應的meanshift

運算,並將上一幀的結果(即搜尋視窗的中心位置和視窗大小)作為下一幀meanshift

演算法的搜尋視窗的初始值,如此迭代下去。簡單點說,meanshift是針對單張尋找最優迭代結果,而

camshift

meanshift

來尋找最優迭代結果。正是由於

camshift

在opencv

自帶的camshift

的例子當中,是通過計算目標在hsv空間下的

h分量直方圖,通過直方圖反向投影得到目標畫素的概率分布,然後通過呼叫opencv的camshift

演算法,自動跟蹤並調整目標視窗的中心位置與大小。該演算法對於簡單背景下的單目標跟蹤效果較好,但如果被跟蹤目標與背景顏色或周圍其它目標顏色比較接近,則跟蹤效果較差。另外,由於採用顏色特徵,所以它對被跟蹤目標的形狀變化有一定的抵抗能力。  

opencv自帶例子中的camshift演算法,可以分為三個部分:

一、計算色彩投影圖(反向投影):

(1)為了減少光照變化對目標跟蹤的影響,首先將影象從rgb顏色空間轉換到hsv顏色空間;

(2)對h分量進行直方圖統計,直方圖代表了不同h分量取值出現的概率,或者說可以據此查詢出h分量的大小為x時的概率或畫素個數,即,得到顏色概率查詢表;

(3)將影象中每個畫素的值用其顏色出現的概率進行替換,由此得到顏色概率分布圖;

以上三個步驟稱之為反向投影,需要提醒的是,顏色概率分布圖是乙個灰度影象;

二、meanshift尋優

前面提到過meanshift演算法(

)是一種非引數概率密度估計方法,它通過不斷迭代計算得到最優搜尋視窗的位置和大小。

三、camshift跟蹤演算法

CamShift跟蹤演算法

ifdef ch pragma package opencv endif define cv no backward compatibility ifndef eic include cv.h include highgui.h include stdio.h include ctype.h end...

Opencv學習(Camshift跟蹤演算法)

今天跑了下opencv中的camshiift例程。因為camshift演算法需要自己用手標註跟蹤的物件,所以稍微標註不好,跟蹤的結果就不好。而且例程中跟蹤的色彩資訊,所以如果影象中的陰暗資訊多了,效果更差。本人修改後的演算法如下 ifdef ch pragma package endif defin...

目標跟蹤方法 CamShift 演算法

一 概述 二 演算法流程 具體步驟如下 步驟二 根據獲得的顏色直方圖將原始輸入影象轉化成顏色概率分布影象,該過程稱為 反向投影 所謂直方圖反向投影,就是輸入影象在已知目標顏色直方圖的條件下的顏色概率密度分布圖,包含了目標在當前幀中的相干資訊。對於輸入影象中的每乙個畫素,查詢目標模型顏色直方圖,對於目...