基于MATLAB的数字视频处理技术
2019-05-09耿小芬
耿小芬
摘 要:MATLAB具有强大的工程计算能力,借助其自带的视频及图像处理工具箱,并结合相关函数,用户可以非常方便地对AVI格式的视频进行分析、计算和数据提取工作,这在数字图像处理中,在对运动物体检测和跟踪等技术领域中具有现实的使用价值。本文通过实际案例验证了MATLAB在视频处理中的强大功能,为处理数字图像提供了科学依据。
关键词:MATLAB;图像处理;AVI
中图分类号:TN941.3 文献标识码:A 文章编号:1672-8122(2019)04-0013-02
1.引言
MATLAB是由Matrix(矩阵)和Laboratory(实验室)两词的前三个字母组合而成,含有矩阵实验室的意思。由美国 MathWorks 公司推出,主要用于数值计算和图形处理的软件。MATLAB 中包括很多工具箱,除了Simulink主模块外, 还包含许多特定领域的模块,主要有:通信工具箱、航空航天模型、计算机视频处理工具箱、控制系统工具箱、数据采集工具箱、EDA仿真、嵌入式编码器等模块,分别涵盖了数据获取、科学计算、控制系统等领域40多个专业领域。除此之外, MATLAB 还具有语法简单、易学易用,能实现面向对象编程,有方便的绘图功能,能方便的交互式编程和强大的扩充能力等特点; MATLAB丰富的函数使开发者无需重复编程,只要简单地调用就能实现强大的功能。[1]因此, MATLAB已经成为目前使用最为广泛的工程应用软件。
2.MATLAB 视频处理简介
MATLAB 的图像处理工具箱功能十分强大, 可以支持多种格式的图像文件,如 *.bmp 、*.jpg、*.gif、*.tiff、*.png等。MATLAB也有很多对图像处理的函数,这些函数按其功能可分为:图像显示、图像文件I/O、几何操作、像素和统计处理、图像分析、图像增强、线性滤波、线性二元滤波设计、图像变换、邻域和块处理、 二进制图像操作、区域处理、颜色映像处理、颜色空间变换、图像类型和类型转换。利用工具箱和这些函数可以很方便的对图像进行处理。
视频处理是对图像处理的一种扩展,MATLAB进行视频分析,首先要能读取单帧图片,然后对图片进行处理分析。[2]近年来视频的广泛应用也促进了图像技术的推广。另外,在图像和视频处理中既要理解原理,还要钻研算法,才能利用图像和视频处理技术解决实际问题。生活中我们经常需要处理一些视频文件,如:从一个AVI文件中提取一幅或者几幅画面。利用 MATLAB 视频及图像处理工具箱,能根据用户需要在视频文件中读取特定数据,实现对指定画面的提取。
3.视频图像提取原理
所谓视频是指将一系列静态图像以电信号的方式加以捕捉、纪录、处理、储存、传送与重现的各种技术。连续的图像以每秒超过24帧的速度播放,根据人眼的视觉暂留原理,就变成了连续的画面,这就是视频。由于视频文件普遍较大,在传输中为了减少存储空间,往往将视频文件以一定的算法进行压缩,不通过专业软件很难将其中的某一幅(帧)画面手工提取出来。通过研究和实验发现,利用 MATLAB 提供的视频及图像处理工具箱,可以很方便的对视频文件中的图像进行操作。
(1)MATLAB中常用的图像处理函数
MATLAB图像处理工具箱中有一些自带的函数,利用这些函数可以方便的实现绝大多数图像的处理。如:imread(读取一幅图像文件)、imshow(显示一幅图像)、colormap(设置图像的色彩映射)、imfinfo(获得一幅图像的相关信息)、imwrite(输出一幅图像)、ind2rgb(将一幅索引图像转变为RGB图像)等等。
(2)MATLAB中与 AVI 视频处理相关的函数
MATLAB 视频处理工具箱中有一些函数,利用这些视频处理函数可以方便地读取 AVI 文件中的数据,获得该文件的相关属性。利用这些属性可以在AVI 文件中提取出用户需要的信息。如:aviinfo(获得AVI视频文件的相关信息)、aviread(读取一段视频)、VideoReader(读取视频文件)、VideoWriter(与一些命令结合使用,以保存视频文件)、WriteVedio(用于向指定的视频文件中添加图片、视频等)。
下面将通过一些例子来简要介绍利用 MATLAB 处理AVI视频的方法。
4.应用举例
(1)在AVI视频文件中提取某一幅画面
AVI是微软公司开发的一种数字音频和视频文件格式,全称是Audio Video Interleaved(视频交错格式),是目前常用的视频文件格式之一,一般用于存储电视、电影等各种影像信息。一个AVI 视频文件可以包含多个不同类型的媒体流,如:音频流,视频流,控制流和MIDI 流。音频流和视频流存储音频数据和视频數据,为了保证视频画面与音频同步,音频流和视频流采用了交错存储的方式;控制流用来控制视频的显示;MIDI 流用来提供视频播放过程中的背景音乐。当然,含有单一音频流或单一视频流的AVI文件也是合法的。[3]
早期版本的MATLAB中读取视频文件时只能用aviread函数,该函数支持的视频文件编码有限。目前,我们可以用视频读取函数VideoReader来读取视频,输入如下代码并运行程序,视频加载并播放。运行完成后在当前目录下生成和视频帧数相同的若干个图片文件。(假设当前文件夹内存储有视频文件viptrain.avi)效果。
%读取视频文件并显示
fileName = 'viptrain.avi'; %定义存储视频变量