版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 本文由wangyong1179贡献 pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 2010年第 11期 文章编号: 1006 2475( 2010) 11 0031 04 计 算 机 与 现 代 化 JISUAN JI YU X IAN DA I UA H 总第 183期 基于嵌入式 L inux远程图像监控系统的设计 唐人财, 刘连浩 (中南大学信息科学与工程学院, 湖南 长沙 410083) 摘要: 系统以嵌入式微处理器 S3C2440和 L inux为核心 平台, 采用 U SB摄像头作为图像采集设 备, 利用 L inux 下视频设备 应用编程
2、接口 V 4L2和 Q t/Em bedded实现图像的采集, 实时 显示和 JPEG 格式 图片保 存, 利 用 libjpeg 库来实 现视频 数据 的编解码以及通过以太网进行远程传输, 实现一种功耗低、 可靠性高和低成 本的网络图像采集与传输系统设计方案。 关键词: L inux 图像采集; Q t/Em bedded V 4L2; S3C2440 ; ; 中图分类号: T P391 41 . 文献标识码: A do: 10 3969 /.j issn. 1006 2475. 2010. 11. 009 i . D esign of R emote I age M on itoring
3、System Based on Em bedded L inux m TANG R en ca, L IU L ian hao i ( Institu te of Infor ation Science and Eng ineer ing, C entra l South U niversity Changsha 410083, China) m , Ab stract T he syste uses e : m mbedded m icroprocesso r S3C2440 and L inux as the core platfo r T he applica tion prog ram
4、m ing in m. te rface V 4L2 and Q t /Embedded library are tw o key techno log ies to realize i age acqu isition, rea l ti e display and JPEG p icture m m sav ing by using U SB ca era T his design of i age acqu isition and trans ission is a low powe r consumption, h igh reliab ility and m . m m inexpe
5、nsive syste m, wh ich ach ieves encod ing o r decod ing of i ages by lib jpeg library and remo te transm ission o f E therne t m . K ey w ords L inux; i age acquisition; Q t/Em bedded V4L 2; S3C2440 : m ; 0 引 言 友好图形操作界面, 实现现场图像在终端上的实时显 示和 JPEG图片的保存。利用 L inux 下 lib jp eg库编码 压缩图像, 通过以太网接口实时传输到视频监控中心 P
6、C机上, 通过接收解码显示现场图像, 实现远程视频 图像监控功能。系统总体设计结构如图 1所示。 随着嵌入式技术、 多媒体技 术及网络技术 的发 展, 基于嵌入式技术、 视频压缩编码技术和网络传输 控制技术的综合应用, 已成为数字化网络视频采集监 控领域的核心 技术。系统是基于 ARM 9和 L inux 平 台的远程视频图像监控设计方案, 整个系统建立在嵌 入式结构上, 实现了高质量的视频图像采集和实时处 理功能。 1 系统总体设计 远程视频图像监控系统分为嵌入式视频监控终 端和监控中心 PC 机两部分。嵌入 式视频监控终端 基于嵌入式微处理器 S3C2440和 L inux 核心平台, 采
7、 用通用 USB 摄像头捕捉现场图像, 通过 USB 接口将 数据传输到 ARM 开发板上, 由开发板上的图像采集 处理模块进行图像数据处理, 通过 LCD 触摸屏显示 图 1 系统总体设计框图 2 系统硬件设计 系统选取 m in i2440开发板作为系统设计的硬件 收稿日期: 2010 06 28 作者简介: 唐人财 ( 1978 ), 男, 海南海口人, 中南大学信息科学与工程 学院硕 士研究 生, 研 究方向: 嵌入 式系统 及应用; 刘连 浩 ( 1959 ) , 男, 湖南 澧县人, 教授, 博士, 研究方向: 单片机及嵌入式系统。 32 计 算 机 与 现 代 化 2010年第
8、11期 平台, 监控终端硬件由主控模块和扩展模块两部分组 成。主控模块采用嵌入式微处理器 S3C2440 它是一 , 款基于 ARM 920T 核的 16/ 32位 RS I 结构的嵌入式微 C 处理器, 主频 400 z 最高可达 533 MH , MH z 片内外资源 , 丰富, 具有强大的处理能力, 从硬件上保证了系统快速 的响 应 速 度。系 统 存 储 扩 展 了 128 B 的 NAND M FLAS 64 B的 SDRAM。扩展模块包括通用 USB摄 H, M 像头、 9000以太网控制器和带触摸屏的 NEC3 5英 DM . 寸 TFT 真彩液晶屏。主控模块通过 USB 接口电
9、路、 LCD接口电路、 以太网接口电路与扩展模块相连接构 成整个硬件系统。系统硬件结构如图 2所示。 配置内核编译选项时把 UVC 驱动编译进内核。UVC 不是摄像头的品牌或型号, 它是一种视频设备的技术 规范, 全称为 U SB V ideo C lass 这是一个为 USB 视频 , 设备提供驱动的开源项目。 UVC 驱动支持 V 4L 2应 用编程接口, 系统设计中使用的 USB 摄像头为 T op Speed U SB 2 0 C a era UVC 驱动提供支持。 . m , 3 3 V4L2图像采集程序的实现 . V4L2 是 V id eo For L inux Two 的 简称
10、, 是 V id eo Fo r L in ux AP I的第二版本, 是 L inux 下开发视频设备 程序的接口标准, 使用分层方法对所有视频设备的驱 动和应用编 程提 供一 套完备 的接 口规 范 。 基于 V4L 2标准, 视频图像采集处理流程如图 3所示。 3 图 2 系统硬件结构框图 3 系统软件设计 3 1 系统软件平台 . 系统软件 平台以嵌 入式 L inux 和 Q t/Em bedded 为基础, 具体构建步骤为: 在宿主机上建立交叉编译 环境, 完成引导加载程序 v ivi的编译移植, 编译移植 linux 2 6 29 内核, 包括 DM 9000 网卡、 . . 通
11、用 USB 摄 像头和 LCD 触摸 屏等驱动 的移植, 基于 busybox 1 . 13. 3构建文件系统。基于系统设计的需求, 还要完 成 QTE 4 5 3图形库与 tslib 1 4触摸屏支持库以及 . . . lib jp eg库向开发板的移植。 lib jp eg 库主要用于实现 内存中图像数据的编解码, QTE 4 5 3是面向嵌入式 . . 系统的 Q t版本, 采用了 fram ebuffer作为底层图形接 口, 采用 C + 封装, 具有丰富的控件资源和良好的可 移植性, 系 统中的应 用程序 以及环 境都是 基于 Q t / Em bedded来开发的。最终形成基于 A
12、RM 的嵌入式 1 2 L inux 操作系统平台 , 在系统软件平台上可进行嵌 入式应用程序的开发。限于篇幅, 系统软件平台的构 建在此只作简单介绍。 3 2 嵌入式 L inux下 USB 摄像头驱动 . 为了使用 L in ux下 V4L2应用编程接口编写图像 采集应用程序, 在开发板上移植版本为 linux 2 6 29 . . 的内核, 此内核版本支持 UVC 驱动 USB 摄像头, 在 图 3 视频图像采集处理流程图 3 3 1 视频设备结构体初始化 . . 程序中定义一个视频设备的数据结构 struct vde vice 结构体的成员变量是对视频设备和图像属性的 , 描述。 in
13、it_ vdata ( struct vdevice * vdev , char * dev _na e un m , signed int w idth unsigned int he ight int fo r at); , , m 通过参数完成对视频设备结构体变量 vdev的赋 值初始化。视频设备名称 dev_na e 视频图像宽度 m , w idth 视频图像高度 heigh, 视频图像格式 for a, 以 , t m t 及申请分配两个内存缓冲区 fram ebuffer和 rgbbu ffer , 分别为采集到的一帧图像 数据缓冲区和 24位 RGB 图像数据缓冲区。 3 3
14、2 视频设备初始化 . . 函数 in it_vdev ( struct vdev ice * vdev ) 根据参数 2010年第 11期 唐人财等: 基于嵌入式 L inux远程图像监控系统的 设计 33 vdev传递的值对视频设备进行初始化, 这是进行视频 图像采集前必须完成的工作。视频设备结构体 vdev 包含了要设置的设备信息, 初始化视频设备到适合的 图像采集工作方式。视频设备初始化具体实现如下: ( 1) 打开摄像头设备文件。 利用系统调用 函数 vdev > fd = open ( vdev > dev_nam e O_RDWR ) 实现, 该函数的功能是打开参 ,
15、 数 vdev > dev_nam e指定的设备, 对于摄像头用设备 文件名 /dev /v ideo0 表示, vdev > fd 是设备打开后 返回的文件描述符, 在程序中可使用它来对设备文件 进行操作。 ( 2) 查询设备信息和设置采集属性。 在 L inux 编程中, io ct l函数是设备驱动程序中对 设备的 I /O 进行管理的函数, 用户程序一般使用 ioctl 函数来对设备的一些特性进行控制。 调用带 V ID I C _ O QUERYCAP命令参数的 io ct l函 数来取得设备文件的属性参数, 并存储于 struct v4l2_ capab ility 结
16、构体变量 vdev > cap 中, 然后可 逐项验 证 vdev > cap的属性, 看设备是否符合采集的要求。 ioctl( vdev > fd V ID I _QU ERYCAP, & vdev > cap); , OC m em 间建立映射, 调用带 V I I C _QBUF 命令参数的 DO ioct l函数将所申请的设备缓存加入等待输入缓存队 列, 内存映射初始化完成。 3 3 3 采集图像数据 . . 函数 capture( struct vdevice * vdev) 完成一帧视 频图像数据采集, 采集到的视频图像数据存放到设备 缓存 vdev
17、 > bu f中, 通过映射的程序内存空间可处理 视频图像, 函数调用成功返回视频设备采集的图像数 据大小。 在设备缓存加入等待输入队列后, 调用带 VIDI C_ O STREAMON命令参数的 ioctl函数使能视频设备。 type= V 4L2_BU F _TYPE_V IDEO _CA PTURE; ioctl( vdev > fd V ID I _STREAM ON, & type); , OC 图像数据缓存采用 F IFO 的方式, 缓存队列将已 采集到视频图像数据的设备缓存出队列, 此时与之映 射的内存空间就存储了采集到的视频图像数据, 处理 完毕重新使设备缓
18、存加入队列。这个过程需要调用 两次 io ctl函数。 ioctl( vdev > fd V ID I _DQBUF, & vdev > buf) ; , OC ioctl( vdev > fd V ID I _QBUF, & vdev > buf) ; , OC 接着设置视频图像采集格式, 可根据需求修改摄 像头缓冲区中图像参数如分辨率、 格式等。具体方法 为先给 struct v4 l2 _for at结构体变量 vdev > f t分量 m m 赋新值, 再调用 带 V ID I C _S _FMT 命令参数 的 ioctl O 函数完成采集
19、属性的设置。 ioctl( vdev > fd V ID I _S_FM T, & vdev > fm t); , OC 调用带 VIDIOC_DQBUF 命令参数的 ioct l函数使 设备缓存出队列, 利用系统函数 m em cpy 将所采集的 一帧视频图像数据拷贝的所分配的内存空间 vdev > fram ebuffer以 方 便 后 续 图 像 处 理。 然 后 调 用 带 V IDI C _ O QBUF 命令参数的 io ctl函数把设备缓存重新 加入输入缓存队列, 至此完成一帧视频图像数据采集。 系统采用的摄像头初始化为 YUV422图像格式, 图像要在
20、 LCD 上显示, 必须进行图像数据格式转换 处理, 将 YUV422格式转换为 RGB24格式。 yuv2 rgb24 ( vdev > fra ebuffer vdev > rgbbuffer vdev > m , , w idth vdev > he ight); , ( 3) 实现内存映射。 V4L2捕获的数据是存放在内核空间的, 用户不 能直接访问该 段内存, 必须通 过某些手段来 转换地 址。系统采用 mm ap内存映射方式, 把设备内存映射 到用户程序内存空间, 直接处理设备内存, 加速了 I/ O 访问。主要函数调用如下: ioctl( vdev >
21、; fd V ID I _REQBUF S & vdev > rbuf); , OC , ioctl( vdev > fd V ID I _QU ERYBUF, & vdev > buf); , OC vdev > m e i = mm ap ( 0, vdev > bu. length, PROT _ m f READ, M AP _SHARED, vdev > fd vdev > bu.f m. offset); , ioctl( vdev > fd V ID I _QBUF, & vdev > buf) ; ,
22、 OC 函数 yuv2rgb24 将 vdev > fram ebuffer指定 内存 中的 YUV 422图像格式转换为 RGB24格式, 并存放 到 vdev > rgbbuffer指定内存中, 函数实现在 此不作 详细阐述。 3 4 图像数据的 JPEG 编解码 . 网络传输前对原始图像数据进行压缩处理, 利用 IJG( Independent JPEG G roup ) 提供的 lib jp eg 库进行 4 6 图像编解码 。在开源的 libjpeg 库中, 函数必须从 文件或其他 设备流中读取数据, 再将压缩数 据存成 JPEG 文件, 增加了不必要的文件 I/O 操作
23、, 不利于网 络实时传输图像。为解决 该问题, 改写 了 lib jp eg 库 内 jdatasrc c和 jd atads. c两个源代码文件, 设计自定 . t 义的结构体 struct m y_dest_ gr和 struct m y_src_ g r m m , 增加自定义图像数据缓存地址变量、 已处理图像数据 具体实现: 首先, 对 struct v4 l2 _ requestbuffers结 构体变 量 vdev > rbuf 分 量 赋 值, 调 用 带 V I I C _ DO REQBUFS命令参数的 io ctl函 数分配自定义 数量的 设备缓存; 然后, 在循环程
24、序结构中对申请分配的设 备缓存 进行映射, 调用带 V IDIOC _QUERYBUF 命令 参数的 ioct l函数获得设备缓存偏移量和缓存大小并 存于 struct v4l2_buffer结构体变量 vdev > bu f中, 调 用 mm ap在设备 缓存 和程序 内存 空间 变量 vdev > 34 计 算 机 与 现 代 化 2010年第 11期 的偏移量变量和图像大小变量, 并改写 lib jp eg库相关 操作函数, 封装相关的数据结构和成员函数为自定义 的图像编解码类 MY JPEG。实现输入数据和输出数据 的重定向到内存, 利用开源的 libjpeg 库在内存中实
25、现 图像的压缩和解压缩。参照 lib jpeg 库中编解码过程, 实现了类 MYJPEG中压缩与解压缩成员函数。 w r ite e ( unsigned cha r * m m char* m quality); / /图像数据压缩处理 readm e ( uns igned char indata int pSize unsigned char m * , , * outdata); / /图像 数据解压缩处理 outdata int * pS ize unsigned , , indata unsigned int mw idth, unsigned int mhe ight int ,
26、 , 压缩函数中参数可以灵活对压缩图像分辨率大 小和质量属性进行设置, 参数 pS ize 返回压缩后图像 的大小。而解压缩图像时, 压缩图像的大小则通过参 数 pSize传入。 3 5 网络传输视频图像数据 . UDP是非连接的、 不可靠的、 传递数据报的传输 协议, 提供了一种高效无连接的服务。由于 UDP 不 提供数据的可靠性保证, 使其具有较少的传输时延, 很适合实时性高而不要求数据绝对可靠的场合。视 频图像数据实时性强, 数据量大, 所以系统设计采用 此协议传输数据。通过 L inux 下的 socket套 接字编 7 8 11 程 , 实现视频图像的网络传输 。利用 C语言中 的多
27、线程编程, 将网络通信置于一个工作线程, 避免 了 GU I应用程序因网络阻塞等待操作而使图形用户 界面冻结无法响应的问题。系统设计时结合使用互 12 斥锁和条件变量对各个工作线程进行同步 。 嵌入式视频监控终端上采集显示程序作为主线 程, 同时创建一个视频图像发送工作 线程 deal_send ( ) , 用来处理与视频监控中心 PC间的网络通信。具 体过程描述如 下: 调用 socket( ) 函数创建一个 UDP 数据报类型的套接字, 接着调用 bind( )函数, 给套接 字绑定一个端口。视频图像发送工作线程调用 recv from ( ) 函数在指定的端口上阻塞等待客户端发送来 的
28、UDP数据报, 接收到服务请求, 处理该服务请求并 通过 sendto( ) 函数将处理结果返回给 PC 端。 在监控中心 PC 端创建解码显示视频图像工作 线程, 并创 建一个视 频图像接 收工 作线程 deal _re ce ive( ) , 用来处理与视频监控终端的网络通 信。具 体过程描述如 下: 调用 socket( ) 函数创建一个 UDP 数据报类型的套接字, 接着调用 bind( )函数, 给套接 字绑定一个端口。调用 sendto ( ) 函数向监控终端发 送服务请求报文, 调用 recv from ( ) 函数等待并接收服 务应答报文。继续定时发送服务请求直至通信终止。 具
29、体网络传输的通信过程如图 4所示。 图 4 网络传输通信流程 4 视频图像实时显示 系统是一个实时视频图像采集与传输系统, 采集 的现场视频图像在嵌入式视频监控终端和监控中心 PC上实时显示与保存。只要以较快速度显示变化的 图片就可以实时显示现场情况, 系统中利用定时器每 40m s采集一帧视频图像。该远程图像监控系统界面 是通过 QT 来实现的, 在强大的 QT 图形库的支持下, 13 14 可快速开发出友好的图形用户界面 。利用几个 相关 Q t图形类 Q I age QP ixm ap和 QL abe,l 实现视频 m 、 图像的显示和 JPEG格式图片保存。 5 结束语 系统设计方案
30、是一种基于嵌入式 L inux 的图像 采集和传输系统, 本文详细介绍了 V4L 2应用编程接 口进行 USB 摄像头视频图像采集, 基于 QTE 图形库 实时显示视频图像, 利用开源的 lib jp eg 库实现图像 的 JPEG 编解码, 通过网络实时传输进行远程监控。 整个系统数字化、 网络化程度高, 实时性好、 稳定可靠 且图像质量较好。经实验测试, 系统很好地实现对现 场视频图像的监控。在该系统的基础上, 可进一步进 行二次扩展开发, 以便应用在工业现场控制、 远程指 挥监控系统、 可视电话等诸多领域。 参考文献: 1 2 3 赵敏, 杨恢先, 汤安平. 基于 S3C2440的嵌入式
31、 L inux 系统 移植的研究与实现 J. 电子器件, 2008 31( 6): 1947 1950 , . 郑灵翔. 嵌入式 L inux 系统设计 M . 北京: 北京 航空航 天大学出 版社, 2008 . M ichae lH Schi ek V ideo for L inux Tw o AP I Specifica tion m . EB /OL . http: / /v4l2spec bytesex org /v4l2spec / v4 l2. . . pd, 2008 03 04. f (下转第 38页 ) 38 计 算 机 与 现 代 化 2010年第 11期 目标图像中变成
32、 A!B! 因为向前移动了, 所以物体显 , 得比原来要大些。放大的过程应 该是: 逐步 放大左 图, 并适当地截取放大图中跟原来一样大小的一块矩 形区域, 作为一张新的过渡图。至于放大的倍数, 作 8 如下考虑 : 假设 A! 的长度是 AB的 L 倍, 两幅图像之间插入 B! n张过渡图, 则每一张过渡图之间的放大的倍数是 ( L 1) / ( n+ 1)。 速度, 内存优化后系统占用资源更少, 由于不用频繁 申请内存和 释放内存, 减少 了漏洞和错误发 生的几 率; 采用缩放的方法改进了行进间的浏览效果, 提高 了虚拟漫游的沉浸感, 具有一定的实用意义。 参考文献: 1 石云飞, 王永平
33、, 李龙 济, 等. 基于 模板匹配 的柱面全景 图拼接优化算法 J. 工程图学学报, 2005( 1): 96 99. 2 3 4 华顺刚, 曾令宜, 欧宗瑛. 一种快速的柱面全景拼接算法 J. 数据采集与处理, 2006, 21( 4): 435 436. 潘华伟, 邹北骥. 一种圆 柱形全 景图生 成新算法 及其实 现 J. 计算机工程与科学, 2003, 25( 6): 13 16. 吴宪祥, 郭宝龙, 王娟. 基于相位相关的柱面全景图像自 动拼接算法 J. 光学学报, 2009, 29( 7): 1824 1829 . 5 钟力, 张茂 军, 孙立 峰, 等. 360度柱 面全 景图
34、 像生 成算 法及其实现 J. 小型 微型 计算 机系 统, 1999 20 ( 12): , 899 900. 6 7 8 9 赵 辉, 陈 辉, 于 泓. 一 种 改 进 的 全 景 图 自 动拼 接 算 法 J. 中国图象图形学报, 2007, 12( 2): 336 342. 阮 秋 琦. 数 字 图 像 处 理 M . 北 京: 电 子 工 业 出 版 社, 2001. 董 士 海. 虚 拟 现 实 的 未 来应 用 N . 中 国 计 算 机 报, 2001 02 21. 崔汉国, 曹茂春, 欧阳清. 柱面全景图像拼合算法研究数 字图像处理 J. 计算机工程, 2004, 30(
35、6): 158 159. 10 赵万金, 龚声蓉, 刘全, 等. 一种用于 图像拼 接的 图像序 列自 动 排 序 算 法 J. 中 国 图 象 图 形 学 报, 2007, 12 ( 10): 1861 1864. 11 张茂春. 虚拟现实系统 M . 北京: 科学出版社, 2001. 12 明德烈, 柳健, 田金文. 二维平面内的增强现实虚实配准 问题研究 J. 红外与激光工程, 2001, 30( 6): 410 413. 13 蔡勇, 刘学惠, 吴恩华. 基于图像绘制的虚拟现实系统环 境 J. 软件学报, 1997. 8( 10): 721 728 . 14 喻罡. 基于图像的虚 拟场景 构造 和漫 游系统 研究 D . 西安: 西安理工大学, 2002 . 图 6 放大前后的线段 在放大后的图像中央截取一块跟原图像大小相 同的区域, 然而由于拍摄的过程中, 一系列的过渡场 景不可能严格地在一条直线上, 也就是说相邻的中间 图像的中心位置并不重合。如果不加任何处理, 在过 渡的时候实际效果并不平滑, 在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年江苏货运从业资格证考试模拟题库答案解析
- 小学数学二年级第二学期口算计算共3018道题
- 小学数学二年级第二学期口算计算共3029道题
- 儿童科学实验的安全操作规程
- 企业安全风险防控与生产效益的平衡
- 健康管理软件在孕妇保健中的应用探讨
- 健康教育新篇章利用家用杀菌技术解决家庭幽门问题
- 人工智能背景下学生科技素养评价方法探讨
- 创新科技在医疗研究中的IP支持与保障
- 创意无限海报设计的多维思考与实现
- 2023年高二组重庆市高中学生化学竞赛试题
- 2024-2030年中国新鲜果蔬行业市场发展分析及竞争策略与投资前景研究报告
- 物流配送合作协议书范本
- 机械制图(山东联盟)智慧树知到期末考试答案章节答案2024年山东华宇工学院
- 在线网课《马克思主义新闻思想(河北)》单元测试考核答案
- 2024年海南省海口四中高三3月份第一次模拟考试化学试卷含解析
- 人员招聘计划方案
- 南财公共英语3级第三套试卷
- 小学二年级美术上册《节日的装饰》课件
- 夫妻共有房屋出售合同合集3篇
- 康复科出院指导及健康宣教
评论
0/150
提交评论