智能车制作

标题: 摄像头图像采集 [打印本页]

作者: lishengfei    时间: 2010-3-22 20:25
标题: 摄像头图像采集
我现在用的数字摄像头,我总共采集了41行,每行150个点,这样我装原始数据的数组会占用150×41/1024=6K,如果我再加上二值化数组,那就是12K,这样X12的RAM不够用,我想过在采集原始数据后,马上转化成二值化数据,但那样就只能利用场消隐的时间来转化数据,但是场消隐的时间不够转化,这样就造成还没有转换完,下一幅图像的原始数据又来了!我也效果二值化过后哦,用八位的数据来装八个点,但又会造成后面提取黑点的算法变得复杂,不知道,你们是怎么处理的,请教一下哈!
作者: 20074978    时间: 2010-3-22 20:41
你采集的点好多哦    我们只有你一半那么多
作者: hufangwu    时间: 2010-3-22 21:47
同问
作者: 小什羊    时间: 2010-3-23 08:18
顶起来 期待高手解答
作者: lishengfei    时间: 2010-3-23 12:48
高手啊?我需要急需解决这个问题啊?我现在想通过压缩储存来存放二值化数据,这样一个字节八位可以存八个点,但后面还原这些点的坐标就很复杂了啊?
作者: fbhsy    时间: 2010-3-23 13:11
期待解决
作者: shuxinxiaozi    时间: 2010-3-24 18:36
摸索中!
作者: haolyj98    时间: 2010-3-24 21:46
顶帖,期待有人解答
作者: hnjywjw    时间: 2010-3-25 10:00
楼主采的点也太多了吧~这么多的点会使算法的执行效率很低的。
楼主干脆在处理数据的时候将中断禁止掉,处理完之后再允许中断接收数据。
作者: nigel1946    时间: 2010-3-25 14:06
我们就是处理数据时关了那个中断的
作者: syxhaha    时间: 2010-3-25 16:34
看看
作者: xcsjava    时间: 2010-3-25 20:33
楼主采的点也太多了吧~这么多的点会使算法的执行效率很低的。
”楼主干脆在处理数据的时候将中断禁止掉,处理完之后再允许中断接收数据。 “
这个方法也可以,但是会增加处理周期。看很多报告在行中断的空隙的时间还是要挤挤的。
作者: crackest    时间: 2010-3-26 14:46
可以考虑使用SD卡
作者: crackest    时间: 2010-3-26 14:46
另外也可以外扩FLASH,比如说AT45D161
作者: zou317    时间: 2010-3-26 23:38
不需要采集那么多数据吧···
作者: cat888    时间: 2010-3-27 12:47
胡乱想的:
一减少采集的点数,特等奖也就采集100左右的数;
二用汇编优化;
三增加采集的行间隔。
作者: xiaohaipolang    时间: 2010-3-27 13:32

作者: will    时间: 2010-3-27 20:55
楼主采集到得这么多点都是有效的吗,有没有用缓存呢
作者: 786892880    时间: 2010-3-28 00:38
你的分辨率真的很高。、。。
作者: 北方阿斗    时间: 2010-3-28 14:40
还不懂,观望中
作者: lishengfei    时间: 2010-3-28 18:51
150个点全是有效点,现在就是RAM不够,不能够再缓存图像了,如果我们采集一行就处理一行,那样我们又只有一次利用图像的机会,对后面检测十字交叉和起跑线很不利,你说的关闭中断,那样的话会增加控制周期,如果过40ms才控制一次,那还不如不要这么高的分辨率,还有用SD卡读取和存储速度跟不上
作者: 时代还怪    时间: 2010-3-28 20:07
高手高手快来吧!
作者: 时代还怪    时间: 2010-3-28 20:07
这是个很严重的问题啊!
作者: 时代还怪    时间: 2010-3-28 20:10
看了回复,但是觉得问题还是没有解决啊!
作者: pooorfoool    时间: 2010-3-29 09:34
采集一行处理一行,你才采集了40行,大约隔5行采集一行,这5行的时间你干嘛用了?我们可以做到一行采集200个点,并且处理完。程序你自己去想吧。200*50的图像我处理后信息不丢失,最多不超过1K字节。
作者: zzy2099    时间: 2010-3-29 17:13
扩展RAM是误导人的,读写FLASH也是误导人的,
作者: lishengfei    时间: 2010-4-1 12:39
你说的采集一行,就处理一行,那我们只有一次利用图像的机会,后面我们提取十字交叉和起跑线还得重新来扫描一次图像,但那是我们已经没有机会再来扫描图像了
作者: jiutian0396    时间: 2010-4-6 19:43
不建议采集那么多点
作者: maowb123    时间: 2010-4-6 19:58
书上曰:75*24 的分辨率已经能满足控制需要 ,s12  8kram存若干75*24 是没有问题的
作者: pooorfoool    时间: 2010-4-7 10:42
回复 27# lishengfei


    采集一行处理一行的意思是,将该行的黑块位置和大小记录下来,一个黑块只要两个字节吧,假设一行有5个块,那么一行最多10个字节就ok了,然后等整幅图像采集完,可以从保存的黑块里找出赛道,起跑线,交叉等等,相当于采集一行,就对一行进行压缩。
作者: 小松鼠    时间: 2010-4-7 14:26
我个人认为:你可以把数据存在一个外部的RAM里面,如铁电存储器!需要数据直接去取就可以
作者: librae8226    时间: 2010-4-7 15:36
不用采那么多吧……
作者: librae8226    时间: 2010-4-10 09:24
说一下我门的方法,不好大家扔砖就是~
前面那位仁兄也说到了采集每行之间有一段间隙,比如隔5行采一次,这5行的时间是可以利用的:

  1. void interrupt 8 Port0_interrupt(void) // HS interrupt

  2. {

  3.     static unsigned int i;



  4.     TFLG1 = 0x01; // Clear HS flag

  5.     if( g_SampleFlag == 0 )

  6.     {

  7.         return;

  8.     }

  9.     row_counter++;

  10.     if( row_counter % SAMPLE_INTERVAL == 0 )

  11.     {

  12.         app = &buff[row][0];

  13.         row++;

  14.         if( row_counter >= 150 )

  15.         {

  16.             row_counter = 0;

  17.             flag = 1;

  18.             g_SampleFlag = 0;

  19.             PORTA_PA0 = !PORTA_PA0;

  20.         }



  21.         for( i = 0; i < COLUMN_VALUE; i++ )

  22.         {

  23.             *app++ = PORTB;

  24.             _asm(nop);_asm(nop);_asm(nop);

  25.             _asm(nop);_asm(nop);_asm(nop);

  26.             _asm(nop);                      //for 48Mhz



  27.             _asm(nop);_asm(nop);_asm(nop);

  28.             _asm(nop);_asm(nop);_asm(nop);

  29.             _asm(nop);_asm(nop);_asm(nop);

  30.             _asm(nop);_asm(nop);_asm(nop);

  31.             _asm(nop);_asm(nop);_asm(nop);

  32.             _asm(nop);_asm(nop);_asm(nop);  //for 80Mhz

  33.         }

  34.     }

  35. }
复制代码
就是说扫描到不是需要的行的时候就return就可以,这样就有时间去处理for(;;)里面的东西了,我们处理图像时没关中断,暂时也没觉得有什么太大问题
作者: cjslaser2001    时间: 2010-4-10 16:54
采集的点一般72*24即可
作者: 灵水    时间: 2010-4-11 21:09
考虑中...
作者: 时代还怪    时间: 2010-4-12 11:48
学习学习
作者: 1233211234567    时间: 2010-4-19 11:05
吧一场分开处理,近处少采点,远处多采
作者: sneil    时间: 2010-4-19 20:41
采的点也太多了吧?真的太多啦。
作者: yanshengbin    时间: 2010-6-29 16:49
你怎么猜这么多点啊!!我们好少哦
作者: herdsman346    时间: 2010-10-28 22:13
我们想将图像通过串口通讯发送到电脑上看看~ 不知道怎么处理,VB编的程序一下子就死机了 汗
作者: yanglong890124    时间: 2010-11-10 08:36
2011摄像组交流群92231525,欢迎加入
作者: yanglong890124    时间: 2010-11-10 08:36
2011摄像组交流群92231525,欢迎加入
作者: 李威小威    时间: 2011-3-9 19:56
for(i=0;i<ROW_MAX;i++)
      for(j=7;j<LINE_MAX-7;j++)                                                                     
         SciTx(Image[i][j]);
作者: hefeixuexi    时间: 2011-3-17 16:14
不用采那么多的,70列就够了
作者: 木未    时间: 2012-4-21 20:58
那个采集一行处理一行,压缩的 好像很强大,可是该怎么实施呢?赛道外面的黑点还是要管的,那么黑点数目就会很多了啊。。。???




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