近几天看到论坛里有很多网友遇到 CCD 图像采集的麻烦,我在最开始的时候也为这个烦恼
过,由于本人比较菜,在度过大概半个月的绝望日夜后,在刚准备放弃时突然发现我已经
采集到正确的图像了。特再次分享,希望能解决大家当前遇到的麻烦。
在采集图像之前,我们首先要知道摄像头输出信号的特性。目前的模拟摄像头一般都是
PAL 制式的,输出的信号由复合同步信号,复合消隐信号和视频信号。其中的视频信号才
是真正的图像信号,对于黑白摄像头,图像越黑,电压越低,图像越白,电压越高。而复
合同步信号是控制电视机的电子枪对电子的偏转的,复合消隐信号是在图像换行和换场时
电子枪回扫时不发射电子。由于人眼看到的图像大于等于 24Hz 时人才不会觉得图像闪烁,
所以 PAL 制式输出的图像是 25Hz,即每秒钟有 25 幅画面,说的专业点就是每秒 25 帧,其
中每一帧有 625 行。但由于在早期电子技术还不发达时,电源不稳定,容易对电视信号进
行干扰,而交流电源是 50Hz 所以,为了和电网兼容,同时由于 25Hz 时图像不稳定,所以
后来工程师们把一副图像分成两场显示,对于一幅画面,一共有 625 行,但是电子枪先扫
描奇数场 1,3,5.....,然后再扫描 2,4,6.....,所以这样的话,一副图像就变成了隔行扫描,
每秒钟就有 50 场了。其中具体的细节请参考这个网站
电视原理与系统
http://courseware.ecnudec.com/zsb/zjx/zjx09/zjx090000.htm
只用看前面的黑白全电视信号和 PAL 制式就可以了(当然如果感兴趣可以全部看完)。
通过上面的内容如果你对 PAL 制式信号了然于心,那么就可以开始图像的采集了,PAL
输出的信号有复合同步信号,复合消隐信号和视频信号。那么我们首先就是要从这三种信
号中分理出复合同步信号,复合消隐信号和视频信号,以便我们对 AD 采样到的值进行存
储,从而形成一幅画面。具体如何分离,我们使用的是 LM1881 视频同步分离器件,具体
的硬件连接请参看论坛内相关文章(论坛里有介绍 LM1881 的文章,自己搜吧,我不重复
了)。
分离出行场同步,奇偶场信号后,就把他们接到单片机的外部中断口,产生中断,在中
断服务程序中对 AD 采集到的数据进行图像存储,从而形成一个二维数组的数字图像。
下面就说说图像采集方案,方法有多种,但我使用的方案是在行终端中读取 AD 采样的
灰度值,在场同步中交换图像采集和处理缓存指针,并对图像进行处理,然后控制小车,
在主函数中只有初始化和键盘扫描和串口输出函数。这样做效率比较高,而且可以把调试
和图像采集处理分开,变成起来比较方便。
大家遇到的还有一个很棘手的问题可能是 AD 采样频率该设置多大呢?建议大家先通过
PLLL 超频,然后把 AD 时钟频率设置的高点才行。
下面就把我的代码贴给大家看看吧。
void vPLLInit(void)//锁相环初始化
{ //BUS-CLOCK=PLL-CLOCK/2=32M