我在做(基于肤色的)人脸检测系统,请问图像的相似度计算是用来做什么的?是为后面的二值化做准备吗?

解决方案 »

  1.   

    我现在在看数字图像一本书,上面提到将图片先进行相似度计算,再进行二值化处理就可得到人脸区域,我认为:不是直接进行二值化就好了吗??比如匹配时候定义规则,要求基于一定算法下的相似度必须达到某个阈值才进行匹配,从而减少工作量???
    下面是相似度计算原码……void CLikelyHood::CalLikeHood()
    {
    int i,j; for(i=0; i<m_nHeight; i++)
    {
    for(j=0; j<m_nWidth; j++)
    {
    double x1,x2;
    TCbCr temp = CalCbCr(m_pSourceData[i][j].rgbRed,m_pSourceData[i][j].rgbGreen,m_pSourceData[i][j].rgbBlue);
    x1 = temp.Cb-bmean;
    x2 = temp.Cr-rmean;
    double t;
    t = x1*(x1*brcov[1][1]-x2*brcov[1][0])+x2*(-x1*brcov[0][1]+x2*brcov[0][0]);
    t /= (brcov[0][0]*brcov[1][1]-brcov[0][1]*brcov[1][0]);
    t /= (-2);
    m_pLikeliHoodArray[i][j] = exp(t);
    }
    } filter(m_pLikeliHoodArray,m_nWidth,m_nHeight); double max = 0.0;
    for(i=0; i<m_nHeight; i++)
    for(j=0; j<m_nWidth; j++)
    if(m_pLikeliHoodArray[i][j] > max) 
    max = m_pLikeliHoodArray[i][j];

    for(i=0; i<m_nHeight; i++)
    {
    for(j=0; j<m_nWidth; j++)
    {
    m_pLikeliHoodArray[i][j] /= max;
    }
    } m_bLikeliHoodReady = true;
    }
      

  2.   

    我老师做 Zernike 矩,好像是搞这个的
      

  3.   

    怎样计算两幅图的相似度啊?谁能给我发个代码参考一下么?谢谢  [email protected]