2013-04-02 73 views
2

我從http://docs.opencv.org/2.4.4-beta/doc/tutorials/introduction/desktop_java/java_dev_intro.htmldetectMultiScale中的參數scaleFactor如何影響人臉檢測?

CascadeClassifier faceDetector = new CascadeClassifier("/haarcascade_frontalface_default.xml"); 
    Mat image = Highgui.imread(originalFile.getAbsolutePath()); 
    MatOfRect faceDetections = new MatOfRect(); 
    double w = ((double)originalCrop.getWidth()); 
    double h = ((double)originalCrop.getHeight()); 
    faceDetector.detectMultiScale(image, faceDetections, 3, 1, 
        Objdetect.CASCADE_DO_CANNY_PRUNING , new Size(w/16, h/16), new Size(w/2, h/2)); 

嘗試的例子中的微小變化從API:比例因子 - 參數指定圖像大小多少在每個圖像規模縮小。

更改scaleFactor會更改檢測到的內容。例如,對於下面的圖像: http://graphics8.nytimes.com/images/2013/04/02/world/MOSCOW/MOSCOW-articleLarge-v2.jpg

3的比例因子 - 未檢測
比例因子2>戈氏面 - 被檢測到兩次>戈氏面(含有一個較小的一個一個較大的矩形)
比例因子1.01 --->戈爾巴喬夫的臉被檢測到一次

這個工作到底如何?

回答

1

opencv forum回答過:

基本上,比例因子用於創建規模的金字塔。更多 解釋可以發現here。簡而言之。您的模型在訓練期間定義了固定的 大小。這意味着如果發生這種情況,在圖像中檢測到的這個面部大小爲 。但是,通過重新縮放輸入圖像,您可以將較大的面朝向較小的面調整大小,從而使該算法可檢測到 。使用一小步調整大小,對於 示例1.05這意味着您將大小減小5%,您將增加 與檢測到的模型匹配大小的機會。