登录
首页 » Others » Visual C++音频视频处理技术及工程实践(含源码2/2)

Visual C++音频视频处理技术及工程实践(含源码2/2)

于 2021-10-30 发布
0 250
下载积分: 1 下载次数: 1

代码说明:

本书共16章,分为4篇,详细讲解了使用各种软件和平台进行音、视频多媒体编程的技术,以案例为对象展示实现过程、分析技术难点。主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发视频、MMX/SSE进行多媒体汇编编程、DM642 DSP进行音视频算法优化和主流视频算法MPEG-4/H.264的编码原理及工程实践。本书系统地介绍Visual C++ 2005进行流媒体编程的基本思路和方法,采用案例为主的叙述方式,将大量的技术理论融入具体的案例剖析中。采用的案例均来源于作者实际开发工作,具有很好的实用价值,可以帮助读者在开发中进行参考或直接应用。 第1篇 开发基础 1 第1章 数字音视频开发技术基础 3 1.1 数字音视频基本概念 4 1.1.1 数字音频技术基础 4 1.1.2 各种数字音频文件格式基础 4 1.1.3 视频的相关基础概念 8 1.1.4 常见的视频文件格式 8 1.2 数字音视频数据的编解码技术 10 1.2.1 音频数据的编解码 11 1.2.2 视频数据的编解码 13 1.2.3 音视频编码的相关标准 13 1.3 音视频处理平台的选择 15 1.3.1 个人多媒体计算机 15 1.3.2 嵌入式处理器ARM 16 1.3.3 数字媒体处理器DSP 16 1.4 音视频开发的典型应用 16 1.4.1 个人消费类电子产品 16 1.4.2 公共领域的音视频应用 18 1.5 常用音视频开发工具 21 1.5.1 DirectSound音频开发 21 1.5.2 DirectShow视频开发 21 1.5.3 DSP CCS算法开发 22 1.6 本章小结 23 第2章 Visual C++ 2005开发基础 25 2.1 Visual C++ 2005新增特性 26 2.1.1 句柄(Handles) 26 2.1.2 类型的声明 26 2.1.3 对代码编辑的改进 27 2.2 VC能做的事情 27 2.2.1 生成传统的控制台应用程序 27 2.2.2 生成基于MFC的应用程序 32 2.2.3 生成静态链接库 40 2.2.4 生成动态链接库 41 2.3 利用向导完成基本开发 46 2.3.1 生成应用程序 46 2.3.2 生成应用库LIB/DLL 53 2.4 MFC编程基础 56 2.4.1 Windows消息与事件 56 2.4.2 消息与事件的响应 63 2.4.3 常用消息 66 2.5 基于对话框的编程 68 2.5.1 创建和编辑对话框 68 2.5.2 对话框种类 75 2.6 常用控件使用技巧 79 2.6.1 按钮类控件的使用 80 2.6.2 文本可编辑类控件的使用 81 2.6.3 静态类控件的使用 82 2.6.4 其他控件 83 2.7 Visual 2005开发技术资源 84 2.7.1 MSDN在线帮助 84 2.7.2 丰富的网络资源 86 2.8 Visual 2005开发的常见问题 86 2.8.1 如何使用volatile和const_cast 86 2.8.2 如何构造unicode版本的程序 87 2.8.3 如何使用.def文件 87 2.8.4 如何正确编写Win32 DLL 87 2.8.5 如何编写和使用资源DLL 88 2.8.6 如何实现对话框的数据交换 88 2.9 本章小结 89 第2篇 音频开发 91 第3章 DirectSound开发基础 93 3.1 Microsoft DirectSound SDK 94 3.1.1 比较DirectSound与DirectMusic 94 3.1.2 DirectSound SDK能做什么 95 3.1.3 如何获取DirectSound SDK 96 3.1.4 DirectSound SDK的基本结构 98 3.1.5 Directsound SDK安装 100 3.1.6 选择最适合用户的DirectSound SDK 100 3.1.7 用DirectSound进行编程的必要步骤 102 3.2 DirectSound的详细使用方法 103 3.2.1 DirectSound设备对象 104 3.2.2 DirectSound缓冲区对象 107 3.2.3 使用WAV数据 114 3.2.4 使用音效 116 3.3 开发环境配置 118 3.3.1 Visual C++基本开发环境配置 119 3.3.2 DirectSound应用程序的开发环境配置 119 3.3.3

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • 16-17年全国研究生数学建模竞赛优秀论文集
    本人收集的16-17年全国研究生数学建模竞赛优秀论文,以供参赛人员下载参考。
    2021-05-06下载
    积分:1
  • 随机信号分析实验离散随机变量的仿真与计算(验证性实验)
    实验1 离散随机变量的仿真与计算(验证性实验) 1实验2 离散随机信号的计算机仿真(验证性实验) 5实验3 随机信号平稳性分析(验证性实验) 8实验4 实验数据分析(综合性实验) 10实验5 窄带随机过程仿真分析 (验证性实验) 11实验6 高斯白噪声通过线性系统分析(综合实验) 13
    2020-12-09下载
    积分:1
  • 东北大学数值分析试验
    东北大学数值分析试验东北大学数值分析试验东北大学数值分析试验东北大学数值分析试验东北大学数值分析试验东北大学数值分析试验东北大学数值分析试验东北大学数值分析试验东北大学数值分析试验东北大学数值分析试验东北大学数值分析试验
    2020-11-30下载
    积分:1
  • 图像清晰度评价函数
    matlab 图像清晰度评价调用程序,以图像锐度函数为基准判断
    2020-12-11下载
    积分:1
  • 雷达目标跟踪
    雷达的目标跟踪,卡尔曼滤波,航迹相关。雷达导航运动目标
    2020-12-01下载
    积分:1
  • matlab实现三维点云三角化
    读取三维点云数据,并利用这些数据由crus算法形成三角网格,从而完成三维图形的绘制
    2020-05-29下载
    积分:1
  • VS2010+MFC 使用WinAPI实现串口通信
    Win7x64下的MFC中不可调用MSCOMM控件。所以在MFC下使用WinAPI来实现串口通信,亲测可用。
    2020-11-28下载
    积分:1
  • SPH计算实例
    SPH 的经典案例,方便大家进行学习和交流,希望对大家能够对SPH方法的学习有所帮助
    2020-11-28下载
    积分:1
  • 双踪虚拟示波器 LabVIEW+PCI采集卡
    LabVIEW做得示波器上位机,双通道,自带信号源,有调幅、调频、数据存档,读取数据等功能,也可通过PCI采集卡测量外部信号,具有十分完善的示波器功能。
    2020-12-01下载
    积分:1
  • 视频中背景建模目标检测综述(北京大学)
    基于视频的移动目标检测是一个重要且有挑战性的任务,在许多应用中都起到相当关键的作用。本次论文研读围绕该主题展开,深入阅读了十余篇论文,在本文总结了视频中移动目标检测的一些主要方法及各自的优劣。报告接下来的部分组织如下:第二节介绍一般问题的陈述及典型的应用,第三节与第四节分别介绍基于像素的移动目标检测方法与基于区域的移动目标检测方法,第五节进行简单的讨论与总结。2问题陈述及应用一般而言移动目标检测并不单独地构成应用,而是作为一个组件出现在许多实际的应用之中。故移动目标检测的具体要求随着应用的改变而有很大的不同。例如对足球场上球员及足球的检测与跟踪就和对视频中用户手势的跟踪有所不同,前者的关键在于如何应对复杂的光照变化有效提取运动物体,后者的难点则在于如何从整个躯休大范围的运动背景中将手势的运动识别并提取出来。尽管不同的应用可能提出不同的技术上的要求,但是相当一部分这类问题还是可以在同一的框架下进行探讨和比较的。以下就是本文讨论范围内一般问题的陈述( Figure1):a.高层次的模型一般具有检测、跟踪、识别三个模块,其中识别模块并不必须b.检测模块可细分为移动日标区域检测与移动目标分组,其中前者是这个模块能够顺利工作的保证,其日的是将各帧内移动日标所在的区域标出该模型的输入为连续的视频,输出为跟踪的物体(即轨迹)或分类的物体,DetectioTrackingbackgroundObject detectionMatching usingFramescolor texture andTrackedsubtractionusing contoursmotion featuresobiectsGr。 up handling(merging andlittonFigure1系统框架图中即为一个典型的流程图,其中省略了分类模块并把运动目标区域检测规定为背景差分方法。该模型的典型应用场景是室内外的视频监视分析( Figure2),特别是交通数据的分析。另外体育运动视频(如足球或台球)的分析也能在该模型下解决。Figure2移动目标检测的典型应用:视频监控本文讨论的就是这样一个系统之中移动目标检测部分内容,并且将重点放在了如何判定移动目标区域的部分。这是这样的系统中的最初的处理,对于之后的处理能否获得有效的信息至关重要。该内容主要涉及两个问题:如何提取运动的前景,及如何建立一个良好的背景模型。后者一般并不是应用任务中所要求完成的,但往往是用以提取运动前景很好辅助工具,将新的一帧“减去”背景即可获得移动前景,故同时具有这两个步骤的方法也被称为“背景差分”,是移动目标检测中的一大类主流方法,本报告中涉及的大部分方法即属于这一类3基于像素的移动目标检测31均值-阈限方法均值-阈限( Figure3)的基本思路是计算每个像素的平均值和标准差作为它的背景模型Mean 2*Avg DiffMean”Mean-2*Avg DiffFigure3均值-國限方法4图中为某视频中单个像素在一定时间内不断更新得到的平均值和平均差值3,该像素处在天空的位置,在一段时问后有人的手挥过该区域,可以看到由于前景目标明显不如背景中的天空明亮,所以可以很容易将其分辨出来实际上均值-阈限方法就是赋予视频中每个像素一个统计上的背景模型,例如高斯分布模型4。每个点需要两个参数来衡量:均值与方差。后面将看到,许多更先进的棊于像素的移动目标检测方法其实无非采用了更复杂的分布模型来描述每个像素32阴影去除及三高斯模型简单的帧差值或均值-阈限方法在很多应川中都面临一个很严重的问题:阴影。在某些光照条件下,移动物体产生的阴影相对背景具有非常显著的差别从而被识别成了前景,有时这些阴影比物体本身还人,并且导致原本独立的运动物体连接在一起无法分割。一种简单的思路是放弃使用灰度值进行背景建模,而采用颜色信息从而将阴影的移动去除掉。这类方法需要一条假设:移动目标投射到路面上的阴影主要改变了该位置的亮度而对色度没有大的影响°。部分情况下确实可以承认该假设。在不同的颜色模型下有不同提取亮度信息的方式。在HSV等空间中这个任务尤为简单,因为亮度本身就是一个独立的分量,所以在该分量以外的维度上进行背景建模与差分就能消除一定的阴影。如果在常用的RGB颜色空间中,亮度的提取就稍微复杂倒。Figure4RGB空间中的亮度与色度3类似标准差的作用,但是计算更快捷。C.R. Wren, A Azarbayejani, T. Darrell, and A P Pentland "pfinder Real-Time Tracking of the human body lEEETrans. Pattern Analysis and Machine Intelligence, vol. 19, no. 7, pp. 780-785, July 1997J.M. Alvarez, A Lopez, and r Baldrich, " Illuminant-Invariant Model-Based Road Segmentation",IEEE IntelligentVehicles Symposium, June 20085将一个像素的颜色值在RGB三维空间中表示( Figure4),背景建模就是确定了穿过原点的一条色度直线,所有在该直线上的颜色都认为是背景色。当前颜色相对参考颜色(背景)的亮度分量a1由最小化下式给出:φ(a;)=(l1-c1E)2a2表示该像素当前值相对参考背景色的相对亮度。如果其值为1则代表亮度相同,大于1代表比背景更亮,小于1代表比背景更培当前颜色到色度直线的垂直距离就表小色度的偏离:CD1=‖l2-aE1‖(3)利用色度与亮度的偏离值就可以将新的颜色值分为四个类别Forground: CDi> IcD or ai> Alow, elseM()Back ground:aτa2else(4)ShadowelseHighlightotherwise其中CD2与a分别代表均一化之后的两个偏离分量。这些方强烈依赖于上面提到的假设:阴影仅仅改变背景亮度而不改变色度。但是这个假设实际上并不总是有效,很多时候还需要更复杂的方法达到去除阴影,鉴别真正移动目标的目的。三高斯模型4就是针对去除阴影的考虑提出的。这个模型中采用三个高斯分布相结合( Figure5)对各像素进行建模。三个高斯成分分别为:道路、运动前景及阴影。这三个成分组合成为了完整的混合模型(b)和印甲品f叫intersity valeFigure5三个高斯分布相结合6此方法之后面临的主要问题是如何通过一定时间的学习获得每个高斯分布的参数从而建立有效的模型。相关文献中提出采用EM算法( ExpectationMaximization Algorithm)进行学习。EM算法是一个迭代的算法,通过有限步的迭代就能够获得较好的模型估计。一般而言,为了从一个数据集中获得该数据集满足的混合分布,可以采用最大后验概率估计的方法进行估计,但是这样的方法需要关于每个数据分类的信息(即每个值属于哪个类别)。然而在移动目标检测过程中往往都是无监督的学习从而不可能获得这样的分类信息,而只能自动设定个预先的分类,然后通过迭代不断改进,这就是EM算法的基本思路另外,由于各点的数据是不断改变的,于是采川原始的EM算法对每一帧都进行重复的迭代既不必要也不现实,可以采用EM算法的一个变种:增量EM算法33高斯混合模型(GMM331背景建虞在某些场景之下,采用三个高斯分布的混合模型仍然无法有效地描述复杂的现实环境,于是髙斯混合模型四被提出了。高髙斯混合模型采用类似3.2中三个髙斯模型的思路,希望采用多个高斯分布相结合的方法来描述环境。与前面的模型不同的是,现在高斯分布的个数不是固定的一个或三个了,而是随着各个像素实际的需要动态地进行设定。另外该方法也放弃采用费时的EM算法而采用更快捷的方式进行背景建模与更新。假设已知像素(xo,y)在过去一段时间中的颜色值或灰度值{X1,…,X}={(xo,yo,):1≤i≤t(5)若由K个高斯分布的高斯混合模型对该像素进行建模,则新观察到一个颜色值或灰度值的概率为P(x1)=)o*n(x,,E(6)在RGB等彩色空间中为了简化计算可以采用如下公式k,t7)A Dempster, N. Laird, and D. Rubin, "Maximum Likelihood from Incomplete Data via the EM algorithm", Journalof the Royal Statistical Society, pp. 1-38, 1977这个公式假设了各个颜色分量是相互独立的。尽管事实并不如此,但这样计算在保留充分的精确性的同时大大降低了计算复杂性。这样每个像素就采用κ个峰的髙斯混合模型完成了建模。剩余的问题同样是如何对模型中的各个参数进行估计,以及如何判别前景。3.3.2背景更新背景更新大致有这几个步骤:a.每一个新的值都与所有K个高斯分布进行匹配,直到找到充分吻合的分布(判断方式与均值-阈限方法类似)b.若新的值与所有K个分布都不接近,则将K个分布中权值最小的一个替换成一个新的分布,该分布以新的值为均值,并且具有很高的初始方差和很低的初始权重;C.若新的值与某个分布充分接近,则认为其属于该分布并更新各个分布的权值及参数Ort=(1-aOKt-1+aM(8)=(1-p)ut-1+p·X(9)=(1-p)21+p(X-1)(x-2)(10)here(kok(11)其中(8)式中Mkt对于匹配上的分布唯1,对于其他分布为0α表示适应性的强弱,α越大,给予新的值的权重越大,也就适应得越快;(9)式(10)式仅针对匹配上的分布,而其他分布的参数保持不表3.3.3前景检测运动前景的检测主要有以下几个步骤a.对所有的高斯分布按照ω/σ进行从大到小的排序;b.取前B个高斯分布,满足B= argminkT(12)k=其中T表示背景应该占的比重,如果T取得较小则类似于前面介绍的均值阈限模型,T取得较大则允许背景有更丰富的特性,如随风摆动的树叶或水面的波纹等等。C.如果当前出现的新的值并不符合这B个高斯分布,则认为是运动的前景,否则认为是背景。34非参数模型341背景建模为了能够更快速地适应变化的背景,并且保证对移动物体的敏感性,马里兰大学A. Elgammal等人提岀采用非参数的模型四对各个像素进行建模。该方法并不指定确切模型形式,而釆用核旳数来利用历史薮据建立模型。在釆用高斯核的情况下,一个颜色出现的概率’∑K(x-x∑∏1(13)2这样实际上就是对考虑范围内所有的历史值都建立一个高斯分布,并利用所有这些分布对当前值进行分析。由于高斯分布的假设,故(x1+1-x1)~N(0272),于是可以估计方差(14)0.68V2其中m是|x+1-xl的中位数。号外由于在这种方法下需要大量计算核函数的值,故可以预先计算出一定精度的核函数数据表,通过查表的方法大大加快计算的速度。实验表明这样的方法在一般的PC机上是可以达到实时的计算要求的。34.2减少错误检测为了降低由于局部抖动(如树叶抖动、摄像机抖动)带来的错误检测,该方法利用了一定的区域信息。原先的P(x1)现在改用Pm(x代替PN(t= maxyEN(x)Prix Byy(15)此处N(x)指该像索周围的一个小区域,B指像素y对应的背景模型。这样就充分降低了由于小范围抖动导致的错误检测。7该式成立仍然需要假设各个颜色分量相互独京。9该方法需要维护两个背景模型:长期模型及短期模型。其中短期的模型是为了能够快速适应变化的背景而提出的,仅利用相当短的一段历史值建立模型,另外该模型采用选择更新机制(仅对判定属于背景的值进行更新);长期的模型在相当长的时间内通过盲更新机制(对所有值进行更新)获得。两个模型判定结果的交集能够进一步降低错误的检测,但同时也去除了部分实际上是移动目标的部分。最终采用的策略为:所有由短期模型检测出来,并且与两个模型判定结果交集相邻的像素被视作运动的前景3.4.3去除阴景这个方法同样提到了去除阴影的问题( Figure6)采用RGB颜色模型的一个变种表示颜色:RBR+G+B·9=R+G+Bb=R+G+B′(16)s=RtG+B(17)令A为某个像素在一定时间内的取值,而定义B如下B={x1|x∈A≤≤阝(18)其含义就是该像素过去的背景取值中与当前值亮度接近的值的集合利用B中的值在(r,g)二维空间上进行上述的背景建模及前景检测,就能很有效地消除检测的阴影。Figure6非参数模型下的阴影去除4基于区域的移动目标检测从上面的介绍的方法来看,建立的背景模型越来越复杂:高斯分布的个数从一个到三个,再到K个,再到每个历史值各一个。这样的背景模型已经具有了高度的复杂性,但是在有些应用环境下效果仍然并不理想。反思一下这些方法的特点,仅仅利用各个像素的独立信息而没有考虑像素之间的关联性是键的原因。其实在3.42中采用方法实际上已经开始尝试以局部区域作为考虑问题的范围,
    2020-12-03下载
    积分:1
  • 696518资源总数
  • 106215会员总数
  • 5今日下载