图像处理------>十字补线

十字补线

补线原理

在判断十字的时候,我们能看到图像中最明显的特征就是十字的四个拐点,而我们在对十字进行补线的时候,显然也可以根据拐点进行处理,将左上拐点与左下拐点连接,右上拐点与右下拐点连接,这样我们就将十字这个特殊元素补成了直道元素。
十字图像
十字补线
这就是一个最常规的十字的补线方法,但是在车辆行驶过程中,还会遇到其他情况,如下面两种情况十字中图像斜入十字
这两种也是车辆在行驶过程中的常见图像,但是我们要区分这些情况也比较简单,依据拐点的不同,以及下半部分图像的丢线数量就可以做到很好的区分。

拐点的寻找

对于拐点的寻找,我根据拐点的位置不同,将拐点区分为左上拐点,左下拐点,右上拐点和右下拐点。对于不同的拐点我使用不同的寻找拐点的函数来进行寻找(其实可以整合到一个函数中,每次使用规定对应的数组以及步长就好,但我懒)。下面把四个函数摆出来:

 byte find_Left_H_point(byte begin, byte end)
 {
   
     if (begin < 10) begin = 10;
     if (end > 66) end = 66;
     if (end > Lose_line - 5) end = (byte)(Lose_line - 5 > 0 ? Lose_line - 5 : 0);
     byte num = 68;
     for (byte i = begin; i < end; i++)
     {
   
         if (((L_black[i - 1] - L_black[i] > number_large_cha) || (L_black[i - 2] - L_black[i] > number_large_cha)) && my_abs(L_black[i + 1], L_black[i]) + my_abs(L_black[i + 2], L_black[i + 1]) < number_lian)
         {
   
             //大跳变上拐点
             if ((flag_cirle != 2 && flag_cirle != 3 && flag_cirle != 7) && Left_lose[i] > 40) continue;
             num = (byte)(i + 1);
             break;
         }
         else if (L_black[i - 5] - L_black[i] > 20 && my_abs(L_black[i + 1], L_black[i]) + my_abs(L_black[i + 2], L_black[i + 1]) < number_lian)
         {
   
             byte number_cha = 0;
             for (byte j = 1; j <= 6; j++)
             {
   
                 if (L_black[i - j] - L_black[i - j + 1] > number_little_cha) number_cha++;
             }
             if (number_cha > 3) num = i;
         }
     }
     return num;
 }//寻找左上拐点
 byte find_Right_H_point(byte begin, byte end)
 {
   
     if (begin < 10) begin = 10;
     if (end > 66) end = 66;
     if (end > Lose_line - 5) end = (byte)(Lose_line - 5 > 0 ? Lose_line 
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值