@ -640,34 +640,44 @@ Scalar_ 's.
CV_EXPORTS_W void meanStdDev ( InputArray src , OutputArray mean , OutputArray stddev ,
InputArray mask = noArray ( ) ) ;
/** @brief Calculates an absolute array norm, an absolute difference norm, or a
relative difference norm .
/** @brief Calculates an absolute array norm.
The function cv : : norm calculates an absolute norm of src1 ( when there is no
src2 ) :
This version of cv : : norm calculates the absolute norm of src1 . The type of norm to calculate is specified using cv : : NormTypes .
\ f [ norm = \ forkthree { \ | \ texttt { src1 } \ | _ { L_ { \ infty } } = \ max _I | \ texttt { src1 } ( I ) | } { if \ ( \ texttt { normType } = \ texttt { NORM_INF } \ ) }
\ f [ norm = \ forkfour { \ | \ texttt { src1 } \ | _ { L_ { \ infty } } = \ max _I | \ texttt { src1 } ( I ) | } { if \ ( \ texttt { normType } = \ texttt { NORM_INF } \ ) }
{ \ | \ texttt { src1 } \ | _ { L_1 } = \ sum _I | \ texttt { src1 } ( I ) | } { if \ ( \ texttt { normType } = \ texttt { NORM_L1 } \ ) }
{ \ | \ texttt { src1 } \ | _ { L_2 } = \ sqrt { \ sum_I \ texttt { src1 } ( I ) ^ 2 } } { if \ ( \ texttt { normType } = \ texttt { NORM_L2 } \ ) } \ f ]
{ \ | \ texttt { src1 } \ | _ { L_2 } = \ sqrt { \ sum_I \ texttt { src1 } ( I ) ^ 2 } } { if \ ( \ texttt { normType } = \ texttt { NORM_L2 } \ ) }
{ \ | \ texttt { src1 } \ | _ { L_2 } ^ { 2 } = \ sum_I \ texttt { src1 } ( I ) ^ 2 } { if \ ( \ texttt { normType } = \ texttt { NORM_L2SQR } \ ) } \ f ]
If normType is not specified , NORM_L2 is used .
or an absolute or relative difference norm if src2 is there :
\ f [ norm = \ forkthree { \ | \ texttt { src1 } - \ texttt { src2 } \ | _ { L_ { \ infty } } = \ max _I | \ texttt { src1 } ( I ) - \ texttt { src2 } ( I ) | } { if \ ( \ texttt { normType } = \ texttt { NORM_INF } \ ) }
{ \ | \ texttt { src1 } - \ texttt { src2 } \ | _ { L_1 } = \ sum _I | \ texttt { src1 } ( I ) - \ texttt { src2 } ( I ) | } { if \ ( \ texttt { normType } = \ texttt { NORM_L1 } \ ) }
{ \ | \ texttt { src1 } - \ texttt { src2 } \ | _ { L_2 } = \ sqrt { \ sum_I ( \ texttt { src1 } ( I ) - \ texttt { src2 } ( I ) ) ^ 2 } } { if \ ( \ texttt { normType } = \ texttt { NORM_L2 } \ ) } \ f ]
or
\ f [ norm = \ forkthree { \ frac { \ | \ texttt { src1 } - \ texttt { src2 } \ | _ { L_ { \ infty } } } { \ | \ texttt { src2 } \ | _ { L_ { \ infty } } } } { if \ ( \ texttt { normType } = \ texttt { NORM_RELATIVE | NORM_INF } \ ) }
{ \ frac { \ | \ texttt { src1 } - \ texttt { src2 } \ | _ { L_1 } } { \ | \ texttt { src2 } \ | _ { L_1 } } } { if \ ( \ texttt { normType } = \ texttt { NORM_RELATIVE | NORM_L1 } \ ) }
{ \ frac { \ | \ texttt { src1 } - \ texttt { src2 } \ | _ { L_2 } } { \ | \ texttt { src2 } \ | _ { L_2 } } } { if \ ( \ texttt { normType } = \ texttt { NORM_RELATIVE | NORM_L2 } \ ) } \ f ]
As example for one array consider the function \ f $ r ( x ) = \ begin { pmatrix } x \ \ 1 - x \ end { pmatrix } , x \ in [ - 1 ; 1 ] \ f $ .
The \ f $ L_ { 1 } , L_ { 2 } \ f $ and \ f $ L_ { \ infty } \ f $ norm for the sample value \ f $ r ( - 1 ) = \ begin { pmatrix } - 1 \ \ 2 \ end { pmatrix } \ f $
is calculated as follows
\ f { align * }
\ | r ( - 1 ) \ | _ { L_1 } & = | - 1 | + | 2 | = 3 \ \
\ | r ( - 1 ) \ | _ { L_2 } & = \ sqrt { ( - 1 ) ^ { 2 } + ( 2 ) ^ { 2 } } = \ sqrt { 5 } \ \
\ | r ( - 1 ) \ | _ { L_ \ infty } & = \ max ( | - 1 | , | 2 | ) = 2
\ f }
and for \ f $ r ( 0.5 ) = \ begin { pmatrix } 0.5 \ \ 0.5 \ end { pmatrix } \ f $ the calculation is
\ f { align * }
\ | r ( 0.5 ) \ | _ { L_1 } & = | 0.5 | + | 0.5 | = 1 \ \
\ | r ( 0.5 ) \ | _ { L_2 } & = \ sqrt { ( 0.5 ) ^ { 2 } + ( 0.5 ) ^ { 2 } } = \ sqrt { 0.5 } \ \
\ | r ( 0.5 ) \ | _ { L_ \ infty } & = \ max ( | 0.5 | , | 0.5 | ) = 0.5 .
\ f }
The following graphic shows all values for the three norm functions \ f $ \ | r ( x ) \ | _ { L_1 } , \ | r ( x ) \ | _ { L_2 } \ f $ and \ f $ \ | r ( x ) \ | _ { L_ \ infty } \ f $ .
It is notable that the \ f $ L_ { 1 } \ f $ norm forms the upper and the \ f $ L_ { \ infty } \ f $ norm forms the lower border for the example function \ f $ r ( x ) \ f $ .
! [ Graphs for the different norm functions from the above example ] ( pics / NormTypes_OneArray_1 - 2 - INF . png )
The function cv : : norm returns the calculated norm .
When the mask parameter is specified and it is not empty , the norm is
calculated only over the region specified by the mask .
A multi - channel input arrays are treated as a single - channel , that is ,
M ulti- channel input arrays are treated as single - channel arrays , that is ,
the results for all channels are combined .
@ param src1 first input array .
@ -676,7 +686,24 @@ the results for all channels are combined.
*/
CV_EXPORTS_W double norm ( InputArray src1 , int normType = NORM_L2 , InputArray mask = noArray ( ) ) ;
/** @overload
/** @brief Calculates an absolute difference norm or a relative difference norm.
This version of cv : : norm calculates the absolute difference norm
or the relative difference norm of arrays src1 and src2 .
The type of norm to calculate is specified using cv : : NormTypes .
\ f [ norm = \ forkfour { \ | \ texttt { src1 } - \ texttt { src2 } \ | _ { L_ { \ infty } } = \ max _I | \ texttt { src1 } ( I ) - \ texttt { src2 } ( I ) | } { if \ ( \ texttt { normType } = \ texttt { NORM_INF } \ ) }
{ \ | \ texttt { src1 } - \ texttt { src2 } \ | _ { L_1 } = \ sum _I | \ texttt { src1 } ( I ) - \ texttt { src2 } ( I ) | } { if \ ( \ texttt { normType } = \ texttt { NORM_L1 } \ ) }
{ \ | \ texttt { src1 } - \ texttt { src2 } \ | _ { L_2 } = \ sqrt { \ sum_I ( \ texttt { src1 } ( I ) - \ texttt { src2 } ( I ) ) ^ 2 } } { if \ ( \ texttt { normType } = \ texttt { NORM_L2 } \ ) }
{ \ | \ texttt { src1 } - \ texttt { src2 } \ | _ { L_2 } ^ { 2 } = \ sum_I ( \ texttt { src1 } ( I ) - \ texttt { src2 } ( I ) ) ^ 2 } { if \ ( \ texttt { normType } = \ texttt { NORM_L2SQR } \ ) }
\ f ]
or
\ f [ norm = \ forkthree { \ frac { \ | \ texttt { src1 } - \ texttt { src2 } \ | _ { L_ { \ infty } } } { \ | \ texttt { src2 } \ | _ { L_ { \ infty } } } } { if \ ( \ texttt { normType } = \ texttt { NORM_RELATIVE | NORM_INF } \ ) }
{ \ frac { \ | \ texttt { src1 } - \ texttt { src2 } \ | _ { L_1 } } { \ | \ texttt { src2 } \ | _ { L_1 } } } { if \ ( \ texttt { normType } = \ texttt { NORM_RELATIVE | NORM_L1 } \ ) }
{ \ frac { \ | \ texttt { src1 } - \ texttt { src2 } \ | _ { L_2 } } { \ | \ texttt { src2 } \ | _ { L_2 } } } { if \ ( \ texttt { normType } = \ texttt { NORM_RELATIVE | NORM_L2 } \ ) } \ f ]
@ param src1 first input array .
@ param src2 second input array of the same size and the same type as src1 .
@ param normType type of the norm ( cv : : NormTypes ) .