【MATLAB】机器视觉与图像识别技术--视觉系统的构成(视频与图像格式说明)
(1)机器视觉系统的组成
-
什么是机器视觉系统
机器视觉系统(Machine Vision System)是一种通过计算机技术和图像处理技术来模拟人类视觉功能的技术系统,简单来说就是利用机器代替人眼来作各种测量和判断。它可以捕捉和处理图像,识别和分析图像中的物体和特征,从而进行检测、测量、识别、引导等任务。机器视觉系统广泛应用于制造业、自动化、机器人、医疗、安防等领域。
传统的机器视觉系统是以硬件为主的设备集成,现有的机器视觉系统在硬件系统的基础上,还包括了算法和软件。 -
机器视觉系统的硬件
分别是 (1)光源 (2)镜头 (3)摄像头 (4)计算机 (5)执行器
(2)辅助光源的认识与选择
辅助光源在机器视觉系统中发挥着至关重要的作用,主要通过提供稳定、均匀的照明来提升图像质量和对比度。它能够增强特征识别,突出物体的边缘和表面缺陷,从而方便图像处理算法的识别和分析。此外,辅助光源还能减少阴影和反射干扰,确保图像的一致性和准确性。在高精度检测中,辅助光源提供一致的照明条件,提高检测结果的稳定性和精度,尤其在微小缺陷检测和高精度尺寸测量中效果显著。总体而言,辅助光源直接影响机器视觉系统的性能和检测结果的可靠性。
简而言之,光照环境是影响机器视觉系统的重要因素,根据特定的应用场景选择相应的照明装置,可以有效改善光照环境,这些照明装置即为辅助光源。
- 辅助光源的选择
辅助光源按不同标准可以分为不同的类型,实际应用过程中主要按照这样的方式进行采购处理:首先辅助光源分为白炽灯、日光灯等类型进行选择,然后根据光照强度确定型号,接着在安装中确定防护装置、照射方法,安装角度等选择,进而完成辅助光源的最终选择。
各种常见的视觉系统辅助光源如下图所示
以轨道交通中的光照环境举个例子
按照不同的轨道交通可以分为地铁室内监测环境、野外的行驶环境。
(1)地铁室内的光照环境包括车站内部和车厢内部,如下图所示。在室内环境下,光照条件可以人为控制,辅助光源的安装和控制相对方便,因此可以构建较为理想的光照环境,辅助光源的选择也较为广泛。然而,在室外环境中,辅助光源通常安装在建筑物上的照明设备上,尽管可以进行一定的控制,但自然条件的影响较为明显。为了在室外构建理想的工作条件,通常通过强光照明来营造亮场环境。辅助光源主要依靠大功率高亮度的射灯,以应对自然光变化带来的挑战。
(2)列车在野外的行驶的选择,在野外的工作环境中自然条件决定着光照环境,野外环境的辅助光,多来自列车上的车载探照灯。受到安全行驶的限制,探照灯无论是光强和照射角度都会受到限制。如下图所示,列车在雪中夜晚行驶,辅助光源就只能依赖列车顶部的探照灯。
在以上的举例中,辅助光源的选择注意问题:首先得保证列车的安全行驶为前提,辅助光的使用要有一定的容错性,当照明设备出故障时,应具有一定的措施,避免完全事故发生。
带尺寸的图片:
(3)机器视觉系统的成像原理
机器视觉系统中采集装置的成像原理就是利用凸透镜的成像原理,如下图所示,机器视觉系统就是模拟人类对图像的思考的过程进行分析计算。
注意认识:(1)成像的颜色出现来源于光源还是反射(2)颜色的亮度受环境的影响。
(4)机器视觉系统的处理核心–视频与图片格式(有转换代码和软件下载)
视频和图像是图像处理技术重要的一个环节,我将从下面几个点详细解释一下:
- 图像格式
数字图像是二维图像用有限数字数值构成的数字单元表示,其中数字单元一般称为像素,因此数字图像由数组或矩阵表示,在摄像头拍摄的图像中,就是一个二维数组存储在计算机里面,每一个像素对应数组中的一个单元,二维数组大小就是图像尺寸的表达方式,下图所示,在计算机查看图片属性。
其中由图片可以得到,分辨率2208×1128表示图像对应的数据矩阵有2208列和1128行,共计有2,490,624个像素点,这样行和列的数目都有固定的格式。对图像的描述一般采用总像素的近似值:如480×640的图像称为30万像素图像,720×1280的图像称为90万或者92万像素图像,以此类推1920×1280就称为200万像素图像。 - 视频格式
视频泛指将一系列静态景象,以电信号的方式加以捕捉,记录处理、存储传输与重现的各种技术,连续的图像变化,每秒超过24帧画面以上时候,人眼感觉就是动画,这样连续的画面就叫做视频。视频在计算机上,是认为是一系列的图像的组合,每一幅图像称为一帧。在视频中一般用"帧率(fps)"这个单位表示视频的格式每秒秒钟的播放的静态画面数量。PAL和SECAM的帧率都为25fps,NTSC为29.97fps,电源胶卷为24fps。理论上达到最基本的视觉停留效果大约需要10fps的速度。 - 视频转换为图像
视频中的每一帧图像大小称为"分辨率",分辨率的大小为帧宽度乘以帧高度,如下图所示:像素越高,分辨率越高,画面越细腻。
要想视频转换为图片,有两种途径:
(1)在MATLAB中,就有可以解帧的代码,利用命令窗口,读取视频路径,计算好视频总帧数,就可以有效实现转换,代码如下:
% 读取视频文件并保存到mov结构体中
mov = VideoReader('D\视频名称.mp4'); % 将××.mp4视频文件读入MATLAB中,并用名为mov的结构体保存
% 获取视频的总帧数
fnum = mov.NumberOfFrames; % 获取视频帧数
% 初始化图片顺序编号
imgOrder = 0; % 图片按顺序编号,从0开始
% 循环遍历每一帧并保存为图片
for i = 1:1:fnum % 从第1帧开始,逐帧处理直到最后一帧(步长为1)
% 读取当前帧的图像数据
Img = read(mov, i); % 读取第i帧;每次读取一帧以防止内存不足
% 将当前帧的图像数据保存为jpg格式的图片文件
% 文件名格式为"img_000x.jpg"可更改,其中x为图片编号,格式化为4位数字
imwrite(Img, ['D:\视频名称/img_', sprintf('%04d', imgOrder), '.jpg']); %4位数字可自行更改
% 输出当前的图片编号
j = imgOrder;
% 更新图片顺序编号
imgOrder = imgOrder + 1;
end
(2)第二个就是采用软件进行解帧图片,一般采用的解帧软件是 Free Video to JPG Converter软件,转换图片格式为.jpg。软件下载可以加QQ群自行下载934728240,备注解帧软件即可。软件界面如下所示,右上角表示的是读取视频的运行时长,中间表示自己的需求,多少帧提取一次图片,总提取多少帧图片,软件内部会帮你分配好,最后面就是图片保存路径。
(5)总结
最后,希望这些能够让大家对机器视觉系统有一个好的了解,本人第一次写,写的不好,有很多不足,如有错误希望各位同仁能够指正,如有违权,请及时联系我删除,如果写的还可以,希望各位大佬给出一个免费的小赞[非常感谢],给予一下鼓励,和写下去的信心(真的很需要)。