void HessianEnhence(cv::Mat &m)
{
cv::Mat x;
x=m.clone();
//cv::GaussianBlur(x,x,cv::Size(5,5),0,0);
//ConvertBackGround(x);
double fxx=0.0,fyy=0.0,fxy=0.0;
double k=0.0,q2=0.0,qr=0.0,r1=0.0,r2=0.0;
for (size_t i=1;i<x.rows-1;i++)
{
for (size_t j=1;j<x.cols-1;j++)
{
fxx=x.at<uchar>(i-1,j)+x.at<uchar>(i+1,j)-2*x.at<uchar>(i,j);
fyy=x.at<uchar>(i,j-1)+x.at<uchar>(i,j+1)-2*x.at<uchar>(i,j);
fxy=x.at<uchar>(i+1,j+1)+x.at<uchar>(i,j)-x.at<uchar>(i+1,j)-x.at<uchar>(i,j+1);
k=(fxx+fyy)/2;
q2=fxx*fyy-fxy*fxy;
qr=sqrt(double(k*k-q2));
r1=k+qr;
r2=k-qr;
if ((r1<0)&&(r2<0))
{
m.at<uchar>(i,j)+=(min(fabs(r1),fabs(r2))*min(fabs(r1),fabs(r2)))/(max(fabs(r1),fabs(r2)));
}
else
m.at<uchar>(i,j)=0;
}
}
}