1

在他們的論文描述Viola-Jones object detection framework(可靠的實時人臉檢測由Viola和Jones),它是說:用於培訓如何使用八度對圖像進行標準化?

所有例如子窗口被方差標準化,以儘量減少不同的照明條件的影響。

我的問題是「如何實現八度圖像標準化?」

我不是在尋找具體的執行,中提琴&瓊斯使用,但一個類似的產生幾乎相同的輸出。我一直在關注了很多哈爾培訓教程(試圖檢測手),但尚未能夠輸出良好的檢測器(XML)。

我試圖聯繫作者,但仍然沒有反應。

回答

2

我已經回答瞭如何在this thread的一般準則。

下面是如何做方法1在八度(標準化爲標準正常偏差)(示範用於隨機矩陣A,當然可以應用到任何基質,這是圖像的表示方式):

>>A = rand(5,5) 
A = 

    0.078558 0.856690 0.077673 0.038482 0.125593 
    0.272183 0.091885 0.495691 0.313981 0.198931 
    0.287203 0.779104 0.301254 0.118286 0.252514 
    0.508187 0.893055 0.797877 0.668184 0.402121 
    0.319055 0.245784 0.324384 0.519099 0.352954 

>>s = std(A(:)) 
s = 0.25628 
>>u = mean(A(:)) 
u = 0.37275 
>>A_norn = (A - u)/s 
A_norn = 

    -1.147939 1.888350 -1.151395 -1.304320 -0.964411 
    -0.392411 -1.095939 0.479722 -0.229316 -0.678241 
    -0.333804 1.585607 -0.278976 -0.992922 -0.469159 
    0.528481 2.030247 1.658861 1.152795 0.114610 
    -0.209517 -0.495419 -0.188723 0.571062 -0.077241 

在上面的使用:

  • 獲得其矩陣的標準偏差:s = std(A(:))
  • 獲得其矩陣的平均值:u = mean(A(:))
  • 然後式A'[i][j] = (A[i][j] - u)/s與 矢量版本以下:A_norm = (A - u)/s

與矢量歸正火它也簡單:

>>abs = sqrt((A(:))' * (A(:))) 
abs = 2.2472 
>>A_norm = A/abs 
A_norm = 

    0.034959 0.381229 0.034565 0.017124 0.055889 
    0.121122 0.040889 0.220583 0.139722 0.088525 
    0.127806 0.346703 0.134059 0.052637 0.112369 
    0.226144 0.397411 0.355057 0.297343 0.178945 
    0.141980 0.109375 0.144351 0.231000 0.157065 

在abvove:

  • abs爲矢量(它的長度),這是與矢量乘法計算的絕對值(A(:)' * A(:)實際上是sum(A[i][j]^2)
  • 然後我們使用它來歸一化矢量所以這將是長度的1
+0

您好!我能在Octave中做到這一點。輸出是一個值爲0到2的矩陣(取決於圖片的大小,在我的情況下是20到20)。但是當我試圖保存它「使用> imwrite(norm,」output.pgm「)」時,圖片全是黑色的。有什麼想法嗎?提前致謝! –

+1

@KojiIkehara:預計全黑,範圍[0,2]相當小(數字很低),並且可見品種非常低。這種處理不會使圖像對人類「更好」,它使算法更好地分析它。 – amit

+0

嗨!謝謝!我還有一個問題,你知道他們是否將這些「全黑圖片」作爲訓練的原始數據?或算法會照顧它? –

相關問題