我已經回答瞭如何在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
您好!我能在Octave中做到這一點。輸出是一個值爲0到2的矩陣(取決於圖片的大小,在我的情況下是20到20)。但是當我試圖保存它「使用> imwrite(norm,」output.pgm「)」時,圖片全是黑色的。有什麼想法嗎?提前致謝! –
@KojiIkehara:預計全黑,範圍[0,2]相當小(數字很低),並且可見品種非常低。這種處理不會使圖像對人類「更好」,它使算法更好地分析它。 – amit
嗨!謝謝!我還有一個問題,你知道他們是否將這些「全黑圖片」作爲訓練的原始數據?或算法會照顧它? –