数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 4400|回复: 0

[求助]直线拟合

[复制链接]
发表于 2005-4-26 22:08:49 | 显示全部楼层 |阅读模式
<>毕业设计需要用到bmp图像的直线拟合,查到一些资料,直线拟合最常用的算法是最小二乘法。但是在实现时,遇到一些问题,请各位达人指教。小弟的算法如下(VC++):</P>
<> for(nY=0;nY&lt;lHeight;nY++)
{  
  for(nX=0;nX&lt;lWidth;nX++)
  {
   lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - nY) + nX;
   if (*lpSrc==0)
   {
    fSigmaX=fSigmaX+nX;
    fSigmaY=fSigmaY+nY;
    fSigmaXX=fSigmaXX+nX*nX;
    fSigmaXY=fSigmaXY+nX*nY;
    lCount++;
   }
  }
}
k=(fSigmaY*fSigmaX-fSigmaXY*lCount)/(fSigmaX*fSigmaX-fSigmaXX*lCount);//斜率</P>
<> b=(fSigmaY-fSigmaX*k)/lCount;//截距</P>
<P>说明:拟合在多数情况下可以成功,但一旦遇到拟合结果是竖直直线时,就可能出现两种结果:一是k, b均为无穷,这个还好办,可以加判断条件翻转坐标轴再拟合一次;二是最奇怪的,k为0,b为待拟合图像的中点。在实验中,如果用画笔画出一条宽度为1像素的竖直直线,拟合的结果就是k, b均为无穷;如果画一条宽度大于1的竖直直线,拟合的结果就是一条水平直线,是待拟合直线的垂直平分线——奇怪了!各位有什么看法?或者,有没有基于一般式而不是斜率的直线拟合算法?谢谢</P>
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-11-30 10:17 , Processed in 0.090309 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表