做过hough变换或者会绘制直线的进来看看

_葫芦娃 2008-05-22 09:53:03

初学图像处理编程,做了 一个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));

}
}
...全文
76 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
_葫芦娃 2008-06-17
  • 打赏
  • 举报
回复
到现在也还是找不到我要的答案
不过我找到了另外一个算法
juzi4003 2008-05-30
  • 打赏
  • 举报
回复
LZ,请问你的问题解决了吗?
_葫芦娃 2008-05-24
  • 打赏
  • 举报
回复

去试试吧,对你的支持非常感谢,呵呵
qhd_kw 2008-05-23
  • 打赏
  • 举报
回复
我上面只说了大概意思,分母为零的处理很简单,只要在除数后面加一个很小的数比如
c=a/(b+0.00001)就可以了
_葫芦娃 2008-05-23
  • 打赏
  • 举报
回复

谢谢你的支持!
但是你的还要考虑分母为零的情况,不关怎么样,谢谢了!
_葫芦娃 2008-05-23
  • 打赏
  • 举报
回复

谢谢你的支持!
但是你的还要考虑分母为零的情况,不关怎么样,谢谢了!
qhd_kw 2008-05-23
  • 打赏
  • 举报
回复
我认为你的判断条件有问题,在这里
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));
这样角度和半径就都求出来了,然后根据条件判断

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧