前段時間學習了HOG描述子及其與SVM結合在行人檢測方面的應用。
當我們用訓練好的模型去檢測測試圖像時,我們會用到detectMultiScale() 這個函數來對圖像進行多尺度檢測。
這是opencv3.1里的參數解釋
可以看到一共有8個參數。
1.img(必需)
這個不用多解釋,顯然是要輸入的圖像。圖像可以是彩色也可以是灰度的。
2.foundLocations
存取檢測到的目標位置
3.hitThreshold (可選)
opencv documents的解釋是特征到SVM超平面的距離的閾值(Threshold for the distance between features and SVM classifying plane)
所以說這個參數可能是控制HOG特征與SVM最優超平面間的最大距離,當距離小於閾值時則判定為目標。
4.winStride(可選)
HoG檢測窗口移動時的步長(水平及豎直)。
winStride和scale都是比較重要的參數,需要合理的設置。一個合適參數能夠大大提升檢測精確度,同時也不會使檢測時間太長。
5.padding(可選)
在原圖外圍添加像素,作者在原文中提到,適當的pad可以提高檢測的准確率(可能pad后能檢測到邊角的目標?)
常見的pad size 有(8, 8), (16, 16), (24, 24), (32, 32).
6.scale(可選)
如圖是一個圖像金字塔,也就是圖像的多尺度表示。每層圖像都被縮小尺寸並用gaussian平滑。
scale參數可以具體控制金字塔的層數,參數越小,層數越多,檢測時間也長。 一下分別是1.01 1.5 1.03 時檢測到的目標。 通常scale在1.01-1.5這個區間
7.finalThreshold(可選)
這個參數不太清楚,有人說是為了優化最后的bounding box
8.useMeanShiftGrouping(可選)
bool 類型,決定是否應用meanshift 來消除重疊。
default為false,通常也設為false,另行應用non-maxima supperssion效果更好。