集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1722|回复: 0

Android的MJPEG网络摄像机设计

[复制链接]
zhiweiqiang33 发表于 2014-7-24 09:54:36 | 显示全部楼层 |阅读模式
1 系统硬件组成与网络架构
摄像机硬件核心采用三星公司推出的基于ARM9架构的S3C2440A芯片,该处理器主频达到400 MHz可以满足实时压缩,MJPEG视频流可以达到320×240分辨率25 fps的性能要求。外围搭配64 MB SDRAM、256 MBNAND Flash,网络功能由DM9000以太网MAC控制芯片负责,摄像头模块由USB控制器控制,系统供电由3片LM71117组成,分别输出3.3 V、1.8 V、1.25 V电压,辅助外围接口构成摄像机硬件结构。S3C2440A系统硬件框。

其中主要实现如下功能。
①初始化Linux V4L2接口,必须按照V4L2标准结构初始化结构体,其中包括struct v412_capability cap;struct v412_format fmt;struct v412_buffer buf;struct v412_requestbuffers rb;struct v412_streamparm setfps。此外将视频设备名、视频宽度、视频高度、帧率、视频格式和抓取方法传递给函数init_videoIn(struct vdIn*vd,char*device,int width,intheight,int fps,int format,int grabmethod)实现初始化。值得注意的是众多USB camera并不支持JPEG格式视频流直接抓取,针对YUYV格式抓取却有广泛支持。后期进行图像识别算法操作时直接分析YUYV原始图像数据,将节省JPEG压缩数据转换为原始图像数据的大量运算开销,因此采用YUYV抓取模式。
②创建核心图像处理线程。在该线程内实现:抓取功能。
UVC设备单帧抓取,uvcGrab(struct vdIn*vd)函数实现单帧YUYV格式的原始图像拷贝到内存,采用高效的mmap内存映射方法读取;
JPEG核心算法实现,JPEG压缩算法占用大量CPU时间,下一小节将详细讨论。
③创建套接字接口。为实现多用户同时连接网络摄像机,必须采用socket服务线程,每当有新用户连接同时产生一个新线程与之对应,实现多用户端同步监控。
④搭建基于Web浏览器访问方式的Web主页。嵌入式设备资源有限,轻量级的Web Server主要有:Boa、Httpd、Thttpd等。本设计选用开源的Boa、交叉编译Boa源码配置boa.conf文件,配置系统etc自启动shell加入Boa程序,将编写HTML页面文件放入系统中对应的www目录后即可正常工作。
2.2 MJPEG压缩算法研究与实现
MJPEG(Motion Joint Photographic Experts Group)视频编码格式,把运动的视频序列作为连续的静止图像来处理,这种压缩方式单独完整地压缩每一帧,编辑过程中可随机存储每一帧,可进行精确到帧的编辑。MJPEG单帧压缩算法为JPEG(Joint Photographic Experts Group)。人眼视觉生理特性决定眼睛对构成图像的不同频率成分具有不同的敏感度。JPEG压缩是有损压缩,但损失的部分是人类视觉不容易察觉到的部分,利用眼睛对色彩域中的高频信息部分不敏感的特点,节省大量需要处理的数据信息。一帧原始图像数据对其进行JPEG算法编码过程分两大部分:
①空间冗余度,去除视觉上的多余信息;
②结构(静态)冗余度,去除数据本身的多余信息。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-4-29 18:52 , Processed in 0.083124 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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