OPENCV函式介紹 normalize()

2021-09-22 12:44:36 字數 2818 閱讀 8577

opencv版本:3.4.2

vs版本:2017

函式原型:

void cv::normalize(inputarry src,inputoutputarray dst,double alpha=1,double beta=0,int norm_type=norm_l2,int dtype=-1,inputarray mark=noarry())
函式作用:

歸一化資料。該函式分為範圍歸一化與資料值歸一化。(normalizes the norm or value range of an array.)其實範圍歸一化和數值歸一化可以歸為一類,一般來說數值歸一化是指將數值歸一到[0,1]區間上,而範圍歸一化則指將數值歸一到[a,b]上,a,b為任意值。由此看出,數值歸一化是範圍歸一化的特例,包含在範圍歸一化中。

引數說明:

src 輸入陣列;

dst 輸出陣列,陣列的大小和原陣列一致;

alpha 用來規範值或者規範範圍,並且是下限;

beta只用來規範範圍並且是上限,因此只在norm_minmax中起作用

norm_type 歸一化選擇的數學公式型別;

dtype 當為負,輸出在大小深度通道數都等於輸入,當為正,輸出只在深度與輸如不同,不同 的地方由dtype決定;

mark 掩碼。選擇感興趣區域,選定後只能對該區域進行操作。

歸一化選擇的數學公式型別介紹(norm_type)

設陣列中元素為

norm_minmax:(ak不屬於,min(ai),當ak等於max(ai)時p=1,等於min(ai)時p=0)

舉例說明:

src=,預設alpha=1,beta=0:

norm_l1運算後得到 dst=

norm_inf運算後得到 dst=

norm_l2運算後得到 dst=

norm_minmax運算得到 dst=

四種norm_type的區別

1.norm_l1、norm_inf、norm_l2模式下歸一化結果與beta無關,只與alpha有關,詳見第4部分的公式說明;

2.norm_minmax中alpha、beta都起作用,同時需要注意的是alpha和beta的取值順序與歸一化結果無關。即alpha=255,beta=0和alpha=0,beta=255最後的歸一化結果是相同的。

舉例程式說明:

norm_l1運算:

#include#includeusing namespace std;

using namespace cv;

int main()

; normalize(a, a,1,255,norm_l1);

//normalize(a, a,1,0,norm_l1);結果相同

for (int i = 0; i < a.size(); i++)

waitkey(0);

return 0;

}

執行結果:

norm_minmax運算:

#include#includeusing namespace std;

using namespace cv;

int main()

; normalize(a, a,-1,255,norm_minmax);

//normalize(a, a,255,-1,norm_minmax);結果相同

for (int i = 0; i < a.size(); i++)

waitkey(0);

return 0;

}

關於引數解釋中alpha與beta的上下限與其預設取值的問題的解釋

normalize()中alpha預設為1,beta預設為0,而在引數解釋中alpha解釋為下限,beta解釋為上限,很多同學在這個地方產生了疑問?乙個陣列的下限不是應該小於上限嗎?即alphabeta=0。

這裡給出我自己的解釋,有錯誤的地方請大家指出:由上述實驗知道,

在norm_type=norm_minmax下:

alpha與beta的大小關係其實並不重要,alpha,beta只是確定範圍的兩個邊界值,其確定的範圍可以表示為:

[min(alpha,beta), max(alpha,beta)]

在norm_type=norm_l1\inf\l2下:

beta取任何值都對歸一化結果沒有影響

因此,我得出的結論是,在3.引數說明中,應該將alpha解釋成:用來規範值或者規範範圍,在規範範圍是為範圍的一邊界值;將beta解釋成:只用來規範範圍,為範圍的另一邊界值

opencv函式介紹 normalize

1.函式原型 void cv normalize inputarry src,inputoutputarray dst,double alpha 1,double beta 0,int norm type norm l2,int dtype 1,inputarray mark noarry 2.函式...

openCV中waitKey函式介紹

include include iostream include using namespace cv using namespace std int main 結果 第乙個waitkey執行時間為 3.56973e 006s 第二個waitkey執行時間為 10.0054s 請按任意鍵繼續.從執行...

openCV中waitKey函式介紹

include opencv2 highgui highgui.hpp include iostream include windows.h using namespacecv using namespacestd intmain mat im double duration im imread d...