3.1 视频采集及压缩程序
DSP通过I2C接口完成对P03030K图像传感器的初始化,并设置相应的寄存器完成对工作模式、数据输出格式、分辨率、亮度和色度等的设置。P03030K与DSP的PPI口相连,输出图像数据以DMA方式传输到SDRAM中存储,本系统采用乒乓缓冲区的方法传输数据,在内存中开辟两个缓冲区,使用两个头尾相连的描述符链表控制PPI DMA一次传输数据到两个缓冲区中。DMA每采集完一行图像数据之后就产生一次中断,在中断服务程序中使用存储器DMA将数据搬移到片外SDRAM,等待DSP对其进行MPEG-4压缩处理。视频采集流程图,如图5所示。
DSP对视频数据进行压缩编码时采用MPEG-4标准,由于CMOS图像采集模块输出YUV4:2:2图像,而编码模型的输入为YUV4:2:0图像,故需要对采集到的图像进行色度重采样。DCT和IDCT是编码过程中被频繁调用的两个函数,故采用汇编语言实现且使用Chen的快速算法,此外根据BF533的硬件和编译系统的特点,运用各种方法对MPEG-4编码程序代码进行大量的优化工作,利用循环缓冲技术和DSP提供的各种像素操作指令和向量操作指令对PADDING算法、运动矢量预测、SAD最小搜索算法和半像素内插等需要反复执行的过程进行汇编优化,充分发挥BF533的并行处理能力。在内存分配方面,在SDRAM中开辟了4个帧缓冲器,分别用于保存当前编码帧、当前参考帧、下一编码帧和下一参考帧数据。DSP的片内RAM容量较小,但是访问速度较快,而MPEG-4的最小编码单元是宏块,所以可以将宏块从片外SDRAM转移到片内RAM中进行处理,处理结束后再存到SDRAM中。另外为了加快数据块搬移速度,充分利用BF533强大的DMA能力完成数据传输操作,同时将CPU频繁访问的程序和数据放在片上缓存中,并充分利用乒乓缓冲结构,提高编码效率。
MPEG-4编码流程,如图6所示。
3.2 GSM短信报警程序
在红外探测器检测到有人入侵时,DSP将立即向户主发送短信报警信息,以便用户采取措施。BF533通过UART口发送AT指令,实现对TC35模块的控制,发送“AT+CMGF=1”设置短信发送模式为文本模式,发送“AT+CREG?”查询网络注册情况,发送“AT+CMGS=13572472507”再加上短信内容,即可以实现向目标手机发送报警信息的目的。由于采用文本发送模式,故不能发送中文文字,本系统选择发送英文字符“Danger”。
3.3 图像存储程序
压缩后的视频流数据将以文件的形式写入SD卡中。在进行写卡操作前,先要对SD卡初始化,设置其为SPI工作模式。SD卡的寻址方式是按字节寻址的,为加快速度,将其设置为扇区寻址,每个扇区512 bit,写一个扇区的函数部分程序段如下:
其中,sector为要写的扇区号,buff指向需要保存的数据流,SPI_transfer_byte为通过SPI口向SD卡传输l bit的函数,SD_write_block为SD卡写命令的编码。
4 结束语
本系统依托目前覆盖率较高的GSM公共网络,利用现有的无线通信业务和短消息服务业务,实现了远程报警功能,且不受地域和时间的限制,并采用CMOS摄像头采集现场图像,提高了警情处理的效率。经测试证明,该系统稳定、可靠,报警准确、及时,图像采集的帧率为15 f·s-1,单帧图像的分辨率为320×240,能够满足用户需求。