OpenCV训练分类器
生活随笔
收集整理的這篇文章主要介紹了
OpenCV训练分类器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
OpenCV訓練分類器
一、簡介????目標檢測方法最初由Paul Viola [Viola01]提出,并由Rainer Lienhart [Lienhart02]對這一方法進行了改善。該方法的基本步驟為: 首先,利用樣本(大約幾百幅樣本圖片)的 harr 特征進行分類器訓練,得到一個級聯的boosted分類器。
????分類器中的"級聯"是指最終的分類器是由幾個簡單分類器級聯組成。在圖像檢測中,被檢窗口依次通過每一級分類器, 這樣在前面幾層的檢測中大部分的候選區域就被排除了,全部通過每一級分類器檢測的區域即為目標區域。
????分類器訓練完以后,就可以應用于輸入圖像中的感興趣區域(與訓練樣本相同的尺寸)的檢測。檢測到目標區域(汽車或人臉)分類器輸出為1,否則輸出為0。為 了檢測整副圖像,可以在圖像中移動搜索窗口,檢測每一個位置來確定可能的目標。 為了搜索不同大小的目標物體,分類器被設計為可以進行尺寸改變,這樣比改變待檢圖像的尺寸大小更為有效。所以,為了在圖像中檢測未知大小的目標物體,掃描 程序通常需要用不同比例大小的搜索窗口對圖片進行幾次掃描。
????目前支持這種分類器的boosting技術有四種: Discrete Adaboost, Real Adaboost, Gentle Adaboost and Logitboost。
"boosted" 即指級聯分類器的每一層都可以從中選取一個boosting算法(權重投票),并利用基礎分類器的自我訓練得到。
????根據上面的分析,目標檢測分為三個步驟:
??????1、 樣本的創建
??????2、 訓練分類器
??????3、 利用訓練好的分類器進行目標檢測。
二、樣本創建
????訓練樣本分為正例樣本和反例樣本,其中正例樣本是指待檢目標樣本(例如人臉或汽車等),反例樣本指其它任意圖片,所有的樣本圖片都被歸一化為同樣的尺寸大小(例如,20x20)。
????負樣本
???????負樣本可以來自于任意的圖片,但這些圖片不能包含目標特征。負樣本由背景描述文件來描述。背景描述文件是一個文本文件,每一行包含了一個負樣本圖片的文件名(基于描述文件的相對路徑)。該文件必須手工創建。
??????e.g: 負樣本描述文件的一個例子:
??????假定目錄結構如下:
??????/img
????????img1.jpg
????????img2.jpg
????????bg.txt
??????則背景描述文件bg.txt的內容為:
?????????img/img1.jpg
?????????img/img2.jpg
????正樣本
???????正樣本由程序craatesample程序來創建。該程序的源代碼由OpenCV給出,并且在bin目錄下包含了這個可執行的程序。
???????正樣本可以由單個的目標圖片或者一系列的事先標記好的圖片來創建。
???Createsamples程序的命令行參數:
?????命令行參數:
?????-vec <vec_file_name>
??????????訓練好的正樣本的輸出文件名。
?????-img<image_file_name>
??????????源目標圖片(例如:一個公司圖標)
?????-bg<background_file_name>
??????????背景描述文件。
?????-num<number_of_samples>
??????????要產生的正樣本的數量,和正樣本圖片數目相同。
?????-bgcolor<background_color>
??????????背景色(假定當前圖片為灰度圖)。背景色制定了透明色。對于壓縮圖片,顏色方差量由bgthresh參數來指定。則在bgcolor-bgthresh和bgcolor+bgthresh中間的像素被認為是透明的。
?????-bgthresh<background_color_threshold>
?????-inv
??????????如果指定,顏色會反色
?????-randinv
??????????如果指定,顏色會任意反色
?????-maxidev<max_intensity_deviation>
??????????背景色最大的偏離度。
?????-maxangel<max_x_rotation_angle>
?????-maxangle<max_y_rotation_angle>,
?????-maxzangle<max_x_rotation_angle>
總結
以上是生活随笔為你收集整理的OpenCV训练分类器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BinaryStar代码分析前言
- 下一篇: struts2.0和jQuery1.5的