智能车制作
标题:
摄像头图像采集
[打印本页]
作者:
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行的时间是可以利用的:
void interrupt 8 Port0_interrupt(void) // HS interrupt
{
static unsigned int i;
TFLG1 = 0x01; // Clear HS flag
if( g_SampleFlag == 0 )
{
return;
}
row_counter++;
if( row_counter % SAMPLE_INTERVAL == 0 )
{
app = &buff[row][0];
row++;
if( row_counter >= 150 )
{
row_counter = 0;
flag = 1;
g_SampleFlag = 0;
PORTA_PA0 = !PORTA_PA0;
}
for( i = 0; i < COLUMN_VALUE; i++ )
{
*app++ = PORTB;
_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);
_asm(nop); //for 48Mhz
_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop); //for 80Mhz
}
}
}
复制代码
就是说扫描到不是需要的行的时候就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