簡體   English   中英

opencv MeanShift:哪個是感興趣的區域?

[英]opencv MeanShift: which is the area interested?

關於opencv和c ++中的meanShift算法的一個非常基本的問題! 我不清楚在哪個區域進行搜索和相應的移動。 我的意思是:我實現了一個非常基本的示例,在該示例中,我為meanShift函數提供了以下3個參數:

1)反投影矩陣A,

2)開始搜索的初始區域B,cv :: Rect B(x,y,w,h);

3)TermCriteria對象C,
cv :: TermCriteria C(cv :: TermCriteria :: MAX_ITER,10,0.01);

然后,將這些參數傳遞給函數:cv :: meanShift(A,B,C);

現在,在矩形B從其初始位置B移至與搜索到的直方圖相對應的新位置的意義上,該算法可以正常工作。 盡管如此,新職位總是非常接近初始職位。 如果搜索到的對象不是非常接近起始位置B,則不執行任何移動。 我的意思是:好像只在初始位置附近執行搜索。 是否可以告訴算法在更廣的范圍內進行搜索? 我試圖在TermCriteria中使用一些參數,但似乎並沒有影響必須執行搜索的區域。 非常感謝! 瓦萊里奧

我認為您正確的是“我嘗試在TermCriteria中使用一些參數”。

假設您在圖像域中工作,請查看文檔,因為epsilon標准指的是移動的最小距離,因此將其設置為0.01像素。 嘗試將其更改為更大的數字,以表示您要移動的最小像素數量,例如,將其設置為1像素的“ 1”。 MAX_ITER條件在這里也將起作用,您將其設置為“ 10”,因此當前最大移位距離為10 * 0.01 = 0.1像素。 如果您想要更大的班次,請將其設置為更大的數字,即100。現在使用:

    cv::TermCriteria C(cv::TermCriteria::MAX_ITER | cv::TermCriteria::EPS, 100, 1.0);

最小位移為1像素,最大位移為100像素(編輯:實際上,這更像是最大值的下限,因為它可能在一次迭代中位移> 1像素)。

^^請注意,您也沒有將cv :: TermCriteria :: EPS完全添加到arg列表中。

如果仍然無法解決問題,那么您的數據可能存在噪聲問題,導致算法停止在錯誤的位置,因此可能需要進行一些預處理才能消除噪聲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM