匹配两个矩阵的垃圾值(具有双重类型值)

时间:2014-10-11 11:15:41

标签: c++ opencv

我有两个2D矩阵,由具有double数据类型的元素组成。我想使用公式

匹配这些值
value =  | (a[i][j] - b[i][j]) |  / ( 1 + a[i][j] + b[i][j] )

我的代码:

double ColorCorrelogram::correlogramMatching(double (&a)[Num_colorBin][Distance_Range]  , double (&b)[Num_colorBin][Distance_Range])
{
    for(int i=0; i<Num_colorBin; i++)
    {
        for(int j=0; j<Distance_Range; j++)
        {
            double value = (    (std::abs)( a[i][j] - b[i][j] ) )   /   (1  +   a[i][j] +   b[i][j]);
            cout<<"\n( "<<a[i][j] <<"  and  "   <<b[i][j]<<"  )"<<"  gave  "<<value<<"    ";
        }
    }
    return 0;
}

矩阵 - 1:

image

矩阵 - 2:

image

结果:

image

问题:

  • 当我使用negative时,结果中为什么某些值为 std::abs
  • 在结果中的 第2行 中可以看到一些垃圾值。

1 个答案:

答案 0 :(得分:1)

您的代码格式为

((std::abs)(double))/double 

而不是

(std::abs)(double/double)

和std :: abs不像类型转换那样工作。