求助《精通visual c++ 指纹模式识别算法及其实现》书中不懂得地方,
求指纹图像在点(x,y)处偏导数采用sobel算子,由sobel算子求得的方向场角度后偏移135度,为什么会偏移135度??

解决方案 »

  1.   

    书中的语句“lvx += vx * vy * 2;//sin(2sita); lvy += vx*vx - vy*vy;//cos(2sita)”是把lvx和lvy弄反了,所以后面求的atan2是和y轴的夹角。把它改正后,后续的代码改为: fAngle = atan2(lvy, lvx);
    if(fAngle < 0) fAngle += 2*PI;// 求纹线角度
    fAngle = (fAngle*EPI*0.5 + 0.5);
    angle = (long)fAngle;
    angle-=90;
    if(angle < 0) angle += 180;
    就可以了。方向场是和梯度成直角的