大家帮帮忙看下我这段哈夫变换的程序哪儿有错误,对一条直线也识别错?void CTest5Doc::OnProcessHough() 
{
Bitmap.GetBitmapBits(Totalsize,bmpinfo);

int m,n,theta,rou;
m=(int)sqrt(bminfo.bmWidth*bminfo.bmWidth+bminfo.bmHeight*bminfo.bmHeight)+1;
n=1800;
int *Polar=NULL;
Polar=(int*)malloc(m*n*sizeof(int));
    memset(Polar,0,sizeof(int)*m*n);    int i,j;
    for(i=0;i<bminfo.bmHeight;i++)
for(j=0;j<bminfo.bmWidth;j++){
if(bmpinfo[i*bminfo.bmWidth*4+j*4]==0)
for(theta=0;theta<1800;theta++){
rou=(int)fabs(j*cos(theta/10)+(bminfo.bmHeight-i-1)*sin(theta/10));
    Polar[rou*1800+theta]=Polar[rou*1800+theta]+1;
}
else
;
}
int max=0,imax=0,jmax=0;
for(i=0;i<m;i++)
for(j=1;j<n;j++){
if(Polar[i*n+j]>=max){
imax=i;
jmax=j;
max=Polar[i*n+j];
}
}
CString roumax,thetamax;
roumax.Format("%d",imax);
thetamax.Format("%d",jmax);
    AfxMessageBox(roumax);
    AfxMessageBox(thetamax);
free(Polar);
// TODO: Add your command handler code here

}