【摘 要】 對于兩幅既有旋轉(zhuǎn)又有縮放變化的圖像,如何確定哪些點是興趣點呢?因為是不會隨著圖像變化而變化的點,所以就是要找到圖像中的一些穩(wěn)定點,比如角點、邊緣點、亮區(qū)域中的暗點以及暗區(qū)域中的亮點。而Surf算法對于這些點的檢測是基于最基本的Hessian近似矩陣。
【關(guān)鍵詞】電子技術(shù)論文發(fā)表, 圖像興趣點,積分圖像,Hessian矩陣
對一個數(shù)據(jù)較大的圖像集來說,將里面的圖像進(jìn)行一一篩選分類是一個耗時比較長的工作,并且相對于數(shù)據(jù)小的圖像集而言,這樣直接進(jìn)行分類的結(jié)果誤判率將明顯有所增加。為了較為快速并且精確的區(qū)分出所有的圖像,我們可以將圖像集進(jìn)行一個數(shù)據(jù)減小的前提工作,做法是優(yōu)先排除一些明顯合法的圖像,然后再從余下的圖像集中進(jìn)行色情圖像的識別。
1 合法圖片的識別
對一個數(shù)據(jù)較大的圖像集來說,將里面的圖像進(jìn)行一一篩選分類是一個耗時比較長的工作,并且相對于數(shù)據(jù)小的圖像集而言,這樣直接進(jìn)行分類的結(jié)果誤判率將明顯有所增加。為了較為快速并且精確的區(qū)分出所有的圖像,我們可以將圖像集進(jìn)行一個數(shù)據(jù)減小的前提工作,做法是優(yōu)先排除一些明顯合法的圖像,然后再從余下的圖像集中進(jìn)行色情圖像的識別。具體做法如下(如圖1):
(1)圖片加載和預(yù)處理,圖片預(yù)處理就是將圖片大小規(guī)范到統(tǒng)一的尺寸;
(2)人臉檢測,基于OpenCV中訓(xùn)練好的分類器進(jìn)行人臉?biāo)趫D片比例的計算;
(3)基于YCrCb的膚色檢測,計算去除人臉后的基于YCrCb膚色所在圖片的比例,如果滿足合法圖片的閾值則進(jìn)行基于紋理的膚色檢測,否則進(jìn)行非法圖片檢測;
(4)基于紋理的膚色檢測,滿足YCrCb膚色檢測為合法圖片后,進(jìn)行紋理的膚色檢測,計算去除人臉后的基于紋理膚色所在圖片的比例,如果滿足合法圖片的閾值則分類為合法,否則進(jìn)行非法圖片檢測。
2 色情圖片的識別
經(jīng)過圖像集的縮小工作后,接下來就是通過分類器對圖像進(jìn)行分類,以區(qū)分出色情圖片和合法圖片。色情圖像的分類識別步驟如下(見圖2)。
(1)提取圖片的Surf特征;(2)對提取的Surf特征進(jìn)行特征表示,即一個64維向量代表一個特征點;(3)基于BoVW詞典的KNN檢索,基于BoVW的正向和逆向詞典索引,對每個特征描述符通過KNN算法進(jìn)行檢索,計算待測圖片中逆向特征描述符的距離均值和逆向特征描述符的比例因子;(4)色情圖片的判別,同時滿足YCrCb膚色、逆向特征距離均值和逆向特征比例因子三個設(shè)定的閾值,即判別為色情圖片,否則為合法圖片。
3 算法實現(xiàn)
(1)訓(xùn)練基于BoVW模型的詞典,并對詞典進(jìn)行聚類,輸出詞典文件,偽代碼如下:
BEGIN
While( !readVocabulary(G_vocabularyFile,vocabulary))
{
定義參數(shù)bowTrainer,聚類維數(shù)為G_vocabSize
While( readdir(dir) != NULL )
{
檢測興趣點imageKeypoints
對興趣點提取描述子imageDescriptors
If( !Descriptors.empty() )
{
向bowTrainer中加入描述子
vocabulary = bowTrainer.cluster();
}
輸出vocabulary
}
}
END
其中,輸出詞典為vocabulary,dir為訓(xùn)練樣本圖像集所在路徑,bowTrainer類型為BOWKMeansTrainer,詞典文件通過G_ vocabularyFile設(shè)定,詞典訓(xùn)練的維數(shù)通過G_vocabSize設(shè)定。
(2)基于YCrCb的膚色檢測,將圖像分類存放在不同文件目錄下,偽代碼如下:
BEGIN
While( readdir(test_dir) != NULL)
{
通過膚色閾值及膚色像素所占比例判斷是否為色情圖像,返回class_no
if( class_no為1 )
將該圖像拷貝到NO目錄下
if( class_no為0 )
將該圖像拷貝到OK目錄下
}
END
其中,test_dir為待測圖像集所在路徑,class_no為圖像類別(0為合法,1為非法)。
(3)基于紋理的膚色檢測,將基于YCrCb膚色檢測后NO文件里的圖像集進(jìn)一步分類,偽代碼如下:
BEGIN
While( readdir(NO) != NULL)
{
通過閾值將圖像重構(gòu),通過膚色比例判斷是否為色情圖像,返回class_no
if( class_no為1 )
將該圖像拷貝到NO目錄下
if( class_no為0 )
將該圖像拷貝到OK目錄下
}
END
其中NO為基于YCrCb膚色檢測后的NO文件,class_no為圖像類別(0為合法,1為非法)。
(4)對圖像集進(jìn)行KNN分類,根據(jù)建立了正、反索引的詞典,對圖像集進(jìn)行分類存放,偽代碼如下:
BEGIN
讀取合法圖像詞典為OK_Mat
讀取非法圖像詞典為NO_Mat
建立索引Oindex(OK_Mat, KDTreeIndexParams)
建立索引Nindex(NO_Mat, KDTreeIndexParams)
Oindex.knnSearch得到距離vec_dists_o
Nindex.knnSearch得到距離vec_dists_n
if( vec_dists_o > vec_dists_n )
n_sum++
else
o_num++
if(n_sum > o_sum)
將圖像拷貝到OK目錄下
if(n_sum < o_sum)
將圖像拷貝到NO目錄下
END
其中,KDTreeIndexParams為OpenCV庫函數(shù)參數(shù),OK目下為測試圖像集中合法圖像,NO目錄下為測試圖像集中非法圖像。
4 結(jié)語
本文中我們采用的訓(xùn)練圖像數(shù)據(jù)共8083張,其中色情圖像4135張,合法圖像3948張,包含有不同大小、不同人種的各式圖像。測試用圖像數(shù)據(jù)共6000張,其中色情圖像3100張,合法圖像2900張。這里定義了如下三種參數(shù)來評價該系統(tǒng)的檢測效率:正檢率:檢測出的色情圖像占全部色情圖像比例;誤檢率:將合法圖像誤檢為色情圖像的數(shù)量占全部合法圖像比例;漏檢率:沒有檢測出的色情圖像占全部色情圖像比例。實驗結(jié)果如表1所示。
參考文獻(xiàn):
[1]Bay H, Tuytelaars T,Van Gool L. Surf: Speeded up robust features[M]//Computer Vision�CECCV 2006.Springer Berlin Heidelberg,2006:404-417.
[2]陶霖密,彭振云,徐光�v.人體的膚色特征[J].軟件學(xué)報,2001,12(7):1032-1041.
[3]王新成.高級圖像處理技術(shù)[M].北京:中國科學(xué)技術(shù)出版社,2001.
轉(zhuǎn)載請注明來自:http://www.jinnzone.com/dianzijishulw/50889.html