Advertisement

opencv中关于cvNorm函数的使用

阅读量:

Norm

计算数组的绝对范数, 绝对差分范数或者相对差分范数

复制代码
    double cvNorm( const CvArr* arr1, const CvArr* arr2=NULL, int norm_type=CV_L2, const CvArr* mask=NULL );
复制代码

参数:

arr1 第一输入图像

arr2 为第二个输入图像,在其为空时 null 的情况下 arr1 的绝对范数值会被求取;否则 arr1 - arr2 会根据情况被用来求取其绝对或相对范数值。此外,在讨论中会提到 normType 所代表的范数值类型,并说明可选的操作掩模参数为 mask

如果 arr2 为空(NULL),函数 cvNorm 计算 arr1 的绝对范数:

该范数被定义为||arr1||_C并等同于\max_{I}|\text{abs}(arr1(I))|;当\text{normType}指定为\text{CV\_C}时采用此计算方式。
该范数被定义为||arr1||_{L^*}并等同于\sum_{I}\text{abs}(arr1(I));当\text{normType}指定为\text{CV\_L}^*时采用此计算方式。
该范数被定义为||arr1||_2并等同于\sqrt{\sum_{I}\text{abs}(arr1(I))^2};当\text{normType}指定为\text{CV\_L}_2时采用此计算方式。

如果 arr2 不为空(NULL), 该函数计算绝对差分范数或者相对差分范数:

其范数定义为 arr₁ 和 arr₂ 之间的最大绝对差:
norm = ||arr₁ - arr₂||_C 当 normType 等于 CV_C;
其 L₁ 范数定义为所有元素绝对差之和:
norm = ||arr₁ - arr₂||L₁ 当 normType 等于 CV_L₁;
其平方根即为各元素差的平方和开平方:
norm = sqrt(sum
{I} (abs(arr₁(I) - arr₂(I)))^²) 当 normType 等于 CV_L₂。

或者

当 normType 设置为 CV_RELATIVE_C 时,
norm 为 ||arr1-arr2||C 除以 ||arr2||C 的结果;
此时 norm 等于 ||arr1-arr2||L1 与 ||arr2||L1 的比值,
当 normType 被设定为 CV_RELATIVE_L2 时,
norm 则等于 || arr₁ − arr₂ ||{L₂} / || arr₂ ||{L₂}。

该函数输出了基于输入数据计算得到的范数。
在本系统中,默认情况下一个多通道数组被当作一个单一的数据流处理,
进而导致所有通道的结果被整合在一起。

全部评论 (0)

还没有任何评论哟~