智能车制作

标题: 采集即二值化,晒一晒我的数据采集程序。 [打印本页]

作者: bestboyxie    时间: 2011-6-29 08:52
标题: 采集即二值化,晒一晒我的数据采集程序。
这日子,光看帖没发过贴,第一次发帖吧,算分享~80M下效果灰常不错。采集即比较,解决了单片机速度太快需延时,一次性采集(提高时间利用率啊)90个点刚刚好。
void IOC_Contrl(void)
{
Image_Data[Line_C][0]  =    PORTA<0x34;
Image_Data[Line_C][1]  =    PORTA<0x34;
Image_Data[Line_C][2]  =    PORTA<0x34;
Image_Data[Line_C][3]  =    PORTA<0x34;
Image_Data[Line_C][4]  =    PORTA<0x34;
Image_Data[Line_C][5]  =    PORTA<0x34;
Image_Data[Line_C][6]  =    PORTA<0x34;
Image_Data[Line_C][7]  =    PORTA<0x34;
Image_Data[Line_C][8]  =    PORTA<0x34;
Image_Data[Line_C][9]  =    PORTA<0x34;
Image_Data[Line_C][10] =    PORTA<0x34;
Image_Data[Line_C][11] =    PORTA<0x34;
Image_Data[Line_C][12] =    PORTA<0x34;
Image_Data[Line_C][13] =    PORTA<0x34;
Image_Data[Line_C][14] =    PORTA<0x34;
Image_Data[Line_C][15] =    PORTA<0x34;
Image_Data[Line_C][16] =    PORTA<0x34;
Image_Data[Line_C][17] =    PORTA<0x34;
Image_Data[Line_C][18] =    PORTA<0x34;
Image_Data[Line_C][19] =    PORTA<0x34;
Image_Data[Line_C][20] =    PORTA<0x34;
Image_Data[Line_C][21] =    PORTA<0x34;
Image_Data[Line_C][22] =    PORTA<0x34;
Image_Data[Line_C][23] =    PORTA<0x34;
Image_Data[Line_C][24] =    PORTA<0x34;
Image_Data[Line_C][25] =    PORTA<0x34;
Image_Data[Line_C][26] =    PORTA<0x34;
Image_Data[Line_C][27] =    PORTA<0x34;
Image_Data[Line_C][28] =    PORTA<0x34;
Image_Data[Line_C][29] =    PORTA<0x34;
Image_Data[Line_C][30] =    PORTA<0x34;
Image_Data[Line_C][31] =    PORTA<0x34;
Image_Data[Line_C][32] =    PORTA<0x34;
Image_Data[Line_C][33] =    PORTA<0x34;
Image_Data[Line_C][34] =    PORTA<0x34;
Image_Data[Line_C][35] =    PORTA<0x34;
Image_Data[Line_C][36] =    PORTA<0x34;
Image_Data[Line_C][37] =    PORTA<0x34;
Image_Data[Line_C][38] =    PORTA<0x34;
Image_Data[Line_C][39] =    PORTA<0x34;
Image_Data[Line_C][40] =    PORTA<0x34;
Image_Data[Line_C][41] =    PORTA<0x34;
Image_Data[Line_C][42] =    PORTA<0x34;
Image_Data[Line_C][43] =    PORTA<0x34;
Image_Data[Line_C][44] =    PORTA<0x34;
Image_Data[Line_C][45] =    PORTA<0x34;
Image_Data[Line_C][46] =    PORTA<0x34;
Image_Data[Line_C][47] =    PORTA<0x34;
Image_Data[Line_C][48] =    PORTA<0x34;
Image_Data[Line_C][49] =    PORTA<0x34;
Image_Data[Line_C][50] =    PORTA<0x34;
Image_Data[Line_C][51] =    PORTA<0x34;
Image_Data[Line_C][52] =    PORTA<0x34;
Image_Data[Line_C][53] =    PORTA<0x34;
Image_Data[Line_C][54] =    PORTA<0x34;
Image_Data[Line_C][55] =    PORTA<0x34;
Image_Data[Line_C][56] =    PORTA<0x34;
Image_Data[Line_C][57] =    PORTA<0x34;
Image_Data[Line_C][58] =    PORTA<0x34;
Image_Data[Line_C][59] =    PORTA<0x34;
Image_Data[Line_C][60] =    PORTA<0x34;
Image_Data[Line_C][61] =    PORTA<0x34;
Image_Data[Line_C][62] =    PORTA<0x34;
Image_Data[Line_C][63] =    PORTA<0x34;
Image_Data[Line_C][64] =    PORTA<0x34;
Image_Data[Line_C][65] =    PORTA<0x34;
Image_Data[Line_C][66] =    PORTA<0x34;
Image_Data[Line_C][67] =    PORTA<0x34;
Image_Data[Line_C][68] =    PORTA<0x34;
Image_Data[Line_C][69] =    PORTA<0x34;
Image_Data[Line_C][70] =    PORTA<0x34;
Image_Data[Line_C][71] =    PORTA<0x34;
Image_Data[Line_C][72] =    PORTA<0x34;
Image_Data[Line_C][73] =    PORTA<0x34;
Image_Data[Line_C][74] =    PORTA<0x34;
Image_Data[Line_C][75] =    PORTA<0x34;
Image_Data[Line_C][76] =    PORTA<0x34;
Image_Data[Line_C][77] =    PORTA<0x34;
Image_Data[Line_C][78] =    PORTA<0x34;
Image_Data[Line_C][79] =    PORTA<0x34;
Image_Data[Line_C][80] =    PORTA<0x34;
Image_Data[Line_C][81] =    PORTA<0x34;
Image_Data[Line_C][82] =    PORTA<0x34;
Image_Data[Line_C][83] =    PORTA<0x34;
Image_Data[Line_C][84] =    PORTA<0x34;
Image_Data[Line_C][85] =    PORTA<0x34;
Image_Data[Line_C][86] =    PORTA<0x34;
Image_Data[Line_C][87] =    PORTA<0x34;
Image_Data[Line_C][88] =    PORTA<0x34;
Image_Data[Line_C][89] =    PORTA<0x34;

}
作者: bestboyxie    时间: 2011-6-29 09:09
自己顶一个。。去复习马克思了!~~~
作者: vgjkl    时间: 2011-6-29 09:22
我们毛概啊
作者: 568581185    时间: 2011-6-29 15:50
早考完了
作者: sonwendi    时间: 2011-6-29 18:04
硬件二值化大概可以采集三百多个点,处理时间也是够的
作者: bestboyxie    时间: 2011-6-30 13:59
回复 5# sonwendi


    这么多点有必要不?
作者: sonwendi    时间: 2011-6-30 17:57
回复 6# bestboyxie


    应该在尽可能处理得完,采集的完的情况下采集点~

     一行采集的点多,不仅黑线可以完整提取到,而且可以越往后面黑线可以提取的远一点~
作者: sonwendi    时间: 2011-6-30 17:58
回复 1# bestboyxie


    能说下这个0x34什么原理么?
作者: bestboyxie    时间: 2011-6-30 23:12
回复 8# sonwendi


    我用的数字摄像头,那个是阀值~~~
作者: 3245469    时间: 2011-7-3 20:19
haosixiang
作者: 吴铭鸿    时间: 2011-8-6 02:26
哇》》》》
作者: rolcye    时间: 2011-8-6 09:35
回复 9# bestboyxie


90个点少了些,从采集精度、处理速度两方面考滤,多采一点无坊。
推荐180个点。经验上一般取120~250个点。
作者: suaibinhan    时间: 2011-8-6 23:21
顶下,学习了!
作者: iceboy    时间: 2011-8-7 00:43
回复  bestboyxie


90个点少了些,从采集精度、处理速度两方面考滤,多采一点无坊。
推荐180个点。经 ...
rolcye 发表于 2011-8-6 09:35



那么经验上取多少行比较合适呢?
作者: rolcye    时间: 2011-8-7 11:48
本帖最后由 rolcye 于 2011-8-7 11:50 编辑

回复 14# iceboy


    这个也是要看主频和处理算法的耗时,范围大约是36~100
一般取50行左右。(如果处理方式非常优秀,取200行也是没问题的)

ps:多数强队的分辨率约为200*100 (近似数值)
作者: iceboy    时间: 2011-8-7 16:11
回复  iceboy


    这个也是要看主频和处理算法的耗时,范围大约是36~100
一般取50行左右。(如果处理 ...
rolcye 发表于 2011-8-7 11:48



增加行数有什么好处呢?
作者: rolcye    时间: 2011-8-7 17:18
回复 16# iceboy


    在往届,行数可以取的很少,有的车36行就能跑的很好。
这要归功于——黑线提取算写的好,因为黑线都是连续的,不可能突变。增加行数只能增加稳定性。

而今年有了虚线,很多车队都增加了行数,以克服断续的虚线。
行数不是独立的,要看前瞻大小,前瞻越大,行数要求越多;
目的是为了防止丢线,原则上是保证两行像素采集的实际距离小于25mm。
即在小车与虚线的极限角为60度时,10cm长的虚线上仍然能得到至少2行有效数据(10*cos60'>2*2.5)
作者: agogos    时间: 2011-11-27 15:56
这个代码可以精简好多的说。。写了90行~~10行就可以哈。。
作者: QianDE1991    时间: 2011-11-28 08:38
回复 18# agogos


用for循环么???
作者: QianDE1991    时间: 2011-11-28 09:20
回复 1# bestboyxie

请问采集90个点能获取整个赛道的信息数据吗??
作者: ran41564468    时间: 2011-11-28 10:27
楼主用的什么型号的数字摄像头啊!!!求指导
作者: 无敌快车    时间: 2011-11-28 15:25
谁可以给出一个比较权威的点评??期待。。。。。。。。
作者: 20090430110    时间: 2011-11-28 18:10
那不二值化就有360个点啊!
作者: znfc2    时间: 2011-11-28 22:55
回复 5# sonwendi


    硬件二值化大概可以采集三百多个点?为何我只能采集100多个(xs128,80M)
作者: sonwendi    时间: 2011-11-28 23:47
回复 24# znfc2


    硬件二值化速度很快,主要采集的点数取决于你怎么用IO口采集信号~
    由于二值化以后就是01信号,可以只用一个IO口读取,然后八位并一块成为一个uchar型~
作者: znfc2    时间: 2011-11-29 09:40
回复 25# sonwendi


   那就是把八个二进制变成一个uchar,然后再把uchar放进数组?   我现在是直接把二进制数放进一个120*90的数组,不知道1.8M的前瞻够不够啊?
作者: sonwendi    时间: 2011-11-30 21:55
回复 26# znfc2


    够啦,我们前瞻一开始40cm还能跑得biubiu的~
作者: znfc2    时间: 2011-11-30 22:45
回复 27# sonwendi


    我主频在80M时终于每行采集到超过150个点了。现在只用了30m前瞻,挺慢的
作者: zjh6607476    时间: 2011-12-1 13:06
还行,,,
作者: sonwendi    时间: 2011-12-1 23:27
回复 28# znfc2


    前瞻是你的摄像头的倾斜角度问题,偏的大就看得远~
    每一行采集的数据和你的采集方法有关系
作者: dashier    时间: 2011-12-18 11:30
学习
作者: 尘666    时间: 2011-12-22 14:09
mark
作者: 云ydfq淡风轻    时间: 2012-1-13 21:36

作者: 弥好    时间: 2012-1-14 16:52

作者: 惊华    时间: 2012-1-15 00:00

作者: agogos    时间: 2012-1-17 15:03
回复 1# bestboyxie
仔细看了下,我觉得你可以用个define把0x34去掉,这样改也好改。。
作者: gxu    时间: 2012-1-21 12:24
楼主威武! 膜拜中!!
作者: weo72607260    时间: 2012-1-21 18:39
兄弟其实想采集多少个点都没关系?一幅图可以几乎采完,多一点就越能做到精准 可是舵机达不到你想要的 不过采的越多自己分析的越清楚 算法能做到越精细
作者: weo72607260    时间: 2012-1-21 18:42
最好能把图像还原回来看 那样就只需要磨算法了
作者: weo72607260    时间: 2012-1-21 18:44
这样的采集程序明显不好
作者: yangdiefei    时间: 2012-1-23 20:30
新年快乐
作者: conquer100    时间: 2012-1-24 03:43
可以有一个宏来代替阀值,当要修改阀值时就不用修改N次了
作者: 篪骋    时间: 2012-1-28 23:02

作者: 刺鸟    时间: 2012-1-30 09:49
为什么只用[line_C]?不变化吗?
作者: 刺鸟    时间: 2012-1-30 09:50
为什么只用[line_C]?不变化吗?
作者: jsh4093    时间: 2012-3-9 10:43
明白了

作者: 尐精灵    时间: 2012-3-9 20:17
也是80m为什么我只能采到68个点呢!
作者: sangxiaoran    时间: 2012-3-22 20:23
为什么不给ad时钟高低就直接读啊
作者: 紫藤风信子    时间: 2012-3-26 20:55
学习下
作者: 树叶    时间: 2012-5-9 17:08
小于阈值的就是白色部分吗??
作者: willkong    时间: 2013-1-27 16:44
bestboyxie 发表于 2011-6-30 23:12
回复 8# sonwendi

阈值是怎么设置的,可以讲解一下吗??是用动态阈值还是静态阈值啊??怎么计算这个阈值啊???





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2