十六届智能车全向组算法开源(三)

系列文章目录

算法开源第一章

算法开源第二章

硬件开源第一章

硬件开源第二章


前言

        前两篇文章介绍了扫线和图像预处理,而当图像的边界线出来之后,还需要通过边界线来找到一些特征。比如断行,拐点。这一章介绍一些元素处理的预备节根据拐点补线。


一、拐点

        拐点就是边界线开始不按照正常斜率的那一点,比如十字,圆环等处发生边界断行,这时候断行的那一点我们称为拐点。识别拐点的方法有很多,这里介绍我用过的几种方法。

1.通过边界线连续三点差值来判断。

        当连续3个点的差值大于设定阈值,就可以说明拐点存在。这个阈值取决于摄像头的角度和高度,不同的角度可能差的会比较大。这种方式在搜取拐点时效果挺好,不过因为一般情况下都是全图扫描,比较浪费。所以在第一种方法上我采用边线提取的同时,也进行拐点判断。

2.断行时搜索拐点。

         在采用跟踪搜线时,遇到一些元素时会明显有断行存在或者边界线不按照原本的斜率。这时候边界线就不存在或者我们没有搜到,这时候我们就可以判断上拐点和下拐点了。

        这里我是将按照边界的常规斜率搜线时没有搜到,比如正常我们不对图像进行逆透视变换时,边界线时一条斜线,赛道靠近车近处大,后面越来越小。这样当我们正常的提取边界时,当斜率发生变化了,就搜不到线。所以这时候我们向外搜线,如果存在边界,那么前一行我们就判断是下拐点。

        简单来说就是边界连续时,边界线从向内倾斜变成了向外倾斜的情况的那一点,就是下拐点。

       那么对于上拐点时,采用的方法也有相通的地方,当断行后,重新找到边界,这重新找到的一点就是上拐点。可以在搜寻拐点时,对拐点所在行进行限制,避免赛道外存在,或者拐点乱飞。

拐点存在的几种常见情况,A,B,C,a,b就是下拐点和上拐点。 

二、利用拐点补线

1.补线的应用

        对于正常弯道和直道,拐点一般不存在,但是在十字,三岔,圆环这里,就比较明显。尤其我们还需要利用拐点去进行补线,将空白的赛道拟合出我们需要的边界线。  这样我们经过这些元素时可以在我们需要的时候做出直行,打角等动作。

2.补线的方法

1.通过两点拉线补线

拉线正常理解就是通过已知的两点,不断在这两点之间填中线点。

已知A,B两点,第一次我们填上A,B中心点C,第二次填入D点,直到A,B之间所有行都填满。下面附上代码

/******************************************************************************
 *
//曲线拟合   CommonRectificate(&P_LeftBlack[0],startPos-1,endPos+1);
******************************************************************************/
void CommonRectificate(unsigned char data[],unsigned char begin,unsigned char end)
{
       unsigned char MidPos = 0;
       if (end > 60-1)
       {
          end = 60-1;
       }
       if (begin == end)
       {
          data[begin] = (data[begin-1]+data[begin+1])>>1;
         // BlackLineData[begin] =  LeftBlack[begin] + (RightBlack[begin]-LeftBlack[begin])/2;
       }
       else if(begin < end)
       {
          MidPos = (begin+end)>>1;
          data[MidPos] = (data[begin]+data[end])>>1;
          //BlackLineData[MidPos] =  LeftBlack[MidPos] + (RightBlack[MidPos]-LeftBlack[MidPos])/2;
          if (begin+1 < MidPos)
          {
             CommonRectificate(data,begin,MidPos);
          }
          if (MidPos+1 < end)
          {
             CommonRectificate(data,MidPos,end);
          }
       }
}

2.通过最小二乘法补线

在一些情况下,我们只能知道一点的位置,这时候我们可以通过已知的几个连续点来预测接下来的几点位置。由最小二乘法求得斜率,可以通过简单的运算得到接下来几点的坐标。

附上最小二乘法求斜率代码

//最小二乘法拟合斜率

float Slope_Calculate(uint8 begin,uint8 end,uint8 *p)
{
  float xsum=0,ysum=0,xysum=0,x2sum=0;
  uint8 i=0;
  float result=0;
  static float resultlast;
  p=p+begin;
  for(i=begin;i<end;i++)
  {
      xsum+=i;
      ysum+=*p;
      xysum+=i*(*p);
      x2sum+=i*i;
      p=p+1;
  }
 if((end-begin)*x2sum-xsum*xsum) //判断除数是否为零
 {
   result=((end-begin)*xysum-xsum*ysum)/((end-begin)*x2sum-xsum*xsum);
   resultlast=result;
 }
 else
 {
  result=resultlast;
 }
 return result;
}

补线结果实例


  • 16
    点赞
  • 182
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 大学生智能汽车竞赛指导pdf是一本为大学生智能汽车竞赛提供指导的电子书。这本书主要包括竞赛的相关规则、技术要求、设计思路以及实践经验等内容。 首先,该指导pdf详细介绍了竞赛的相关规则。大学生智能汽车竞赛是一项技术性很强的比赛,指导pdf列举了竞赛的各项规则,包括参赛资格、报名流程、比赛形式以及评分标准等。了解这些规则对于参赛者很重要,可以帮助他们更好地准备和参加比赛。 其次,该指导pdf还介绍了竞赛中的技术要求。大学生智能汽车竞赛要求参赛者设计一辆能够自主行驶、识别道路标志、交通信号灯,并具备避障能力的智能汽车。指导pdf对这些技术要求进行了详细解释,包括如何选用合适的传感器、处理算法以及控制系统。这对于参赛者在设计阶段有很大的帮助,指导他们在技术上做到世界一流水准。 此外,该指导pdf还提供了一些建议和设计思路。由于大学生智能汽车竞赛是一个创新性很强的比赛,参赛者需要有独立的思考能力和创新的设计思路。指导pdf通过分享前人的经验和实践,为参赛者提供了一些设计思路和解决问题的方法。这对于参赛者在设计和调试过程中能够更加高效、顺利地进行,提高参赛者的竞争力。 总的来说,大学生智能汽车竞赛指导pdf是为大学生智能汽车竞赛提供指导的一本书籍。它介绍了竞赛的规则、技术要求以及设计思路,帮助参赛者更好地准备和参加比赛。对于那些希望参与智能汽车竞赛的大学生而言,这本指导pdf是一本非常有价值的参考资料。 ### 回答2: 大学生智能汽车竞赛指导 PDF 是一份为大学生设计和制造智能汽车的竞赛指南。这份指导具有很大的价值,因为: 首先,它为学生提供了全面的竞赛指导。指导中详细介绍了智能汽车竞赛的相关规则、要求和评分标准,帮助学生明确比赛的目标和要求。它还提供了设计和制造智能汽车所需的基本知识和技能的培训。这些指导都有助于学生为竞赛做好准备,提高他们的参赛水平。 其次,这份指导也为学生提供了实操指导。指导中包含了一些案例分析和实例展示,给学生一些实践的启发和灵感。此外,它还提供了一些实验室实验和项目练习的指导,使学生能够在实际操作中学习和应用所学知识,进一步加深对智能汽车制造的理解。 此外,智能汽车竞赛指导 PDF 还涵盖了一些先进的技术和发展趋势。比如,它介绍了自动驾驶技术和人工智能在智能汽车中的应用,这些都是当前汽车行业的热门话题。学生通过研读这份指导,可以了解到最新的技术和趋势,增强对智能汽车领域的前瞻性和创新性思维。 综上所述,大学生智能汽车竞赛指导 PDF 是一份非常有价值的资源,它为大学生提供了全面的竞赛指导和实操指导,涵盖了先进的技术和趋势。这份指导将帮助学生在智能汽车竞赛中有更好的表现,同时也有助于他们在智能汽车领域的学习和研究。 ### 回答3: 大学生智能汽车竞赛指导PDF是一份以指导大学生参加智能汽车竞赛为主题的电子文档。该指导PDF提供了有关竞赛规则、技术要求、赛道要求等方面的详细指导和解释,旨在帮助大学生更好地理解和应用智能汽车竞赛的相关知识。 首先,在竞赛规则部分,该指导PDF会对整个竞赛的基本规则进行介绍,包括参赛资格、报名流程、比赛方式等等。这部分的目的是帮助参赛者了解竞赛的基本要求和报名流程,确保参赛者能够按照规则正确参与竞赛。 其次,在技术要求部分,该指导PDF会详细解释智能汽车竞赛中所需的技术要求,例如编程语言、传感器的使用、算法设计等等。这部分的目的是帮助参赛者理解和掌握竞赛所需的技术知识,提供一些技术指导和建议,使其能够在竞赛中运用所学知识。 最后,在赛道要求部分,该指导PDF会详细介绍赛道的布局、道路条件、障碍物设置等等。这部分的目的是帮助参赛者了解赛道的实际情况,提供一些建议和技巧,使其能够更好地应对赛道上的各种挑战。 总的来说,大学生智能汽车竞赛指导PDF是一份提供竞赛规则、技术要求和赛道要求等方面指导的电子文档。通过阅读和理解该指导PDF,参赛者能够更好地准备和参与智能汽车竞赛,提高竞赛的成绩和自我技术水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值