初学图像处理编程,做了 一个Hough变换的程序,现在提取出了计数数组的最大值,我采用的是极坐标,提取出来的
 maxT(角度),maxS(极半径)。要是想画直线的话,有什么方法了?我采用的是极坐标方程,对图像是符合极坐标方程的点让其颜色改变,但是好像有点不对,请问我的方法有错误吗?或者有其他的方法了?
急盼佳音!!

for (x = 0; x < image->width; x++) 
{
for ( int y = 0;  y < image->height; y++) 
{
int SS = (int)(x * cos(MaxT) + y * sin(MaxT) );

if (fabs(SS - MaxS) < 0.0001)
{
pdc->SetPixel(x,  y, RGB(255, 0, 0));
}
else 
pdc->SetPixel( x,  y, RGB(r, g, b));

}
}

解决方案 »

  1.   

    我认为你的判断条件有问题,在这里
    int SS = (int)(x * cos(MaxT) + y * sin(MaxT) ); 
    这一行里面的x * cos(MaxT)和y * sin(MaxT) 这两个值没有什么意义
    如果你想要某一点的xy坐标符合长度与角度的要求,你就应该这样
    先判断该与原点(比如屏幕左上方)的夹角
    float(x-x0)/float(y-y0)=tan(MaxT);
    然后在判断极半径
    ss=sqrt((x-x0)*(x-x0)+(y-y0)*(y-y0));
    这样角度和半径就都求出来了,然后根据条件判断
      

  2.   

    我上面只说了大概意思,分母为零的处理很简单,只要在除数后面加一个很小的数比如
    c=a/(b+0.00001)就可以了