视频图像分析处理流程(完整版)

news2024/9/23 22:15:13

来源:投稿 作者:LSC
编辑:学姐

一、视频分析处理的完整流程

(1)视频编解码的入门知识

尽管压缩工具五花八门,但是他们的目的都只有一个:都是为了减小文件的占用空间

除去我们常见的.zip,.7z,.rar等格式外,其实我们接触的.mp3,.mp4,.AVI等格式也都有着压缩的作用。只不过和.zip这样的专有的压缩格式相比他们执行的是有损压缩。

为什么要进行视频压缩呢? 因为未经压缩的数字视频的数据量巨大;储存困难:一张DVD只能储存几秒钟未压缩的数字视频。

(2)为什么可以压缩

压缩的本质就是——去除冗余信息:

  • 空间冗余:图像相邻像素之间有较强的相关性

  • 时间冗余:视频序列的相邻图像之间内容相似

  • 编码冗余:不同像素值出现的概率不同

  • 视觉冗余:人的视觉系统对某些细节不敏感

  • 知识冗余:规律性的结构可由先验知识和背景知识得到

(3)数据压缩分类

无损压缩(Lossless)

  • 压缩前解压缩后图像完全一致X=X'

  • 压缩比低(2:1~3:1)

  • 例如:Winzip,JPEG-LS

有损压缩(Lossy)

  • 压缩前解压缩后图像不一致X≠X'

  • 压缩比高(10:1~20:1)

  • 利用人的视觉系统的特性

  • 例如:MPEG-2,H.264/AVC,AVS

(4)Intel Media SDK概述

Intel Media SDK是开发专业的视频和媒体应用程序。在适用于Windows和Linux的应用程序中提供硬件加速的视频编码、解码和处理。

SDK主要目的是为了简化开发:

使用此SDK中包含的库、工具和示例,为数字监控、零售、工业、智能家居、视频会议等开发专业级媒体和视频应用程序,并支持硬件加速,可实现快速视频转码,图像处理和媒体工作流程。

(5)图像预处理

图像预处理的目的:

图像预处理,是将每一个图像分检出来交给识别模块识别,这一过程称为图像预处理。在图像分析中,对输入图像进行特征抽取、分割和匹配前所进行的处理。

图像预处理的常用方法:

图像预处理的主要目的是消除图像中无关的信息,恢复有用的真实信息,增强有关信息的可检测性和最大限度地简化数据,从而改进特征抽取、图像分割、匹配和识别的可靠性。

(6)图像预处理的常用方法

图像分析中,图像质量的好坏直接影响识别算法的设计与效果的精度,因此在图像分析(特征提取、分割、匹配和识别等)前,需要根据图像识别任务的不同进行预处理。

常见的图像预处理方法包括:

图像颜色空间转换、图像二值化、图像滤波、图像金字塔、图像ROI、几何变换、形态学变换、图像边缘检测等,这里主要介绍图像ROI以及图像几何变换中的缩放这两种方法。

图像ROI区域概述:

ROI(Region Of Interest),指图像分析中感兴趣的区域。只要找到这个ROI区域,那么需要处理的图像就由原来的大图变为一个小图像区域,可以减少处理时间,增加处理精度。以人脸识别为例,图像中待检测的人脸就是感兴趣区域(ROI)。提取ROI区域可以说是计算机视觉中必不可少的操作。

ROI提取(切片操作)

在一个行人监控场景中,摄像机是固定的,相机对着门。当有人出现时,保存当前行人。我们感兴趣的是行人,其他的是背景,背景变化不大没有必要保存(节约储存空间),门框在原图像中的位置是固定的,并且行人出现在门框中。在该场景中,可以使用切片操作提取门框。假设门框左上角在原图像中的坐标为(200,300),门框宽100,高200。

可以使用如下所示代码提取门框:

图像缩放:

图像缩放是指将一副图像放大或缩小得到新图像。对一张图像进行缩放操作,可以按照比例缩放,亦可指定图像宽高进行缩放。放大图像实际上是对图像矩阵进行拓展,而缩小实际上是对图像矩阵进行压缩。放大图像会增大图像文件大小,缩小图像会减小文件体积。

模型推理部署的挑战:

  • [1]深度学习框架种类繁多:业界广泛使用的深度学习框架有许多,例如Caffe,TensorFlow,MXNet,Kaldi,PyTorch等。

  • [2]性能与功耗的限制: 深度学习网络的训练是在数据中心或服务器中进行的,而推理则可能在针对性能和功耗进行了优化的嵌入式平台上进行。使用原始训练框架进行推理,从软件角度(编程语言,第三方依赖关系,内存消耗,支持的操作系统)和硬件角度(不同的数据类型,有限的功耗)来看,此类平台通常都受到限制,因此通常不建议这样做(有时甚至是不可能的)。

  • [3]复杂性高: 针对上述两个难点有一种替代解决方案是使用针对特定硬件平台进行了优化的专用推理API。但是由于部署过程的其他复杂性包括支持越来越复杂的各种层类型和网络,导致确保变换网络后的模型准确性不受大的影响并非易事。

(7)模型部署的工作流程

DLDT是Deep Learning Deployment Toolkit英特尔®深度学习部署工具包的缩写,其主要用于神经网络的推理。

部署训练完成的深度学习模型完整工作流程因受到应用场景需求、精确度以及硬件设备等诸多因素的影响较为复杂。

这里只介绍一种模型部署的典型工作流程:

(8)模型部署的典型工作流程

  • [1]针对特定框架配置模型优化器(用于训练模型)。

  • [2]运行模型优化器,以基于训练后的网络拓扑,权重和偏差值以及其他可选参数,生成模型的优化中间表示(IR)。

  • [3]在目标环境中使用提供的Inference Engine示例应用程序,使用Inference Engine对IR格式的模型进行测试。

  • [4]将Inference Engine集成到您的应用程序中,以在目标环境中部署模型。

二、视频后处理

在图像处理中,经常需要将某个感兴趣区域用图形标注出来,特别是在物体检测、物体追踪技术中,绘图几乎是每个程序必不可少的功能。OpenCV提供了一些绘图函数,可以满足在图像中绘制直线、圆、矩阵、多边形、字符串等功能。

点击下方卡片关注《学姐带你玩AI》🚀🚀🚀

500+篇CVPR论文资料👉回复“CVPR”领取 

更多算法技术干货、深度学习经验分享、AI前沿资讯等你来看

码字不易,欢迎大家点赞评论收藏!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/187656.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis框架如何实现数据查询?有几种方法?

在实际开发中,查询操作通常都会涉及到单条数据的精确查询,以及多条数据的模糊查询。那么使用MyBatis框架是如何进行这两种查询的呢?接下来,本小节将讲解下如何使用MyBatis框架根据客户编号查询客户信息,以及根据客户名…

【前沿技术】在安全且可靠的区块链基础设施中运行业务条线应用

发表时间:2022年4月27日 信息来源:coingeek.com 了解特定企业的业务需求将使你能够构建出一个可扩容的业务条线应用,它将按照你想要的方式进行运作,并在不可篡改的BSV区块链中保存相关记录。 大多数企业都有一个业务条线&#xf…

《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识

1.简介 有的小伙伴或者童鞋们可能会好奇地问,不是讲解和分享抓包工具了怎么这里开始讲解HTTP和HTTPS协议了。这是因为你对HTTP协议越了解,你就能越掌握Fiddler的使用方法,反过来你越使用Fiddler,就越能帮助你了解HTTP协议。 Fid…

HashMap原理分析

HashMap原理分析JDK7 HashMap1、模型介绍2、底层实现原理3、描述一下put的过程4、HashMap扩容机制:5、HashMap中的循环链表是如何产生的6、HashMap和HashTable的区别7、HashMap为什么用红黑树而不用B树?JDK8 HashMapJDK7 HashMap 1、模型介绍 HashMap在…

18. time和calendar模块

当代码中需要使用到时间时,我们通常会使用time模块来获取当前时间或者时间戳。 时间戳:从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。 1. 时间戳 获取当前时间戳: import timeprint(time…

Springboot+vue预约上门维修服务系统

前端技术:nodejsvueelementui一般是采用前后端分离模式, 后端支持python/php/java/nodejs MTV模式 M:model,模型,负责与数据库交互 V:view,视图是核心,负责接收请求、获取数据、返回结果 T:template&…

并发编程学习(八):ReentrantLock特性、哲学家吃饭问题

ReentrantLock 是java.util.concurrent.locks包下的类。相对于synchronized,它具备如下特性:可中断。可以设置超时时间。可以设置公平锁。支持多个条件变量。即可以有个多个waitset等待队列。与synchronized都支持可重入。ReentrantLock的基本语法:// 获…

c++11 标准模板(STL)(std::multiset)(二)

定义于头文件 <set>template< class Key, class Compare std::less<Key>, class Allocator std::allocator<Key> > class multiset;(1)namespace pmr { template <class Key, class Compare std::less<Key>> using…

Day12【元宇宙的实践构想01】—— 元宇宙概念和发展历程

&#x1f483;&#x1f3fc; 本人简介&#xff1a;男 &#x1f476;&#x1f3fc; 年龄&#xff1a;18 ✍每日一句&#xff1a;【道固远&#xff0c;笃行可至&#xff1b;事虽巨&#xff0c;坚为必成】 &#x1f6a9; 今日留言&#xff1a;亮亮被迫去练科目二啦&#xff0c;定时…

K8S架构熟悉及日常操作

目录 一、架构介绍 二、组件介绍 三、调度介绍 四、CLI指令介绍 五、常见CLI指令 六、常见问题排查思路 一、架构介绍 Kubernetes系统架构为客户端/服务端&#xff08;C/S&#xff09;架构&#xff0c;Master作为服务端&#xff0c;Node作为客户端。 Master服务端也被称…

学习逆向安全的必备基础: 汇编的初步了解

什么是汇编 汇编语言是一种低级编程语言&#xff0c;它使用简单的助记符来表示计算机底层的机器指令。 汇编语言是直接与计算机硬件交互的&#xff0c;它能够控制计算机中的每一个细节。 由于汇编语言非常低级&#xff0c;所以编写汇编程序通常比较困难。不过&#xff0c;汇…

微信怎样开发小程序【公司企业小程序开发】

现在很多公司企业都有自己的小程序&#xff0c;没有小程序的公司企业也会寻找开发小程序的途径。那么今天就给大家简单介绍微信怎样开发小程序&#xff0c;希望对需要开发小程序的公司企业有帮助。 一、注册小程序账号 有一个小程序账号是必须的&#xff0c;小程序账号可以在…

那些外贸老鸟们都在认真使用的8个实用小工具

在我们日常的外贸工作中&#xff0c;有很多地方都可以用到一些实用外贸小工具去提高工作效率&#xff0c;突破局部限制。是否能够灵活的应用这些实用外贸小工具&#xff0c;是一位成熟优秀外贸业务员的衡量标准之一。第一个&#xff1a;知识信息整理和CRMhttps://www.notion.so…

Linux(六)基础I/O

引言 C语言进阶 文件管理 上一篇文章详细回顾了C语言方面关于文件操作的一些库函数&#xff0c;比如输入输出重定向fscanf、fprintf&#xff0c;对于文件内容以字符形式读取的fgetc、fputc&#xff0c;对于文件内容以字符串形式读取的fgets、fputs&#xff0c;对于二进制文件的…

ieee会议论文从手稿到发表

0. 前言 在创新点得到认可之后就可以准备发论文了&#xff0c;这个一定要早点&#xff0c;可以给自己设置一个明确的deadline&#xff0c;毕竟ddl是第一生产力。 1. 确定发什么期刊、会议 一定要符合学校的毕业要求&#xff0c;有一些水的学校并不认。时间看能不能赶上学校毕…

物联网智慧消防对比传统消防具有哪些优势?

随着科技的进步和城市化进程的加快&#xff0c;传统消防已经满足不了社会发展的需求&#xff0c;智慧消防应运而生&#xff0c;目前智慧消防已经成为消防安全管理的核心&#xff0c;物联网时代的到来&#xff0c;让智慧消防迎来了更大的发展机遇&#xff0c;变得更加智慧化、系…

手机网站建设怎么做?【手机网站制作】

对于很多公司企业来说&#xff0c;做网站建设都是优先考虑PC端的网站建设&#xff0c;但是某些公司企业可能对于PC端网站的需求不高&#xff0c;倒是更有需要做移动端网站&#xff0c;也就是我们常说的手机网站。那么关于手机网站建设又是怎么做的呢&#xff1f;本文给大家做一…

软件测试员年底总结怎么写?所有问题都帮你梳理好了!

临近年底&#xff0c;很多公司都有年终总结环节&#xff0c;核心目的发现今年的不足&#xff0c;进而总结经验&#xff0c;更好地用以指导明年的工作。当然&#xff0c;即使公司没有要求&#xff0c;对于测试岗位来说&#xff0c;一年一度的总结不可或缺。假如你是测试负责人&a…

<使用Python自定义生成简易二维码>——《Python项目实战》

目录 1.问题导引 2.实现步骤 &#xff08;1&#xff09;查找并安装第三方库qrcode &#xff08;2&#xff09;编写代码并嵌入内置信息 &#xff08;3&#xff09;使用扫码工具读取信息 后记&#xff1a;●由于作者水平有限&#xff0c;文章难免存在谬误之处&#xff0c;敬…

【Tkinter】终于把StringVar讲明白了

文章目录简介Label使用StringVarEntry输入简介 初学者在使用tkinter时常犯的一个错误就是 def changeText(evt):evt.text "new Text"毕竟在创建控件时&#xff0c;text是出现频率很高的参数&#xff0c;换言之&#xff0c;我们会默认控件中有text这个属性&#xf…