智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4540|回复: 13
打印 上一主题 下一主题

蓝宙 黑线提取算法

[复制链接]

30

主题

229

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2689
威望
1401
贡献
718
兑换币
877
注册时间
2014-7-1
在线时间
285 小时
跳转到指定楼层
1#
发表于 2015-12-6 15:53:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10贡献
谁看过可以帮帮忙解释一下? 大概说下就好
/*************************************************************************
*                           蓝宙电子工作室
*
*  函数名称:AccommodFondLine
*  功能说明:求数组的均值程序
*  参数说明:
*  函数返回:无
*  修改时间:2012-11-20
*  备    注:自己适应算黑线位置算法
*************************************************************************/
#define LINEBREADTH    10    //xian kuan??
#define LINECONCAT     8      //
void AccommodFondLine(s8 *PixelAryy ,u8 PixelCount , s16 *LastLeftPixelStation,s16 *LastRingtPixelStation,u8 FAVAULE)
{
  static u8 NOLeftCount,NORingtCout ;
  s16 temp0B ,temp1B,temp2B,temp3B;
  u8 *LineStation ,LineCount ,*LineLeftStation,*LineRingtStation;
  s16 LeftMIN,LeftMAX,RingtMIN,RingtMAX;
  LineCount = 0 ;
  for(temp0B = 0 ; temp0B < PixelCount ; temp0B ++)
  {
    temp1B = temp0B ;
    temp2B = 0 ;
    /***********
    查找左边凹槽
    ***********/
    while(temp2B <= LINEBREADTH)
    {
      temp1B -- ;
      if(temp1B < 0)
        break ;
      if( PixelAryy[temp1B] -  PixelAryy[temp0B] > FAVAULE )
      { temp2B ++ ;}
      else if(temp2B)
      { break ; }

    }

    /***********
    查找右边凹槽
    ***********/
    temp1B = temp0B ;
    temp3B = 0 ;
    while(temp3B <= LINEBREADTH)
    {
      temp1B ++ ;
      if(temp1B > PixelCount)
      { break ; }
      if( PixelAryy[temp1B] -  PixelAryy[temp0B] > FAVAULE )
      { temp3B ++ ;}
      else if(temp3B)
      { break ; }
    }
    /***********
    记录黑线位置
    ***********/   
    if(temp2B >= LINEBREADTH )
    {
      *LineStation = temp0B ;
      LineCount ++ ;
    }
    else if(temp3B >= LINEBREADTH )
    {
      *LineStation = temp0B ;
      LineCount ++ ;
    }


  }
  /**********
  根据连续性查找左右黑线位置
  **********/
  if(LineCount)
  {
    temp2B = PixelCount >> 1 ;
    temp1B = NOLeftCount << 1;
    temp1B += LINECONCAT;
    LeftMIN = *LastLeftPixelStation - temp1B ;
    LeftMAX = *LastRingtPixelStation + temp1B ;
    if(LeftMIN < 0)
      LeftMIN = 0 ;

    if(LeftMAX > (temp2B + 1))
      LeftMAX  = temp2B + 1 ;

    RingtMIN = *LastRingtPixelStation - temp1B ;
    RingtMAX = *LastRingtPixelStation + temp1B ;
    if(RingtMAX > PixelCount)
       RingtMAX = PixelCount ;
    if(RingtMIN < (temp2B - 1)){
       RingtMIN = temp2B - 1 ;
    }
    temp2B = 0 ;
    temp3B = 0 ;
   for(temp1B = 0 ;temp1B < LineCount ;temp1B ++ )
   {
     if( (LeftMIN < LineStation[temp1B])&&(LineStation[temp1B]<LeftMAX))
     {
       LineLeftStation[temp2B] = LineStation[temp1B] ;
       temp2B ++ ;
     }else if( (RingtMIN < LineStation[temp1B])&&(LineStation[temp1B]<RingtMAX))
     {
       LineRingtStation[temp3B] = LineStation[temp1B] ;
       temp3B ++ ;
     }

   }

  }else
  {
    NOLeftCount ++ ;
    NORingtCout ++ ;
  }

  if(temp2B)
  {
    NOLeftCount = 0 ;

  }

}

回复

使用道具 举报

9

主题

425

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2664

活跃会员奖章优秀会员奖章

QQ
威望
1210
贡献
716
兑换币
819
注册时间
2015-1-15
在线时间
369 小时
毕业学校
泥河中学
2#
发表于 2015-12-6 15:53:15 | 只看该作者
:):):):):)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

30

主题

229

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2689
威望
1401
贡献
718
兑换币
877
注册时间
2014-7-1
在线时间
285 小时
3#
 楼主| 发表于 2015-12-6 15:53:57 | 只看该作者
说下怎么用也行  主要是函数的几个参数
回复

使用道具 举报

30

主题

229

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2689
威望
1401
贡献
718
兑换币
877
注册时间
2014-7-1
在线时间
285 小时
4#
 楼主| 发表于 2015-12-6 18:30:38 | 只看该作者
回复

使用道具 举报

1

主题

51

帖子

0

精华

高级会员

Rank: 4

积分
591
威望
291
贡献
192
兑换币
193
注册时间
2015-12-4
在线时间
54 小时
毕业学校
ZHBIT
5#
发表于 2015-12-6 21:03:06 | 只看该作者
光电拿个拉普拉斯算子卷积一下取高频就可以了,多简单的事
回复

使用道具 举报

9

主题

425

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2664

活跃会员奖章优秀会员奖章

QQ
威望
1210
贡献
716
兑换币
819
注册时间
2015-1-15
在线时间
369 小时
毕业学校
泥河中学
6#
发表于 2015-12-6 21:12:18 | 只看该作者
1013956044 发表于 2015-12-6 18:30
兄弟  可否交流下

这资料也是别人散的,我看对你可能有用就给你了!我没用它们的采!!自己多看看吧!!!
回复

使用道具 举报

30

主题

229

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2689
威望
1401
贡献
718
兑换币
877
注册时间
2014-7-1
在线时间
285 小时
7#
 楼主| 发表于 2015-12-6 21:35:18 | 只看该作者
wxyriddler 发表于 2015-12-6 21:03
光电拿个拉普拉斯算子卷积一下取高频就可以了,多简单的事

兄弟 可否细述
回复

使用道具 举报

30

主题

229

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2689
威望
1401
贡献
718
兑换币
877
注册时间
2014-7-1
在线时间
285 小时
8#
 楼主| 发表于 2015-12-6 21:37:41 | 只看该作者
Sτrīvé___ 发表于 2015-12-6 21:12
这资料也是别人散的,我看对你可能有用就给你了!我没用它们的采!!自己多看看吧!!!

好谢谢   你们现在图像采集回来了?还是开始跑了?
回复

使用道具 举报

1

主题

51

帖子

0

精华

高级会员

Rank: 4

积分
591
威望
291
贡献
192
兑换币
193
注册时间
2015-12-4
在线时间
54 小时
毕业学校
ZHBIT
9#
发表于 2015-12-7 00:13:45 | 只看该作者
本帖最后由 wxyriddler 于 2015-12-7 00:15 编辑

用-1,0,1或者1,0,-1做模板把数组卷积一遍,做个绝对值,设个阈值,就知道边缘在哪了啊
回复

使用道具 举报

9

主题

425

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2664

活跃会员奖章优秀会员奖章

QQ
威望
1210
贡献
716
兑换币
819
注册时间
2015-1-15
在线时间
369 小时
毕业学校
泥河中学
10#
发表于 2015-12-7 10:47:39 | 只看该作者
1013956044 发表于 2015-12-6 21:37
好谢谢   你们现在图像采集回来了?还是开始跑了?

跑了!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|亿加合和智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-5-8 09:01 , Processed in 0.108557 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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