OpenCV學習筆記(5)——normalize函式
void normalize(InputArray src,OutputArraydst,double alpha=1,double beta=0,
intnorm_type=NORM_L2,int dtype=-1,InputArray mask=noArray());
函式功能:
該函式歸一化輸入陣列使它的範數或者數值範圍在一定的範圍內。引數說明:
src: 輸入陣列dst:輸出陣列,支援原地運算
alpha:range normalization模式的最小值
beta:range normalization模式的最大值,不用於norm normalization(範數歸一化)模式。
normType:歸一化的型別,可以有以下的取值:
NORM_MINMAX:陣列的數值被平移或縮放到一個指定的範圍,線性歸一化,一般較常用。
NORM_INF:此型別的定義沒有查到,根據opencv 1的對應項,可能是歸一化陣列的C-範數(絕對值的最大值)
NORM_L1 : 歸一化陣列的L1-範數(絕對值的和)
NORM_L2: 歸一化陣列的(歐幾里德)L2-範數
dtype:dtype為負數時,輸出陣列的type與輸入陣列的type相同;否則,輸出陣列與輸入陣列只是通道數相同,而tpye=CV_MAT_DEPTH(dtype).
mask:操作掩膜,用於指示函式是否僅僅對指定的元素進行操作。
歸一化公式:
1、norm_type=NORM_MINMAX,NORM_MINMAX對應線性函式轉換,表示式如下
if mask(i,j)!=0
dst(i,j) = (src(i,j) - min(src)) * (b' - a') / (max(src) - min(src)) + a'
else
dst(i,j) = src(i,j)
其中b' = MAX(alpha,beta ) , a' = MIN(alpha,beta );
2. 當norm_type!=NORM_MINMAX:(關於此處怎樣將輸入矩陣的範數歸一化到一定範圍我還不是很明白,希望明白的可以指點一下)
if mask(i,j) != 0
dst(i,j) = src(i,j) *alpha / norm (src,norm_type,mask)
else
dst(i,j) = src(i,j)
其中,函式norm的功能是計算norm(範數)的絕對值,
The functions norm calculate an absolute norm of src1 (when there is no src2 ):範數的計算如下:
歸一化定義與作用
歸一化就是要把需要處理的資料經過處理後(通過某種演算法)限制在你需要的一定範圍內。首先歸一化是為了後面資料處理的方便,其次是保證程式執行時收斂加快。歸一化的具體作用是歸納統一樣本的統計分佈性。歸一化在0-1之間是統計的概率分佈,歸一化在某個區間上是統計的座標分佈。歸一化有同一、統一和合一的意思。
歸一化的目的簡而言之,是使得沒有可比性的資料變得具有可比性,同時又保持相比較的兩個資料之間的相對關係,如大小關係;或是為了作圖,原來很難在一張圖上作出來,歸一化後就可以很方便的給出圖上的相對位置等。
在使用機器學習演算法的資料預處理階段,歸一化也是非常重要的一個步驟。例如在應用SVM之前,縮放是非常重要的。Sarle的神經網路FAQ的第二部分(1997)闡述了縮放的重要性,大多數注意事項也適用於SVM。縮放的最主要優點是能夠避免大數值區間的屬性過分支配了小數值區間的屬性。另一個優點能避免計算過程中數值複雜度。因為關鍵值通常依賴特徵向量的內積(inner products),例如,線性核和多項式核,屬性的大數值可能會導致數值問題。我們推薦將每個屬性線性縮放到區間[-1,+1]或者[0, 1]。
當然,我們必須使用同樣的方法縮放訓練資料和測試資料。例如,假設我們把訓練資料的第一個屬性從[-10,+10]縮放到[-1, +1],那麼如果測試資料的第一個屬性屬於區間[-11, +8],我們必須將測試資料轉變成[-1.1, +0.8]。
參考:“SVM:從理論到OpenCV實踐” 4.2 歸一化資料:http://blog.csdn.net/zhazhiqiang/article/details/20146243
來源:http://blog.csdn.net/solomon1558/article/details/44689611
相關文章
- OpenCV學習筆記(4)——mixChannels函式OpenCV筆記函式
- async函式學習筆記。函式筆記
- Go 函式 學習筆記Go函式筆記
- 分析函式(學習筆記)函式筆記
- 生成函式 學習筆記函式筆記
- opencv學習筆記(一)OpenCV筆記
- TS學習筆記(四):函式筆記函式
- JavaScript學習筆記 - 原生函式JavaScript筆記函式
- Golang學習筆記-1.6 函式Golang筆記函式
- Oracle學習筆記(6)——函式Oracle筆記函式
- LoadRunner函式學習筆記函式筆記
- MYSQL學習筆記14: 函式MySql筆記函式
- 語音學習筆記5------subplot函式的用法筆記函式
- 深度學習——loss函式的學習筆記深度學習函式筆記
- Hive學習筆記 5 Hive的資料查詢、函式Hive筆記函式
- python學習筆記(六)——函式Python筆記函式
- Flutter學習筆記(4)--Dart函式Flutter筆記Dart函式
- js純函式學習筆記(一)JS函式筆記
- C++學習筆記(二)——函式C++筆記函式
- c語言學習筆記===函式C語言筆記函式
- 【C#學習筆記】函式呼叫C#筆記函式
- oracle學習筆記8: 分析函式Oracle筆記函式
- 學習筆記-----一時間函式筆記函式
- MYSQL學習筆記7: 聚合函式MySql筆記函式
- 【opencv學習筆記】027之直方圖反向投影 - calcBackProject函式詳解OpenCV筆記直方圖Project函式
- PHP 第八週函式學習筆記PHP函式筆記
- 學習筆記:javascript中的Generator函式筆記JavaScript函式
- JavaScript學習筆記(七)—— 再說函式JavaScript筆記函式
- pandas之常用基本函式學習筆記函式筆記
- 【C#學習筆記】函式過載C#筆記函式
- Erlang學習筆記(四)模組與函式筆記函式
- c++學習筆記 -- 建構函式C++筆記函式
- MATLAB學習筆記—多型函式Matlab筆記多型函式
- MYSQL學習筆記15: 數值函式MySql筆記函式
- 工作學習筆記(三)to_char函式筆記函式
- OpenCV 名稱空間學習筆記OpenCV筆記
- Objective-C學習筆記---建構函式和解構函式Object筆記函式
- Python學習筆記_函式_匯入模組Python筆記函式