基于DSP的嵌入式视频监测

近几年,随着dsp及嵌入式技术的快速发展,采用dsp嵌入式系统的视频设备已在各领域中被广泛应用。本文利用adsp blackfin533(bf533)为核心处理器,设计了视频检测系统,实现了视频图像的采集、处理和网络传输,该系统具有体积小、功耗低、性能高、可便携等优点。
1 系统硬件平台设计
系统工作原理:由图像传感器采集到的图像信号以yuv(4:2:2)的格式输出,通过bf533的ppi接口以dma方式存入sdram。当采集完一帧数据后,bf533从sdram中读入数据进行位图数据格式转化,将位图图像数据通过以太网接口传输到远程pc机上,然后系统继续采集下一帧图像。
1.1 处理器
blackfin处理器是adi公司与intel公司2003年4月联合开发的体现高性能体系结构的首款第四代dsp产品,主要面向嵌入式音频、视频和通信等领域。adsp-bf533是目前blackfin系列数字信号处理器中性能较高的一款,具有600mhz的主频、双16位的mac(乘加器)和两个40位的alu(算术逻辑单元)、四个8位的视频处理单元、八个算术寄存器、10个地址寻址单元,并且集成了大量的外围设备和存储器接口,每秒运算速度最高达到1200mmac(兆次乘法加法运算),并且adsp-bf533在达到600mhz性能水平时的功耗仅为280mw,能耗很小。在图像处理上的优点更为突出,可针对图像特点运用二维dma传输数据,大大加快和方便图像数据的传送和处理。adsp-bf533系列dsp具有接口丰富,性能优良,更具有视频处理接口及独立的视频指令,特别适用于各种音视频、网络设备领域,充分满足了系统技术指标的要求,在实际中获得了广泛的应用。
1.2 图像传感器
美国omnivision公司的彩色图像传感器ov7660具有30万像素,芯片的像素阵列达到1300x1280,具有高灵敏度采光、低功耗电源供电等特点且功耗低、体积小,在摄像手机、网络视频等方面应用比较广泛。通过先进的传感器技术,还可以通过减少或者消除图像瑕玷中的普通光/电资源(如固定样式噪音(fpn)、拖尾效应、闪光等)来产生比较清晰、完全、稳定的彩色图像。对于本系统来说,是一种很好的选择。
0v7660图像传感器,内置自动曝光控制(aec)、自动增益控制(agc)、自动白平衡(awb)等功能,支持sxga、vga、qvga、qqvga、cif、qcif和qqcif,可输出rgb、yuv和ycbcr等多种视频数据格式。0v7660通过一个专用的camera interface接口与核心处理芯片bf533的ppi接口连接,接口电路如图1所示。
为使芯片正常上作,需要通过串行视频控制总线(sccb)总线来配置ov7660的内部寄存器,使芯片输出格式正确的彩色图像数据。
1. 3 系统硬件结构
要完成系统的功能,除了处理器和图像采集模块,通过b1ackfin533的丰富接口,在开发过程中还要用到以下模块。
(1)sdram模块为系统提供内核运行、程序运行、数据缓存的空间;
(2)flash模块为系统提供存储空间;
(3)系统调试、移植、交叉编译、需要uart接口和jtag调试接口;
(4)图像数据的网络传输需要以太网接口。
当然系统还应有电源模块、系统复位电路、时钟模块等,系统硬件结构如图2。
2 系统的软件设计
系统的软件部分包括三部分,嵌入式uclinux(操作系统,图像传感器0v7660和网络控制器cs8911a的驱动程序,系统的应用程序。
2.1 嵌入式uclinux操作系统
本系统采用开源、可剪裁、安全性和实时性好的嵌入式uclinux操作系统作为软件开发平台,保证了系统的稳定性和数据的快速准确传输,并提供了完善的网络支持。uclinux并为应用程序的设计提供了众多api接口函数,方便了编程实现过程。
嵌入式uclinux系统是由boot loader引导程序、系统内核、根文件系统组成。软件交叉编译环境为windows系统下的colinux,该操作环境具有模拟uclinux操作系统的功能,在拥有colinux环境的基础上,选择合适的开发工具可以加快开发速度,节省开发成本。软件编程语言为标准c语言,具有良好的可移植性。
2.2 ov7660和cs8911a驱动程序
blackfin533 uclinux kernel中带有一些硬件驱动模块,缩短了开发周期。系统上电后,将自动检测视频设备ov7660,视频设备被检测到后,将自动调用在配置内核时已经加载到uclinux中的ov7660的驱动程序模块ppi_ov7660。
图像数据的网络传输在linux的平台上采用服务器/客户端模型,网络控制器cs8911a的驱动程序因为已经很成熟了并且对外公开,直接采用了开发好并已经移植到uclinux内核中的设备驱动程序。
2.3 系统应用软件设计
本系统的应用软件设计分为图像采集设备初始化、数据格式转化和图像的捕捉三部分。视频图像采集的程序流程图如图3。
2.3.1 图像采集设备初始化
对于uclinux操作系统,它将设备看作文件,因此,想对设备进行读写等操作,应首先打开设备,完成操作后再关闭设备。设备文件的初始化主要针对ppi的/dev/ppifcd设备。本系统可以从4个步骤进行。
(1)打开视频设备 利用open()函数实现打开ppi视频设备。
fd_ppi=open(“/dev/ppifcd”,o_rdwr)
fd_ppi为设备文件描述符。
(2)获取设备信息 利用相应的ioctl()函数取得设备文件的相关信息,包含设备的基本信息参数(设备名称、支持的最大最小分辨率、信号源信息等);
ioctl(fd_ppi,cmd_ppi_get_videoin,&video_in)
(3)获取影像信息 利用相应的ioctl()函数取得影像支持信息,包含设备采集图像的各种属性参数(色调、亮度、饱和度、对比度、色相等);
ioctl(fd_ppi,cmd_ppi_set_0v7660,&pictures)
(4)关闭视频设备利用close()函数关闭ppi视频设备。
if(fd_ppi)close(fd_ppi);
2.3.2 数据格式的转化
本系统开始采集摄像头数据,将数据转化为yuv420格式,在pc上显示的时候采用的是rgb565格式,因此在采集完毕之后必须进行图像数据的格式转换。
rgb与yuv之间可以相互转化,对应关系如下:
其反变化公式如下
根据上述关系可以通过编程实现数据格式的转化。
2.3.3 图像的捕捉
在ppi_ov7660中采用直接读取的方法,直接读取方法比较简单,通过调用read()函数,将输入的图像数据复制到内核缓冲区中,就可以实现对每帧图像的读取。过程如下:
(1)通过调用函数malloc()为采集的图像数据分配内存;
in_buff=(unsigned char*)malloc(img_size)
(2)通过调用read()函数将前端采集的图像数据读到in_buf中;
fd=read(fd_ppi,in_buff,img_size)
(3)通过调用write()函数将内存中的图像数据写到创建的一个file里。
fd=fopen(“pic”,“wb”)fwrite(in_buff,l,noutputbytes,fd)
3 图像的网络传输与显示
在uclinux平台上采用服务器/客户端模型通过建立tcp套接字来实现网络的连接,本系统通过基于tcp协议的socket编程,完成了图像数据的发送和客户端的接收程序。流程图如图4所示。
以网络上pc机为客户端,用vc编写图像显示界面。把服务端采集的图像传送至接收端,如图5所示。实验表明,系统每秒采集15帧图像,没有停顿感,满足实时性要求。
本系统以b1ackfin533为数据处理核心,依托数字图像处理技术和dma技术,并通过以太网与上位机通信进行数据传输,完成了一个完整的视频监测系统。其设计特点为结构简单、体积小、功耗低、图像分辨率高、成本低廉、结合网络布线。本系统满足实时行要求,具有很大的应用前景。

讨论放大器的噪声来源
汽车LIN总线驱动传感器应用
嵌入式产品开发不同阶段的解析
VDI与IDV真正的含义是什么?
国内CMP材料市场迎来发展机遇,国产化和本土化供应进程将加快
基于DSP的嵌入式视频监测
1394接口是什么样子
为什么笼型电机转子采用斜槽
OPPOR11拍照效果怎么样?OPPOR11拍照赏析,这才是真正的暗夜之星,画质好噪点少
华为的Mate10造势十足,力压iphoneX,抢占一波潜在市场!
微量水分测定仪的技术指标与使用方法
国家电网承诺2020年将实现利润810亿元 计划今年电网投资升至4500亿元
Dothan处理器
33120A任意波形发生器15MHz
微软为Win10两项新功能:截图和触屏 无需升级系统!
采用NI PXI平台和LabVIEW实现谐波干扰的数据采集系统的设计
超级动力电池使用的导热结构胶
AI+边缘计算,让城市治理难题“看得见”又“管得了”
PerferredNetworks发布了其超参数优化框架的beta版本
按需数字制造供应商Protolabs的3D打印部门收入已恢复增长