智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2971|回复: 11
打印 上一主题 下一主题

75帧减到60帧,调一个星期了也没能调出来,求指导!

[复制链接]

50

主题

198

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1393
威望
690
贡献
439
兑换币
386
注册时间
2013-3-6
在线时间
132 小时
毕业学校
北京师范大学珠海分校
跳转到指定楼层
1#
发表于 2013-12-22 16:12:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
OV7725摄像头,带FIFO,只有VSYNC(场)信号,没有行信号和PCLK。K60采集。
目前:
YUV数据格式,QVGA模式下(320*240)配置成75帧的输出速度,图像算是没问题;如下:


将阈值设为255发现有两条白线,不明是什么原因...
但是这个无所谓啦,影响不大。但是75帧的输出速度太快了,我想减到60帧。

于是配置寄存器,设置为60帧的速度(测了VSYNC的信号,是60帧的速度,即配置是没问题的)

(注,就改了输出速度而已,其他配置都没改)



可是采集回来的图像有问题了。
第一场正常,就是暗了一点,这个应该是曝光时间的原因,75帧的时候也会,无所谓·舍弃第一场就好了,如下:

但是 第一场之后的图像就全乱了,如下:

估计是读写复位时序异常的原因,但是一个星期来就是怎么都调不好,求指导啊!

本帖子中包含更多资源

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

x

2

主题

12

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2538
威望
1281
贡献
773
兑换币
765
注册时间
2012-9-30
在线时间
242 小时
毕业学校
一种
2#
发表于 2013-12-22 19:52:59 | 只看该作者
楼主是怎么在YUV格式下保证采集到的Y值而不是U或者V值的呢
回复 支持 反对

使用道具 举报

50

主题

198

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1393
威望
690
贡献
439
兑换币
386
注册时间
2013-3-6
在线时间
132 小时
毕业学校
北京师范大学珠海分校
3#
 楼主| 发表于 2013-12-23 15:58:54 | 只看该作者
yangtou880 发表于 2013-12-22 19:52
楼主是怎么在YUV格式下保证采集到的Y值而不是U或者V值的呢

开始我也不行的,查了好多才搞定的。首先得理解YUV422是什么意思:
开始我自以为是Y用4bit表示,U用2bit表示,V用2bit表示。
后来查了才知道完全不是一回事!
意思是:四个像素里有4个Y、2个U、2个V;而每个Y、U、V都是8bit表示的。
最后还有一点,那就是你摄像头YUV数据的输出顺序了,一般有4种顺序可选:
1. 输出8bit Y 再输出8bit U 然后又输出8bit Y 最后输出8bit V 以此类推按顺序输出;
2. U Y V Y ... U Y V Y 以此类推;
3.忘了
4.忘了
我用的是第二种顺序,即:U Y V Y输出的
知道以上后,采集思路如下:
for(i=0;i<ROW;i++)
{
    for(j=0;j<LINE;j++)
    {
               //1.读取U或V值,这里直接舍弃
               FIFO_RD_L();
               FIFO_RD_H();  
               //2.读取Y值,即灰度值
               FIFO_RD_L();
               Image_Data[j] = GPIO_GET_8bit(PORTD,0);//读取图像数据PORTD0-PORTD7
               FIFO_RD_H();
    }
}

回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2538
威望
1281
贡献
773
兑换币
765
注册时间
2012-9-30
在线时间
242 小时
毕业学校
一种
4#
发表于 2013-12-23 20:41:16 | 只看该作者
尕玍紿 发表于 2013-12-23 15:58
开始我也不行的,查了好多才搞定的。首先得理解YUV422是什么意思:
开始我自以为是Y用4bit表示,U用2bit ...

看你的代码,意思是程序能直接区分出来是U、V还是Y值?怎么做到的,是U、V值和Y值在数据上有区别吗,还是说你在硬件上将他们区分开了?或者是完全根据时序来判断是U、V还是Y值的?
回复 支持 反对

使用道具 举报

50

主题

198

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1393
威望
690
贡献
439
兑换币
386
注册时间
2013-3-6
在线时间
132 小时
毕业学校
北京师范大学珠海分校
5#
 楼主| 发表于 2013-12-25 19:39:34 | 只看该作者
yangtou880 发表于 2013-12-23 20:41
看你的代码,意思是程序能直接区分出来是U、V还是Y值?怎么做到的,是U、V值和Y值在数据上有区别吗,还是说 ...

1.不是程序能直接区分出来的!不管是什么数据,对程序来说只是1和0,程序怎么可能直接会区分!
2.U、V值和Y值在数据上没有任何的区别,都是0--255之间的一个数值。
3.U、V、Y是按时序输出的!我上次已经说得很清楚啦!有4种时序(或者说顺序),可以根据需要自己配置的。
不清楚你用的是不是跟我的摄像头完全一样的,我已经说明我的是OV7725带FIFO,只有VSYNC场信号,没有行和像素信号。不过就算摄像头不一样YUV422时序的定义都是一样的,只是在操作上殊途同归而已。
我这里针对U Y V Y这种时序再跟你细说多一次吧:
1.OV7725上电后,数据就会以一定的速度和顺序连连不绝的输出,不管你接不接收。(要接收,你就使能FIFO,数据就存进FIFO里了你再读出来就好;不接收就不使能FIFO,数据就直接流失了。)
2.上面说的感觉是废话,应该懂的吧...还是直接说U、Y、V、Y顺序好了。
   现在知道了数据会以一定的顺序连连不绝的输出了,那“一定的顺序”是怎么样的呢?这就是我们直接选的了,我选的  是U Y V Y,即:输出一个U数据8bit存在了FIFO的最前面,然后输出一个Y数据8bit存在了FIFO的第二个位置,接着输出一个V数据8bit存在了FIFO的第三个位置,然后又输出一个Y数据8bit存在了FIFO的第四个位置,接着又循环回去输出下一个U数据8bit存在了第五个位置,再又是一个Y数据8bit存在第六个位置,如此如此,这般这般...即U Y V Y U Y V Y ........U Y V Y U Y V Y U Y V Y .....U Y V Y。够详细、废话了吧!
3.好了现在知道数据是以U Y V Y U Y V Y的顺序存在FIFO里了,那现在剩下的事情就是从FIFO中把我们要的Y数据读取出来了!那怎么读呢?很简单,看FIFO数据手册,或直接看别人的读取程序就好了,如下:
for(i=0;i<ROW;i++)
{
    for(j=0;j<LINE;j++)
    {
              //1.读取U或V值,这里直接舍弃
               FIFO_RD_L();//FIFO的RD脚给低电平,使得FIFO输出一个数据,由于第奇数次输出的数据是U/V(为什么是U/V数据,第2点时我讲清楚了:U Y V Y),而我们需要的是Y所以就直接舍去,就是不接收,即不写 Image_Data[j] = GPIO_GET_8bit(PORTD,0);这样的从数据引脚读取数据的语句。
               FIFO_RD_H();  //FIFO的RD脚给高电平,使得FIFO不能输出数据。(即一低一高一个CLK,FIFO输出一个数据。注:FIFO数据先进先出,输出一个数据地址自加1,不需要我们变地址)
               //2.读取Y值,即灰度值
               FIFO_RD_L();//同上。由于这里是第偶数次输出数据,即输出的是Y数据,所以有下面的一句读取数据的语句。
               Image_Data[j] = GPIO_GET_8bit(PORTD,0);//读取图像数据PORTD0-PORTD7
               FIFO_RD_H(); //同上,
    }
}

//这样按顺序循环读下来,读到的当然都是我们要的Y数据啦!
回复 支持 反对

使用道具 举报

50

主题

198

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1393
威望
690
贡献
439
兑换币
386
注册时间
2013-3-6
在线时间
132 小时
毕业学校
北京师范大学珠海分校
6#
 楼主| 发表于 2013-12-25 19:50:47 | 只看该作者
本问题已解决!
自己运气好,导致自己掉坑里了!总觉得既然75行得通就说明读写复位的时序没问题。最后发现问题所在是中断时,自己加的标志位没同步好的原因,导致了读写复位不同步,从而造成图像东一块,西一块...
回复 支持 反对

使用道具 举报

0

主题

54

帖子

0

精华

高级会员

Rank: 4

积分
980
威望
514
贡献
306
兑换币
350
注册时间
2013-12-19
在线时间
80 小时
毕业学校
桂林理工大学博文管理学院
7#
发表于 2013-12-25 21:38:30 | 只看该作者
新手 学习了 虽然不是看的很多但是努力中 呵呵....
回复 支持 反对

使用道具 举报

2

主题

479

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
16171

论坛元老奖章优秀会员奖章活跃会员奖章在线王奖章资源大师奖章

威望
9831
贡献
3996
兑换币
2051
注册时间
2012-1-17
在线时间
1172 小时
8#
发表于 2014-6-6 14:00:56 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

25

帖子

0

精华

高级会员

Rank: 4

积分
822
威望
424
贡献
260
兑换币
269
注册时间
2014-9-24
在线时间
69 小时
毕业学校
XX学校
9#
发表于 2014-10-16 03:28:33 | 只看该作者
楼主 可以分享一下全部程序吗? 因为正在学习摄像头 不过现在还不会写程序!!1920367503@qq.com    谢谢啦!!!
回复 支持 反对

使用道具 举报

4

主题

55

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1234
QQ
威望
625
贡献
401
兑换币
414
注册时间
2014-9-17
在线时间
104 小时
毕业学校
华侨大学
10#
发表于 2014-10-25 21:59:26 | 只看该作者
感觉楼主好屌,求罩
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 21:29 , Processed in 0.091149 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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