OpenCV中矩陣的歸一化

2021-09-06 06:33:30 字數 637 閱讀 7209

影象處理中,畫素點單通道值一般是[0-255]的unsigned char型別,將其轉化到[0,1]之間,更方便計算,這就需要用到矩陣的歸一化運算。

今天,寫程式中需要對某矩陣歸一化,用opencv的cv::normalize函式,遇到很嚴重的問題,最後發現,normalize的原矩陣必須是單通道(src.channel==1),函式執行完,結果矩陣的大小和型別與原矩陣相同。無論之前是否初始化結果矩陣,最後的結果都與原矩陣型別相同。

函式原型:

當用於歸一化時,normtype應該為cv::norm_minmax,alpha為歸一化後的最大值,beta為歸一化後的最小值。參看下面的例子:

cv::mat mat1=mat(2,2,cv_32fc1);

mat1.at(0,0) = 1.0f;

mat1.at(0,1) = 2.0f;

mat1.at(1,0) = 3.0f;

mat1.at(1,1) = 4.0f;

// 對於這種小矩陣,還有更簡單的賦值方式,找時間再改

cout<

顯示的結果如下圖所示:

矩陣歸一化

歸一化化定義 我是這樣認為的,歸一化化就是要把你需要處理的資料經過處理後 通過某種演算法 限制在你需要的一定範圍內。首先歸一化是為了後面資料處理的方便,其次是保正程式執行時收斂加快。在matlab裡面,用於歸一化的方法共有三中,1 premnmx postmnmx tramnmx 2 prestd ...

關於矩陣的歸一化

最近在看yang大牛稀疏表示 的 發現裡面很多的操作的用到了矩陣的列歸一化,這裡談一談列歸一化的實現,以及其帶來的好處。矩陣的列歸一化,就是將矩陣每一列的值,除以每一列所有元素平方和的絕對值,這樣做的結果就是,矩陣每一列元素的平方和為1了。舉個例子,矩陣 1,2,3 將其歸一化的結果就是 0.267...

關於矩陣的歸一化

最近在看yang大牛稀疏表示 的 發現裡面很多的操作的用到了矩陣的列歸一化,這裡談一談列歸一化的實現,以及其帶來的好處。矩陣的列歸一化,就是將矩陣每一列的值,除以每一列所有元素平方和的絕對值,這樣做的結果就是,矩陣每一列元素的平方和為1了。舉個例子,矩陣 1,2,3 將其歸一化的結果就是 0.267...