精华内容
下载资源
问答
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    在前两种格式中,会将<来源>复制至<目的地>或将多个<来源>文件复制至已存在的<目录>,同时设定权限模式及所有者/所属组。在第三种格式中,会创建所有指定的目录及它们的主目录。长选项必须用的参数在使用短选项时也...
  • 图像分割综述

    万次阅读 多人点赞 2019-07-09 22:03:48
    基于区域的分割方法是以直接寻找区域为基础的分割技术,基于区域提取方法有两种基本形式:一种是区域生长,从单个像素出发,逐步合并以形成所需要的分割区域;另一种是从全局出发,逐步切割至所需的分割区域。 ...

    本文作者净浩泽,公众号:计算机视觉life,编辑成员

    图像分割是计算机视觉研究中的一个经典难题,已经成为图像理解领域关注的一个热点,图像分割是图像分析的第一步,是计算机视觉的基础,是图像理解的重要组成部分,同时也是图像处理中最困难的问题之一。所谓图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域,使得这些特征在同一区域内表现出一致性或相似性,而在不同区域间表现出明显的不同。简单的说就是在一副图像中,把目标从背景中分离出来。对于灰度图像来说,区域内部的像素一般具有灰度相似性,而在区域的边界上一般具有灰度不连续性。 关于图像分割技术,由于问题本身的重要性和困难性,从20世纪70年代起图像分割问题就吸引了很多研究人员为之付出了巨大的努力。虽然到目前为止,还不存在一个通用的完美的图像分割的方法,但是对于图像分割的一般性规律则基本上已经达成的共识,已经产生了相当多的研究成果和方法。

    本文对于目前正在使用的各种图像分割方法进行了一定的归纳总结,由于笔者对于图像分割的了解也是初窥门径,所以难免会有一些错误,还望各位读者多多指正,共同学习进步。

    传统分割方法

    这一大部分我们将要介绍的是深度学习大火之前人们利用数字图像处理、拓扑学、数学等方面的只是来进行图像分割的方法。当然现在随着算力的增加以及深度学习的不断发展,一些传统的分割方法在效果上已经不能与基于深度学习的分割方法相比较了,但是有些天才的思想还是非常值得我们去学习的。
    1.基于阈值的分割方法
    阈值法的基本思想是基于图像的灰度特征来计算一个或多个灰度阈值,并将图像中每个像素的灰度值与阈值作比较,最后将像素根据比较结果分到合适的类别中。因此,该方法最为关键的一步就是按照某个准则函数来求解最佳灰度阈值。
    阈值法特别适用于目标和背景占据不同灰度级范围的图。
    图像若只有目标和背景两大类,那么只需要选取一个阈值进行分割,此方法成为单阈值分割;但是如果图像中有多个目标需要提取,单一阈值的分割就会出现作物,在这种情况下就需要选取多个阈值将每个目标分隔开,这种分割方法相应的成为多阈值分割。

    如图所示即为对数字的一种阈值分割方法。
    阀值分割方法的优缺点:

    • 计算简单,效率较高;
    • 只考虑像素点灰度值本身的特征,一般不考虑空间特征,因此对噪声比较敏感,鲁棒性不高。
      从前面的介绍里我们可以看出,阈值分割方法的最关键就在于阈值的选择。若将智能遗传算法应用在阀值筛选上,选取能最优分割图像的阀值,这可能是基于阀值分割的图像分割法的发展趋势。
      2.基于区域的图像分割方法
      基于区域的分割方法是以直接寻找区域为基础的分割技术,基于区域提取方法有两种基本形式:一种是区域生长,从单个像素出发,逐步合并以形成所需要的分割区域;另一种是从全局出发,逐步切割至所需的分割区域。
      区域生长
      区域生长是从一组代表不同生长区域的种子像素开始,接下来将种子像素邻域里符合条件的像素合并到种子像素所代表的生长区域中,并将新添加的像素作为新的种子像素继续合并过程,知道找不到符合条件的新像素为止(小编研一第一学期的机器学习期末考试就是手写该算法 T.T),该方法的关键是选择合适的初始种子像素以及合理的生长准则。
      区域生长算法需要解决的三个问题:
      (1)选择或确定一组能正确代表所需区域的种子像素;
      (2)确定在生长过程中能将相邻像素包括进来的准则;
      (3)指定让生长过程停止的条件或规则。
      区域分裂合并
      区域生长是从某个或者某些像素点出发,最终得到整个区域,进而实现目标的提取。而分裂合并可以说是区域生长的逆过程,从整幅图像出发,不断的分裂得到各个子区域,然后再把前景区域合并,得到需要分割的前景目标,进而实现目标的提取。其实如果理解了上面的区域生长算法这个区域分裂合并算法就比较好理解啦。
      四叉树分解法就是一种典型的区域分裂合并法,基本算法如下:
      (1)对于任一区域,如果H(Ri)=FALSE就将其分裂成不重叠的四等分;
      (2)对相邻的两个区域Ri和Rj,它们也可以大小不同(即不在同一层),如果条件H(RiURj)=TURE满足,就将它们合并起来;
      (3)如果进一步的分裂或合并都不可能,则结束。
      其中R代表整个正方形图像区域,P代表逻辑词。
      区域分裂合并算法优缺点:
      (1)对复杂图像分割效果好;
      (2)算法复杂,计算量大;
      (3)分裂有可能破怪区域的边界。
      在实际应用当中通常将区域生长算法和区域分裂合并算法结合使用,该类算法对某些复杂物体定义的复杂场景的分割或者对某些自然景物的分割等类似先验知识不足的图像分割效果较为理想。
      分水岭算法
      分水岭算法是一个非常好理解的算法,它根据分水岭的构成来考虑图像的分割,现实中我们可以想象成有山和湖的景象,那么一定是如下图的,水绕山山围水的景象。
      分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明。在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢浸入水中,随着浸入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分水岭。
      分水岭对微弱边缘具有良好的响应,图像中的噪声、物体表面细微的灰度变化都有可能产生过度分割的现象,但是这也同时能够保证得到封闭连续边缘。同时,分水岭算法得到的封闭的集水盆也为分析图像的区域特征提供了可能。

    3.基于边缘检测的分割方法

    基于边缘检测的图像分割算法试图通过检测包含不同区域的边缘来解决分割问题。它可以说是人们最先想到也是研究最多的方法之一。通常不同区域的边界上像素的灰度值变化比较剧烈,如果将图片从空间域通过傅里叶变换到频率域,边缘就对应着高频部分,这是一种非常简单的边缘检测算法。
    边缘检测技术通常可以按照处理的技术分为串行边缘检测和并行边缘检测。串行边缘检测是要想确定当前像素点是否属于检测边缘上的一点,取决于先前像素的验证结果。并行边缘检测是一个像素点是否属于检测边缘高尚的一点取决于当前正在检测的像素点以及与该像素点的一些临近像素点。
    最简单的边缘检测方法是并行微分算子法,它利用相邻区域的像素值不连续的性质,采用一阶或者二阶导数来检测边缘点。近年来还提出了基于曲面拟合的方法、基于边界曲线拟合的方法、基于反应-扩散方程的方法、串行边界查找、基于变形模型的方法。

    边缘检测的优缺点:
    (1)边缘定位准确;
    (2)速度快;
    (3)不能保证边缘的连续性和封闭性;
    (4)在高细节区域存在大量的碎边缘,难以形成一个大区域,但是又不宜将高细节区域分成小碎片;
    由于上述的(3)(4)两个难点,边缘检测只能产生边缘点,而非完整意义上的图像分割过程。这也就是说,在边缘点信息获取到之后还需要后续的处理或者其他相关算法相结合才能完成分割任务。
    在以后的研究当中,用于提取初始边缘点的自适应阈值选取、用于图像的层次分割的更大区域的选取以及如何确认重要边缘以去除假边缘将变得非常重要。

    结合特定工具的图像分割算法

    基于小波分析和小波变换的图像分割方法

    小波变换是近年来得到的广泛应用的数学工具,也是现在数字图像处理必学部分,它在时间域和频率域上都有量高的局部化性质,能将时域和频域统一于一体来研究信号。而且小波变换具有多尺度特性,能够在不同尺度上对信号进行分析,因此在图像分割方面的得到了应用,
    二进小波变换具有检测二元函数的局部突变能力,因此可作为图像边缘检测工具。图像的边缘出现在图像局部灰度不连续处,对应于二进小波变换的模极大值点。通过检测小波变换模极大值点可以确定图像的边缘小波变换位于各个尺度上,而每个尺度上的小波变换都能提供一定的边缘信息,因此可进行多尺度边缘检测来得到比较理想的图像边缘。

    上图左图是传统的阈值分割方法,右边的图像就是利用小波变换的图像分割。可以看出右图分割得到的边缘更加准确和清晰
    另外,将小波和其他方法结合起来处理图像分割的问题也得到了广泛研究,比如一种局部自适应阈值法就是将Hilbert图像扫描和小波相结合,从而获得了连续光滑的阈值曲线。

    基于遗传算法的图像分割

    ​ 遗传算法(Genetic Algorithms,简称GA)是1973年由美国教授Holland提出的,是一种借鉴生物界自然选择和自然遗传机制的随机化搜索算法。是仿生学在数学领域的应用。其基本思想是,模拟由一些基因串控制的生物群体的进化过程,把该过程的原理应用到搜索算法中,以提高寻优的速度和质量。此算法的搜索过程不直接作用在变量上,而是在参数集进行了编码的个体,这使得遗传算法可直接对结构对象(图像)进行操作。整个搜索过程是从一组解迭代到另一组解,采用同时处理群体中多个个体的方法,降低了陷入局部最优解的可能性,并易于并行化。搜索过程采用概率的变迁规则来指导搜索方向,而不采用确定性搜索规则,而且对搜索空间没有任何特殊要求(如连通性、凸性等),只利用适应性信息,不需要导数等其他辅助信息,适应范围广。
    ​ 遗传算法擅长于全局搜索,但局部搜索能力不足,所以常把遗传算法和其他算法结合起来应用。将遗传算法运用到图像处理主要是考虑到遗传算法具有与问题领域无关且快速随机的搜索能力。其搜索从群体出发,具有潜在的并行性,可以进行多个个体的同时比较,能有效的加快图像处理的速度。但是遗传算法也有其缺点:搜索所使用的评价函数的设计、初始种群的选择有一定的依赖性等。要是能够结合一些启发算法进行改进且遗传算法的并行机制的潜力得到充分的利用,这是当前遗传算法在图像处理中的一个研究热点。

    基于主动轮廓模型的分割方法

    ​ 主动轮廓模型(active contours)是图像分割的一种重要方法,具有统一的开放式的描述形式,为图像分割技术的研究和创新提供了理想的框架。在实现主动轮廓模型时,可以灵活的选择约束力、初始轮廓和作用域等,以得到更佳的分割效果,所以主动轮廓模型方法受到越来越多的关注。
    ​ 该方法是在给定图像中利用曲线演化来检测目标的一类方法,基于此可以得到精确的边缘信息。其基本思想是,先定义初始曲线C,然后根据图像数据得到能量函数,通过最小化能量函数来引发曲线变化,使其向目标边缘逐渐逼近,最终找到目标边缘。这种动态逼近方法所求得的边缘曲线具有封闭、光滑等优点。

    ​ 传统的主动轮廓模型大致分为参数主动轮廓模型和几何主动轮廓模型。参数主动轮廓模型将曲线或曲面的形变以参数化形式表达,Kass等人提出了经典的参数活动轮廓模型即“Snake”模型,其中Snake定义为能量极小化的样条曲线,它在来自曲线自身的内力和来自图像数据的外力的共同作用下移动到感兴趣的边缘,内力用于约束曲线形状,而外力则引导曲线到特征此边缘。参数主动轮廓模型的特点是将初始曲线置于目标区域附近,无需人为设定曲线的的演化是收缩或膨胀,其优点是能够与模型直接进行交互,且模型表达紧凑,实现速度快;其缺点是难以处理模型拓扑结构的变化。比如曲线的合并或分裂等。而使用水平集(level set)的几何活动轮廓方法恰好解决了这一问题。

    基于深度学习的分割

    1.基于特征编码(feature encoder based)

    在特征提取领域中VGGnet和ResNet是两个非常有统治力的方法,接下来的一些篇幅会对这两个方法进行简短的介绍

    a.VGGNet

    ​ 由牛津大学计算机视觉组合和Google DeepMind公司研究员一起研发的深度卷积神经网络。它探索了卷积神经网络的深度和其性能之间的关系,通过反复的堆叠33的小型卷积核和22的最大池化层,成功的构建了16~19层深的卷积神经网络。VGGNet获得了ILSVRC 2014年比赛的亚军和定位项目的冠军,在top5上的错误率为7.5%。目前为止,VGGNet依然被用来提取图像的特征。

    ​ VGGNet的优缺点

    1. 由于参数量主要集中在最后的三个FC当中,所以网络加深并不会带来参数爆炸的问题;
    2. 多个小核卷积层的感受野等同于一个大核卷积层(三个3x3等同于一个7x7)但是参数量远少于大核卷积层而且非线性操作也多于后者,使得其学习能力较强
    3. VGG由于层数多而且最后的三个全连接层参数众多,导致其占用了更多的内存(140M)
    b.ResNet

    ​ 随着深度学习的应用,各种深度学习模型随之出现,虽然在每年都会出现性能更好的新模型,但是对于前人工作的提升却不是那么明显,其中有重要问题就是深度学习网络在堆叠到一定深度的时候会出现梯度消失的现象,导致误差升高效果变差,后向传播时无法将梯度反馈到前面的网络层,使得前方的网络层的参数难以更新,训练效果变差。这个时候ResNet恰好站出来,成为深度学习发展历程中一个重要的转折点。
    ​ ResNet是由微软研究院的Kaiming He等四名华人提出,他们通过自己提出的ResNet Unit成功训练出来152层的神经网络并在ILSVRC2015比赛中斩获冠军。ResNet语义分割领域最受欢迎且最广泛运用的神经网络.ResNet的核心思想就是在网络中引入恒等映射,允许原始输入信息直接传到后面的层中,在学习过程中可以只学习上一个网络输出的残差(F(x)),因此ResNet又叫做残差网络。、

    使用到ResNet的分割模型:

    • Efficient Neural Network(ENet):该网络类似于ResNet的bottleNeck方法;
    • ResNet-38:该网络在训练or测试阶段增加并移除了一些层,是一种浅层网络,它的结构是ResNet+FCN;
    • full-resolution residual network(FRRN):FRRN网络具有和ResNet相同优越的训练特性,它由残差流和池化流两个处理流组成;
    • AdapNey:根据ResNet-50的网络进行改进,让原本的ResNet网络能够在更短的时间内学习到更多高分辨率的特征;
      ……
      ResNet的优缺点:
      1)引入了全新的网络结构(残差学习模块),形成了新的网络结构,可以使网络尽可能地加深;
      2)使得前馈/反馈传播算法能够顺利进行,结构更加简单;
      3)恒等映射地增加基本上不会降低网络的性能;
      4)建设性地解决了网络训练的越深,误差升高,梯度消失越明显的问题;
      5)由于ResNet搭建的层数众多,所以需要的训练时间也比平常网络要长。

    2.基于区域选择(regional proposal based)

    Regional proposal 在计算机视觉领域是一个非常常用的算法,尤其是在目标检测领域。其核心思想就是检测颜色空间和相似矩阵,根据这些来检测待检测的区域。然后根据检测结果可以进行分类预测。
    在语义分割领域,基于区域选择的几个算法主要是由前人的有关于目标检测的工作渐渐延伸到语义分割的领域的,接下来小编将逐步介绍其个中关系。

    Stage Ⅰ: R-CNN

    伯克利大学的Girshick教授等人共同提出了首个在目标检测方向应用的深度学习模型:Region-based Convolutional Neural Network(R-CNN)。该网络模型如下图所示,其主要流程为:先使用selective search算法提取2000个候选框,然后通过卷积网络对候选框进行串行的特征提取,再根据提取的特征使用SVM对候选框进行分类预测,最后使用回归方法对区域框进行修正。

    R-CNN的优缺点:

    • 是首个开创性地将深度神经网络应用到目标检测的算法;
    • 使用Bounding Box Regression对目标检测的框进行调整;
    • 由于进行特征提取时是串行,处理耗时过长;
    • Selective search算法在提取每一个region时需要2s的时间,浪费大量时间
    Stage Ⅱ:Fast R-CNN

    ​ 由于R-CNN的效率太低,2015年由Ross等学者提出了它的改进版本:Fast R-CNN。其网络结构图如下图所示(从提取特征开始,略掉了region的选择)Fast R-CNN在传统的R-CNN模型上有所改进的地方是它是直接使用一个神经网络对整个图像进行特征提取,就省去了串行提取特征的时间;接着使用一个RoI Pooling Layer在全图的特征图上摘取每一个RoI对应的特征,再通过FC进行分类和包围框的修正。

    Fast R-CNN的优缺点

    • 节省了串行提取特征的时间;
    • 除了selective search以外的其它所有模块都可以合在一起训练;
    • 最耗时间的selective search算法依然存在。
    Stage Ⅲ:Faster R-CNN

    2016年提出的Faster R-CNN可以说有了突破性的进展(虽然还是目标检测哈哈哈),因为它改变了它的前辈们最耗时最致命的部位:selective search算法。它将selective search算法替换成为RPN,使用RPN网络进行region的选取,将2s的时间降低到10ms,其网络结构如下图所示:

    Faster R-CNN优缺点:

    • 使用RPN替换了耗时的selective search算法,对整个网络结构有了突破性的优化;
    • Faster R-CNN中使用的RPN和selective search比起来虽然速度更快,但是精度和selective search相比稍有不及,如果更注重速度而不是精度的话完全可以只使用RPN;
    Stage Ⅳ:Mask R-CNN

    Mask R-CNN(终于到分割了!)是何恺明大神团队提出的一个基于Faster R-CNN模型的一种新型的分割模型,此论文斩获ICCV 2017的最佳论文,在Mask R-CNN的工作中,它主要完成了三件事情:目标检测,目标分类,像素级分割。
    恺明大神是在Faster R-CNN的结构基础上加上了Mask预测分支,并且改良了ROI Pooling,提出了ROI Align。其网络结构真容就如下图所示啦:

    Mask R-CNN的优缺点:

    • 引入了预测用的Mask-Head,以像素到像素的方式来预测分割掩膜,并且效果很好;
    • 用ROI Align替代了ROI Pooling,去除了RoI Pooling的粗量化,使得提取的特征与输入良好对齐;
    • 分类框与预测掩膜共享评价函数,虽然大多数时间影响不大,但是有的时候会对分割结果有所干扰。
    Stage Ⅴ:Mask Scoring R-CNN

    最后要提出的是2019年CVPR的oral,来自华中科技大学的研究生黄钊金同学提出的
    MS R-CNN,这篇文章的提出主要是对上文所说的Mask R-CNN的一点点缺点进行了修正。他的网络结构也是在Mask R-CNN的网络基础上做了一点小小的改进,添加了Mask-IoU。
    黄同学在文章中提到:恺明大神的Mask R-CNN已经很好啦!但是有个小毛病,就是评价函数只对目标检测的候选框进行打分,而不是分割模板(就是上文提到的优缺点中最后一点),所以会出现分割模板效果很差但是打分很高的情况。所以黄同学增加了对模板进行打分的MaskIoU Head,并且最终的分割结果在COCO数据集上超越了恺明大神,下面就是MS R-CNN的网络结构啦~

    MS R-CNN的优缺点:

    • 优化了Mask R-CNN中的信息传播,提高了生成预测模板的质量;
    • 未经大批量训练的情况下,就拿下了COCO 2017挑战赛实例分割任务冠军;
    • 要说缺点的话。。应该就是整个网络有些庞大,一方面需要ResNet当作主干网络,另一方面需要其它各种Head共同承担各种任务。

    3.基于RNN的图像分割

    Recurrent neural networks(RNNs)除了在手写和语音识别上表现出色外,在解决计算机视觉的任务上也表现不俗,在本篇文章中我们就将要介绍RNN在2D图像处理上的一些应用,其中也包括介绍使用到它的结构或者思想的一些模型。
    RNN是由Long-Short-Term Memory(LSTM)块组成的网络,RNN来自序列数据的长期学习的能力以及随着序列保存记忆的能力使其在许多计算机视觉的任务中游刃有余,其中也包括语义分割以及数据标注的任务。接下来的部分我们将介绍几个使用到RNN结构的用于分割的网络结构模型:

    1.ReSeg模型

    ReSeg可能不被许多人所熟知,在百度上搜索出的相关说明与解析也不多,但是这是一个很有效的语义分割方法。众所周知,FCN可谓是图像分割领域的开山作,而RegNet的作者则在自己的文章中大胆的提出了FCN的不足:没有考虑到局部或者全局的上下文依赖关系,而在语义分割中这种依赖关系是非常有用的。所以在ReSeg中作者使用RNN去检索上下文信息,以此作为分割的一部分依据。

    该结构的核心就是Recurrent Layer,它由多个RNN组合在一起,捕获输入数据的局部和全局空间结构。
    优缺点:

    • 充分考虑了上下文信息关系;
    • 使用了中值频率平衡,它通过类的中位数(在训练集上计算)和每个类的频率之间的比值来重新加权类的预测。这就增加了低频率类的分数,这是一个更有噪声的分割掩码的代价,因为被低估的类的概率被高估了,并且可能导致在输出分割掩码中错误分类的像素增加。
    2.MDRNNs(Multi-Dimensional Recurrent Neural Networks)模型

    传统的RNN在一维序列学习问题上有着很好的表现,比如演讲(speech)和在线手写识别。但是 在多为问题中应用却并不到位。MDRNNs在一定程度上将RNN拓展到多维空间领域,使之在图像处理、视频处理等领域上也能有所表现。
    该论文的基本思想是:将单个递归连接替换为多个递归连接,相应可以在一定程度上解决时间随数据样本的增加呈指数增长的问题。以下就是该论文提出的两个前向反馈和反向反馈的算法。

    4.基于上采样/反卷积的分割方法

    卷积神经网络在进行采样的时候会丢失部分细节信息,这样的目的是得到更具特征的价值。但是这个过程是不可逆的,有的时候会导致后面进行操作的时候图像的分辨率太低,出现细节丢失等问题。因此我们通过上采样在一定程度上可以不全一些丢失的信息,从而得到更加准确的分割边界。
    接下来介绍几个非常著名的分割模型:

    a.FCN(Fully Convolutional Network)

    是的!讲来讲去终于讲到这位大佬了,FCN!在图像分割领域已然成为一个业界标杆,大多数的分割方法多多少少都会利用到FCN或者其中的一部分,比如前面我们讲过的Mask R-CNN。
    在FCN当中的反卷积-升采样结构中,图片会先进性上采样(扩大像素);再进行卷积——通过学习获得权值。FCN的网络结构如下图所示:

    当然最后我们还是需要分析一下FCN,不能无脑吹啦~
    优缺点:

    • FCN对图像进行了像素级的分类,从而解决了语义级别的图像分割问题;
    • FCN可以接受任意尺寸的输入图像,可以保留下原始输入图像中的空间信息;
    • 得到的结果由于上采样的原因比较模糊和平滑,对图像中的细节不敏感;
    • 对各个像素分别进行分类,没有充分考虑像素与像素的关系,缺乏空间一致性。
    2.SetNet

    SegNet是剑桥提出的旨在解决自动驾驶或者智能机器人的图像语义分割深度网络,SegNet基于FCN,与FCN的思路十分相似,只是其编码-解码器和FCN的稍有不同,其解码器中使用去池化对特征图进行上采样,并在分各种保持高频细节的完整性;而编码器不使用全连接层,因此是拥有较少参数的轻量级网络:

    图像分割是计算机视觉研究中的一个经典难题,已经成为图像理解领域关注的一个热点,图像分割是图像分析的第一步,是计算机视觉的基础,是图像理解的重要组成部分,同时也是图像处理中最困难的问题之一。所谓图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域,使得这些特征在同一区域内表现出一致性或相似性,而在不同区域间表现出明显的不同。简单的说就是在一副图像中,把目标从背景中分离出来。对于灰度图像来说,区域内部的像素一般具有灰度相似性,而在区域的边界上一般具有灰度不连续性。 关于图像分割技术,由于问题本身的重要性和困难性,从20世纪70年代起图像分割问题就吸引了很多研究人员为之付出了巨大的努力。虽然到目前为止,还不存在一个通用的完美的图像分割的方法,但是对于图像分割的一般性规律则基本上已经达成的共识,已经产生了相当多的研究成果和方法。

    本文对于目前正在使用的各种图像分割方法进行了一定的归纳总结,由于笔者对于图像分割的了解也是初窥门径,所以难免会有一些错误,还望各位读者多多指正,共同学习进步。

    SetNet的优缺点:

    • 保存了高频部分的完整性;
    • 网络不笨重,参数少,较为轻便;
    • 对于分类的边界位置置信度较低;
    • 对于难以分辨的类别,例如人与自行车,两者如果有相互重叠,不确定性会增加。
      以上两种网络结构就是基于反卷积/上采样的分割方法,当然其中最最最重要的就是FCN了,哪怕是后面大名鼎鼎的SegNet也是基于FCN架构的,而且FCN可谓是语义分割领域中开创级别的网络结构,所以虽然这个部分虽然只有两个网络结构,但是这两位可都是重量级嘉宾,希望各位能够深刻理解~

    5.基于提高特征分辨率的分割方法

    在这一个模块中我们主要给大家介绍一下基于提升特征分辨率的图像分割的方法。换一种说法其实可以说是恢复在深度卷积神经网络中下降的分辨率,从而获取更多的上下文信息。这一系列我将给大家介绍的是Google提出的DeepLab 。
    DeepLab是结合了深度卷积神经网络和概率图模型的方法,应用在语义分割的任务上,目的是做逐像素分类,其先进性体现在DenseCRFs(概率图模型)和DCNN的结合。是将每个像素视为CRF节点,利用远程依赖关系并使用CRF推理直接优化DCNN的损失函数。
    在图像分割领域,FCN的一个众所周知的操作就是平滑以后再填充,就是先进行卷积再进行pooling,这样在降低图像尺寸的同时增大感受野,但是在先减小图片尺寸(卷积)再增大尺寸(上采样)的过程中一定有一些信息损失掉了,所以这里就有可以提高的空间。
    接下来我要介绍的是DeepLab网络的一大亮点:Dilated/Atrous Convolution,它使用的采样方式是带有空洞的采样。在VGG16中使用不同采样率的空洞卷积,可以明确控制网络的感受野。

    图a对应3x3的1-dilated conv,它和普通的卷积操作是相同的;图b对应3x3的2-dilated conv,事迹卷积核的尺寸还是3x3(红点),但是空洞为1,其感受野能够达到7x7;图c对应3x3的4-dilated conv,其感受野已经达到了15x15.写到这里相信大家已经明白,在使用空洞卷积的情况下,加大了感受野,使每个卷积输出都包含了较大范围的信息。
    这样就解决了DCNN的几个关于分辨率的问题:
    1)内部数据结构丢失;空间曾计划信息丢失;
    2)小物体信息无法重建;
    当然空洞卷积也存在一定的问题,它的问题主要体现在以下两方面:
    1)网格效应
    加入我们仅仅多次叠加dilation rate 2的 3x3 的卷积核则会出现以下问题

    我们发现卷积核并不连续,也就是说并不是所有的像素都用来计算了,这样会丧失信息的连续性;
    2)小物体信息处理不当
    我们从空洞卷积的设计背景来看可以推测出它是设计来获取long-ranged information。然而空洞步频选取得大获取只有利于大物体得分割,而对于小物体的分割可能并没有好处。所以如何处理好不同大小物体之间的关系也是设计好空洞卷积网络的关键。

    6.基于特征增强的分割方法

    基于特征增强的分割方法包括:提取多尺度特征或者从一系列嵌套的区域中提取特征。在图像分割的深度网络中,CNN经常应用在图像的小方块上,通常称为以每个像素为中心的固定大小的卷积核,通过观察其周围的小区域来标记每个像素的分类。在图像分割领域,能够覆盖到更大部分的上下文信息的深度网络通常在分割的结果上更加出色,当然这也伴随着更高的计算代价。多尺度特征提取的方法就由此引进。
    在这一模块中我先给大家介绍一个叫做SLIC,全称为simple linear iterative cluster的生成超像素的算法。
    首先我们要明确一个概念:啥是超像素?其实这个比较容易理解,就像上面说的“小方块”一样,我们平常处理图像的最小单位就是像素了,这就是像素级(pixel-level);而把像素级的图像划分成为区域级(district-level)的图像,把区域当成是最基本的处理单元,这就是超像素啦。
    算法大致思想是这样的,将图像从RGB颜色空间转换到CIE-Lab颜色空间,对应每个像素的(L,a,b)颜色值和(x,y)坐标组成一个5维向量V[l, a, b, x, y],两个像素的相似性即可由它们的向量距离来度量,距离越大,相似性越小。
    算法首先生成K个种子点,然后在每个种子点的周围空间里搜索距离该种子点最近的若干像素,将他们归为与该种子点一类,直到所有像素点都归类完毕。然后计算这K个超像素里所有像素点的平均向量值,重新得到K个聚类中心,然后再以这K个中心去搜索其周围与其最为相似的若干像素,所有像素都归类完后重新得到K个超像素,更新聚类中心,再次迭代,如此反复直到收敛。
    有点像聚类的K-Means算法,最终会得到K个超像素。
    Mostahabi等人提出的一种前向传播的分类方法叫做Zoom-Out就使用了SLIC的算法,它从多个不同的级别提取特征:局部级别:超像素本身;远距离级别:能够包好整个目标的区域;全局级别:整个场景。这样综合考虑多尺度的特征对于像素或者超像素的分类以及分割来说都是很有意义的。
    接下来的部分我将给大家介绍另一种完整的分割网络:PSPNet:Pyramid Scene Parsing Network
    论文提出在场景分割是,大多数的模型会使用FCN的架构,但是FCN在场景之间的关系和全局信息的处理能力存在问题,其典型问题有:1.上下文推断能力不强;2.标签之间的关系处理不好;3.模型可能会忽略小的东西。
    本文提出了一个具有层次全局优先级,包含不同子区域时间的不同尺度的信息,称之为金字塔池化模块。
    该模块融合了4种不同金字塔尺度的特征,第一行红色是最粗糙的特征–全局池化生成单个bin输出,后面三行是不同尺度的池化特征。为了保证全局特征的权重,如果金字塔共有N个级别,则在每个级别后使用1×1 1×11×1的卷积将对于级别通道降为原本的1/N。再通过双线性插值获得未池化前的大小,最终concat到一起。其结构如下图:

    最终结果就是,在融合不同尺度的feature后,达到了语义和细节的融合,模型的性能表现提升很大,作者在很多数据集上都做过训练,最终结果是在MS-COCO数据集上预训练过的效果最好。

    为了捕捉多尺度特征,高层特征包含了更多的语义和更少的位置信息。结合多分辨率图像和多尺度特征描述符的优点,在不丢失分辨率的情况下提取图像中的全局和局部信息,这样就能在一定程度上提升网络的性能。

    7.使用CRF/MRF的方法

    首先让我们熟悉熟悉到底啥是MRF的CRF的。
    MRF全称是Marcov Random Field,马尔可夫随机场,其实说起来笔者在刚读硕士的时候有一次就有同学在汇报中提到了隐马尔可夫、马尔可夫链啥的,当时还啥都不懂,小白一枚(现在是准小白hiahia),觉得马尔可夫这个名字贼帅,后来才慢慢了解什么马尔科夫链呀,马尔可夫随机场,并且在接触到图像分割了以后就对马尔科夫随机场有了更多的了解。
    MRF其实是一种基于统计的图像分割算法,马尔可夫模型是指一组事件的集合,在这个集合中,事件逐个发生,并且下一刻事件的发生只由当前发生的事件决定,而与再之前的状态没有关系。而马尔可夫随机场,就是具有马尔可夫模型特性的随机场,就是场中任何区域都只与其临近区域相关,与其他地方的区域无关,那么这些区域里元素(图像中可以是像素)的集合就是一个马尔可夫随机场。
    CRF的全称是Conditional Random Field,条件随机场其实是一种特殊的马尔可夫随机场,只不过是它是一种给定了一组输入随机变量X的条件下另一组输出随机变量Y的马尔可夫随机场,它的特点是埃及设输出随机变量构成马尔可夫随机场,可以看作是最大熵马尔可夫模型在标注问题上的推广。
    在图像分割领域,运用CRF比较出名的一个模型就是全连接条件随机场(DenseCRF),接下来我们将花费一些篇幅来简单介绍一下。
    CRF在运行中会有一个问题就是它只对相邻节点进行操作,这样会损失一些上下文信息,而全连接条件随机场是对所有节点进行操作,这样就能获取尽可能多的临近点信息,从而获得更加精准的分割结果。
    在Fully connected CRF中,吉布斯能量可以写作:

    我们重点关注二元部分:

    其中k(m)为高斯核,写作:

    该模型的一元势能包含了图像的形状,纹理,颜色和位置,二元势能使用了对比度敏感的的双核势能,CRF的二元势函数一般是描述像素点与像素点之间的关系,鼓励相似像素分配相同的标签,而相差较大的像素分配不同标签,而这个“距离”的定义与颜色值和实际相对距离有关,这样CRF能够使图像尽量在边界处分割。全连接CRF模型的不同就在于其二元势函数描述的是每一个像素与其他所有像素的关系,使用该模型在图像中的所有像素对上建立点对势能从而实现极大地细化和分割。
    在分割结果上我们可以看看如下的结果图:

    可以看到它在精细边缘的分割比平常的分割方法要出色得多,而且文章中使用了另一种优化算法,使得本来需要及其大量运算的全连接条件随机场也能在很短的时间里给出不错的分割结果。
    至于其优缺点,我觉得可以总结为以下几方面:

    • 在精细部位的分割非常优秀;
    • 充分考虑了像素点或者图片区域之间的上下文关系;
    • 在粗略的分割中可能会消耗不必要的算力;
    • 可以用来恢复细致的局部结构,但是相应的需要较高的代价。
      OK,那么本次的推送就到这里结束啦,本文的主要内容是对图像分割的算法进行一个简单的分类和介绍。综述对于各位想要深入研究的看官是非常非常重要的资源:大佬们经常看综述一方面可以了解算法的不足并在此基础上做出改进;萌新们可以通过阅读一篇好的综述入门某一个学科,比如今天的内容就是图像分割。
      谢谢各位朋友们的观看!

    推荐阅读

    如何从零开始系统化学习视觉SLAM?
    从零开始一起学习SLAM | 为什么要学SLAM?
    从零开始一起学习SLAM | 学习SLAM到底需要学什么?
    从零开始一起学习SLAM | SLAM有什么用?
    从零开始一起学习SLAM | C++新特性要不要学?
    从零开始一起学习SLAM | 为什么要用齐次坐标?
    从零开始一起学习SLAM | 三维空间刚体的旋转
    从零开始一起学习SLAM | 为啥需要李群与李代数?
    从零开始一起学习SLAM | 相机成像模型
    从零开始一起学习SLAM | 不推公式,如何真正理解对极约束?
    从零开始一起学习SLAM | 神奇的单应矩阵
    从零开始一起学习SLAM | 你好,点云
    从零开始一起学习SLAM | 给点云加个滤网
    从零开始一起学习SLAM | 点云平滑法线估计
    从零开始一起学习SLAM | 点云到网格的进化
    从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码
    从零开始一起学习SLAM | 掌握g2o顶点编程套路
    从零开始一起学习SLAM | 掌握g2o边的代码套路
    零基础小白,如何入门计算机视觉?
    SLAM领域牛人、牛实验室、牛研究成果梳理
    我用MATLAB撸了一个2D LiDAR SLAM
    可视化理解四元数,愿你不再掉头发
    最近一年语义SLAM有哪些代表性工作?
    视觉SLAM技术综述
    汇总 | VIO、激光SLAM相关论文分类集锦
    研究SLAM,对编程的要求有多高?
    2018年SLAM、三维视觉方向求职经验分享
    2018年SLAM、三维视觉方向求职经验分享
    深度学习遇到SLAM | 如何评价基于深度学习的DeepVO,VINet,VidLoc?
    视觉SLAM关键方法总结
    SLAM方向公众号、知乎、博客上有哪些大V可以关注?
    SLAM实验室
    SLAM方向国内有哪些优秀公司?
    SLAM面试常见问题
    SLAM相关领域数据集调研
    从零开始一起学习SALM-ICP原理及应用
    解放双手——相机与IMU外参的在线标定
    目标检测

    展开全文
  • 基于51单片机的交通灯控制系统设计

    万次阅读 多人点赞 2018-11-24 13:38:11
    它是目前使用比较广泛的电脑接口之一,主要版本1.0、1.1和最新的2.0三版本。根据USB总线的工业标准,它可以提供额定功率为5V/500mA的电源供USB设备使用。 1.2.2 单片机最小系统 51单片机是对目前所有兼容intel...

    第一章 硬件设计与原理
    以AT89C51单片机为核心,起着控制作用。系统包括数码管显示电路、复位电路、时钟电路、发光二级管电路和按键电路。设计思路分为六个模块:复位电路、晶振电路模块、AT89C51、数码管显示电路、发光二级管电路和按键电路这六个模块。

    在这里插入图片描述

    1.2 硬件设计分析
    1.2.1 电源的设计
    系统电源使用直流5伏。
    由电脑USB接口提供电源。
    USB是通用串行总线(Universal Serial Bus)接口的简称。它是目前使用比较广泛的电脑接口之一,主要版本有1.0、1.1和最新的2.0三种版本。根据USB总线的工业标准,它可以提供额定功率为5V/500mA的电源供USB设备使用。
    1.2.2 单片机最小系统
    51单片机是对目前所有兼容intel 8031指令系统的单片机的统称。该系列单片机的始祖是intel的8031单片机,后来随着技术的发展,成为目前广泛应用的8为单片机之一。单片机是在一块芯片内集成了CPU、RAM、ROM、定时器/计数器和多功能I/O口等计算机所需要的基本功能部件的大规模集成电路,又称为MCU。51系列单片机内包含以下几个部件:
    一个8位CPU;一个片内振荡器及时钟电路;
    4KB的ROM程序存储器;
    一个128B的RAM数据存储器;
    寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;
    32条可编程的I/O口线;
    两个16位定时/计数器;
    一个可编程全双工串行口;
    5个中断源、两个优先级嵌套中断结构。
    如图1-2-1所示为AT89C51单片机基本构造,其基本性能介绍如下:
    图1-2-1 AT89C51单片机

    AT89C51本身内含40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中端口,3个16位可编程定时计数器,2个全双工串行通信口,STC89C51RC可以按照常规方法进行编程,但不可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
    AT89C51的主要特性如下表所示:

    在这里插入图片描述

    AT89C51为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。P0~P3 为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
    P0口:P0口是一组8位漏极开路型双向I/O 口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
    P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。Flash编程和程序校验期间,P1接收低8位地址。
    P2口:P2是一个带有内部上拉电阻的8 位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX @DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX @RI指令)时,P2口输出P2锁存器的内容。Flash编程或校验时,P2亦接收高位地址和一些控制信号。
    P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能P3口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。
    RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
    ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个AL脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条 MOVX 和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
    PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
    EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
    XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。
    XTAL2:振荡器反相放大器的输出端。
    单片机最小原理图如图1-2-2所示。
    图1-2-2 单片机最小系统

    单片机最小系统说明:
    时钟信号的产生:在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,这就是单片机的时钟振荡电路。
    时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
    一般地,电容C2和C3取30pF左右,晶体的振荡频率范围是1.2-12MHz。如果晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。
    单片机复位使CPU和系统中的其他功能部件都处在一个确定的初始状态下,并从这个状态开始工作。单片机复位条件:必须使9脚加上持续两个机器周期(即24个振荡周期)的高电平。
    1.2.3 显示系统
    数码管是一种半导体发光器件,其基本单元是发光二极管。
    数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。
    数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
    1) 静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动(要知道一个89C51单片机可用的I/O端口才32个呢),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
    2) 动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
    本设计中数码管采用的是动态驱动方式。
    数码管外形如图1-2-3,数码管电路结构如图1-2-4。

    图1-2-3 数码管外形图
    图1-2-4 数码管电路结构示意图

    在这里插入图片描述
    图1-2-5 数码管显示电路
    1.2.4 发光二级管电路

    图1-2-6 发光二级管电路
    1.2.5 按键电路
    图1-2-7 按键电路

    第二章 软件设计与分析
    2.1 软件设计的组成
    该系统由延时子函数、数码管显示子函数、定时器0中断子函数、主函数和数据定义这几部分组成。
    在这里插入图片描述

    在这里插入图片描述

    //----------------------------------------------------------------------//
    上传过程感觉繁琐,里面可能有不全面的地方,请见谅。下面的是实现的目的。以及电路原理图

    **本次设计的主要目的是设计一个城市十字路口的交通灯控制系统,设计中将交通灯控制系统分为东西方向(主干道)和南北方向(次干道)两个方向,且在东西南北四个路口的每个路口设置红、绿、黄三个交通信号灯(用发光二极管模拟)和一个二位的LED数码显示管。设计的要求是规定在每一段时间内东西和南北两个方向中只有一个方向能够通行,另一个方向处于禁行状态,然后在经过一段时间后,禁行的方向和通行的方向互相转换状态,原来通行的状态变禁行状态,原来禁行的状态变为通行状态,如此循环下去。详细过程如下图2-1:
    状态① 状态②
    图 1图2-1 交通灯状态图
    状态①:东西方向的交通灯黄灯闪烁3秒后,红灯熄灭,绿灯点亮(东西方向允许车辆和行人通行),同时南北方向绿灯熄灭,红灯点亮(南北方向禁止车辆和行人通行),LED数码管倒计时显示40秒,在倒计时3秒时进入状态②。
    状态②:南北方向黄灯闪烁3秒后,红灯熄灭绿灯点亮(南北允许车辆和行人通行);同时东西方向绿灯熄灭,红灯点亮
    (东西方向禁止车辆和行人通行),LED数码管倒计时显示40秒,在倒计时3秒时进入状态①。
    接下来在没有人为干涉下将会一直按照上述进行循环。设计中还外设6个按键实现对交通灯控制系统的调控作用。

    电路原理图

    在这里插入图片描述

    在这里插入图片描述

    //——————————————————————————-——————————//
    相应的代码已经上传

    下载地址
    https://download.csdn.net/download/weixin_43442020/12231456

    下载链接里可以下载,解压后里面有压缩文件,压缩文件里面的资料更详细

    展开全文
  • 麦克风阵列技术麦克风阵列技术详解声源定位延时估计角度计算波束形成波束形成模型波束形成基本理论去混响麦克风阵列结构设计声学结构确认流程 紧接上一个博客文章,此为第三部分。上一部分见:麦克风阵列技术 二 ...

    紧接上一个博客文章,此为第三部分。上一部分见:麦克风阵列技术 二 (自动增益控制 自动噪声抑制 回声消除 语音活动检测)

    麦克风阵列技术详解

    声源定位

    麦克风阵列可以自动检测声源位置,跟踪说话人,声源定位信息既可以用于智能交互,也可以用于后续的空域滤波,对目标方向进行语音增强。

    利用麦克风阵列可以实现声源到达方向估计(direction-of-arrival (DOA) estimation),DOA估计的其中一种方法是计算到达不同阵元间的时间差,另外一种可以看这里,这篇主要介绍经典的GCC-PHAT方法
    简单说明问题背景,信号模型如下图,远场平面波,二元阵列

    要计算得到θθ,其实就是要求两个阵元接收到的信号时间差,现在问题变成到达时间差估计(Time-Difference-of-Arrival Estimation),因此,基于延时估计的DOA方法,其实也可以看做是分两步进行的,第一步是估计延时,第二步是计算角度,与之相对应的基于空间谱估计的DOA方法就是一步完成的。下面就分两步进行介绍

    延时估计

    一、 互相关函数(cross-correlation function)

    计算y1(k)y1(k)与y2(k)y2(k)的时间差,可以计算两个信号的互相关函数,找到使互相关函数最大的值即是这两个信号的时间差
    离散信号的互相关函数

    R(τ)=E[x1(m)x2(m+τ)]R(τ)=E[x1(m)x2(m+τ)]

    求时间差就是找到互相关函数最大时的点

    D=argmaxR(n)D=argmaxR(n)
    MATLAB代码如下:

    %%
    % Load the chirp signal.
    load chirp;
    c = 340.0;
    Fs = 44100;
    %%
    d = 0.25;
    N = 2;
    mic = phased.OmnidirectionalMicrophoneElement;
    % array = phased.URA([N,N],[0.0724,0.0418],'Element',mic);
    array = phased.ULA(N,d,'Element',mic);
     
    %%
    % Simulate the incoming signal using the |WidebandCollector| System
    % object(TM).
    arrivalAng = 42;
    collector = phased.WidebandCollector('Sensor',array,'PropagationSpeed',c,...
        'SampleRate',Fs,'ModulatedInput',false);
    signal = collector(y,arrivalAng);
     
    x1 = signal(:,1);
    x2 = signal(:,2);
     
    N =length(x2);
    xc = xcorr(x1,x2,'biased');
    [k,ind] = max(xc);
    an = acos((ind-N)/Fs*340/d)*180/pi
     
    xc12 = zeros(2*N-1,1);
    m = 0;
    for i = -(N-1):N-1
        m = m+1;
        for t = 1:N
            if 0<(i+t)&&(i+t)<=N
                xc12(m) = xc12(m) + x2(t)*x1(t+i);
            end 
        end
    end
    xc12 = xc12/N;
    

    以上程序中的循环就是上面的定义公式,运行程序可以看到循环部分计算的互相关与直接调用matlab的xcorr结果相同(注意matlab中互相关默认没做归一化),找到互相关函数的最大值就可以得到时间差 。

    二、广义互相关(generalized cross-correlation)

    理论上使用上面个介绍的CCF方法就可以得到时间差,但是实际的信号会有噪声,低信噪比会导致互相关函数的峰值不够明显,这会在找极值的时候造成误差。
    为了得到具有更陡峭极值的互相关函数,一般在频域使用一个加权函数来白化输入信号,这就是经典的广义互相关方法。
    由维纳-辛钦定理可知,随机信号的自相关函数和功率谱密度函数服从一对傅里叶变换的关系,即x1、x2x1、x2的互功率谱可由下式计算

    P(ω)=∫+∞?∞R(τ)e?jωτdτP(ω)=∫?∞+∞R(τ)e?jωτdτ

    R(τ)=∫+∞?∞P(ω)ejωτdωR(τ)=∫?∞+∞P(ω)ejωτdω

    这一步是把互相关函数变换到了频域,哦对,上面说到是想白化互相关函数,那就把上面第二式添加一个系数

    R(τ)=∫+∞?∞A(ω)P(ω)ejωτdωR(τ)=∫?∞+∞A(ω)P(ω)ejωτdω

    设计不同的频域系数A(ω)A(ω)对应着不同方法,这里只介绍 PHAT(phase transform)方法,即取系数如下:

    A(ω)=1|P(ω)|A(ω)=1|P(ω)|

    基本思想就是求时间差只需要相位信息,舍弃不相关的幅度信息以提高健壮性,可以看到当A(ω)=1A(ω)=1的情况下就是经典互相关
    P(ω)P(ω)为复数,可以表示为|P(ω)| * e - jωp|P(ω)| * e - jωp,去掉幅度信息后,就只剩相位信息e - jωpe - jωp了,要得到相位信息,可以用P(ω)abs(P(ω))P(ω)abs(P(ω))计算,也可以直接用matlab中的angle函数计算,即angle(P(ω))angle(P(ω)),
    在这里插入图片描述
    几行代码验证下:

    x1 = [1,2,3,7,9,8,3,7]';
    x2 = [4,5,6,5,4,3,8,2]';
     
    [tau,R,lag] = gccphat(x1,x2) 
     
    N = length(x1)+length(x2)-1;
    NFFT = 32;
    P = (fft(x1,NFFT).*conj(fft(x2,NFFT)));
    A = 1./abs(P);
    R_est1 = fftshift(ifft(A.*P));
    range = NFFT/2+1-(N-1)/2:NFFT/2+1+(N-1)/2;
    R_est1 = R_est1(range);
     
    R_est2 = fftshift(ifft(exp(1i*angle(P))));
    R_est2 = R_est2(range);
    

    可以看到,三种不同写法得到的R_est1 、R_est2 与matlab自带函数gccphat计算得到的R相等。

    那上面例子中的宽带语音信号,用GCC-PHAT方法得到具有陡峭峰值互相关函数,找到互相关最大时的点,结合采样频率Fs与与麦克风间距dFs与与麦克风间距d,就可以得到方向信息。

    角度计算

    上面的内容计算了两个麦克风的延时,实际中假设阵列中麦克风个数为NN,则所有麦克风间两两组合共有N(N-1)/2N(N-1)/2对,记第kk个麦克风坐标为(xk,yk,zk)(xk,yk,zk),声源单位平面波传播向量u? =(u,v,w)u→=(u,v,w),如果麦克风k,jk,j之间的延时为τkjτkj,则根据向量关系有下式,其中c为声速,
    C * τkj = -(xk→-xj→)?u? c?Τkj = -(xk→-xj→) * u→

    这样看起来不够直观,那就代入坐标写成标量形式如下:
    Cτkj=u(xk-xj)+v*(yk-yj)+w*(zk-zj)cτkj=u(xk-xj)+v*(yk-yj)+w*(zk-zj)

    当有多个麦克风时,每两个麦克风就可以得到一组上式,N个麦克风就会有N*(N-1)/2个等式N个麦克风就会有N*(N-1)/2个等式,声源单位传播向量u? =(u,v,w)u→=(u,v,w)有三个未知数,因此最少只需要三组等式,也就是三个麦克风就可以计算出声源方向,这里就先假定N=3N=3,可以得到方程组如下:
    在这里插入图片描述
    写成矩阵形式
    在这里插入图片描述
    求出u? =(u,v,w)u→=(u,v,w)后,由正余弦关系就有了角度值了
    θ=acos(1w)θ=acos(1w)
    α=acos(usin(acos(1w)))α=acos(usin(acos(1w)))

    当麦克风数量N>3N>3时,其实所有组合信息对于角度值的计算是有冗余的,这个时候可以求出所有组合的角度值,然后利用最小二乘求出最优解,这样可以利用到所有的麦克风的信息来提高角度估计的稳定性。

    波束形成

    DBF是Digital Beam Forming的缩写,译为数字波束形成 或数字波束合成。数字波束形成技术是天线波束形成原理与数字信号处理技术相结合的产物,其广泛应用于阵列信号处理领域。
    专业:电子、通信与自动控制技术阵列信号处理最主要的研究内容包括DOA估计和波束形成。较早的DOA估计方法又称为波束形成方法,而该波束形成方法利用了空域维纳滤波的匹配概念,由阵列流形在信号空间中的投影大小判定信号方向,后来随着研究的深入,高分辨谱估计技术的发展,才把DOA估计和波束形成加以区分,DOA估计是为了确定信号的方位,从接收数据中测出信号方向,不管信号是有用信号还是干扰信号,在DOA估计方向图中都表现为峰值,而此峰值并不是实际阵列输出功率;波束形成是传统滤波的空域拓展,其根本目的是有效提取有用信号并抑制噪声和干扰,在方向图中表现为有用信号方向形成峰值、干扰方向形成零陷,可以认为DOA估计为波束形成的前端处理,确定期望信号和干扰方向后,阵列对期望信号方向形成波束并在干扰方向形成零陷。

    DBF体现的是声源信号的空域选择性,许多传统波束形成方法具有线性处理结构;波束形成需要考虑三个方面:
    1)麦克风阵列个数;
    2)性能;
    3)鲁棒性。

    在麦克风较少时,波束形成的空域选择性差,当麦克风数量较多时,其波束3dB带宽较为窄,如果估计的目标声源方向有稍有偏差,带来的影响也更大,鲁棒性不好。通常鲁棒性和性能是对矛盾体,需要均衡来看。

    WebRTC使用了如下几个点以提高鲁棒性和性能(其算法性能优先):
    1.可以使用多个后置滤波器而非一个,2.每个后置滤波使用新的结构。

    每个后置滤波器为每个声学场景的时频域bin在均方误意义上提供了最优实增益。在WebRTC中后置滤波器根据声源的空域协方差矩阵,干扰源协方差矩阵,绕射场(零阶贝塞尔函数计算)以及临近麦克风的时频信号信息求得。

    这样的话就可以为每个声源和干扰场景计算出不同的最优后置滤波器,也可以使用级联的方式灵活使用多个不同选择性的后置滤波器。
    当前现存的波束形成算法的鲁棒性成为它们使用的一道门槛,如MVDR和多通道维纳滤波。

    WebRTC为了增强鲁棒性,在求最优矩阵时,对声源信号添加了限制条件,使用Gabor frame将声源变成时频bin的系数,对这些bin按照目标声源和干扰声源附加了条件,如果满足条件,则门操作让目标声源通过,而让干扰源乘以零以实现选择最优目标信号。

    在WebRTC中这些增益系数称为自适应标量(上面的实)乘法增益,均方误差准则被用来做为计算的准则。由于阵列方向响应随频率是变换的,而语音信号又是宽带信号,所以WebRTC中使用了gabor变换来表示声音信号。增益源于目标信号和干扰的比例。

    波束形成模型

    以均匀线阵为例:
    在这里插入图片描述
    按窄带模型分析:
    在这里插入图片描述
    可以写成矩阵形式:
    在这里插入图片描述
    其中a(θ)为方向矢量或导向矢量(Steering Vector),波束形成主要是针对各个接收信号X进行权重相加。

    波束形成基本理论
    1. A-波束形成
      权重相加:在这里插入图片描述
      不同的波束形成,就是不同的权重W。

    2. B-瑞利限
      以均匀直角窗为例:
      在这里插入图片描述
      得出方向图:
      在这里插入图片描述
      主瓣宽度正比于孔径宽度的倒数:
      在这里插入图片描述
      因为孔径的限制,造成波束宽度存在限制(不会无限制小),近而落在主瓣波束内部的两个信号便会混在一起而分不清,这就存在瑞利限的问题。

      直角窗主瓣宽度为:
      在这里插入图片描述
      其中λ为入射波长,theta1为入射角,Md为阵列孔径。

    3. C-常见窗函数

      对于空间不同的阵列信号,类似采样分析(空域采样),自然可以加窗进行处理,不加窗可以认为是直角窗,另外也可以选择汉明窗、hanning窗等等。

      加窗可以改变波束宽度以及主瓣、副瓣等特性,可以借助MATLAB 的wvtool观察不同窗函数特性。

    N = 192;
    w = window(@blackmanharris,N);
    wvtool(w)
    

    在这里插入图片描述

    1. D-DFT实现
      阵列的采样间隔是相位信息:
      在这里插入图片描述
      这就类似于频域变换,只不过这里的相位信息:对应的不是频率,而是不同位置,可以看作空域的变换。

      分别对阵列信号进行直接加权、加窗、DFT实现:

    clc;clear all;close all
    M = 32;
    DOA = [-30 30];
    SNR = 10;
    theta = -90:.1:90;
    len = length(theta);
    SignalMode = 'Independent';
    fc = 1e9;
    c = 3e8;
    lambda = c/fc;
    d = lambda/2;
    N = 100;%snap points
    x = StatSigGenerate(M,N,DOA,SNR,SignalMode,lambda,d);
    R_hat = 1/N*x*x';
    output = zeros(3,len);
    for i = 1:len
        a = exp(1j*2*pi*[0:M-1]'*sind(theta(i))*d/lambda);
        W = (inv(R_hat)*a)*(1./(a'*inv(R_hat)*a));
        output(1,i) = mean(abs(W'*x),2);
        output(2,i) = 1./(a'*inv(R_hat)*a);
        output(3,i) = a'*x*ones(N,1);
    end
    output = abs(output);
    output = output - repmat(mean(output.')',1,size(output,2));
    output = output./repmat(max(output.')',1,size(output,2));
    %plot
    plot(theta,output(1,:),'k',theta,output(2,:),'r--',theta,output(3,:),'b');
    legend('MVDR 波束','MVDR 谱','固定权重 波束');
    

    在这里插入图片描述

    1. E-自适应波束形成
      直接相加也好、加窗也好,都是固定的权重系数,没有考虑到信号本身的特性,所以如果结合信号本身去考虑就形成了一系列算法:自适应波束形成。

      这类步骤通常是:
      1)给定准则函数;
      2)对准则函数进行求解。

      准则常用的有:信噪比(snr)最大准则、均方误差最小准则(MSE)、线性约束最小方差准则(LCMV)、最大似然准则(ML)等等;

      求解的思路大体分两类:1)直接求解,例如MVDR中的求解;2)也可以利用梯度下降的思想,如随机梯度下降、批量梯度下降、Newton-raphson等方法,不再详细说明。

      以MVDR举例:
      在这里插入图片描述
      这里采用直接求解的思路:
      在这里插入图片描述
      将求解的W带入
      在这里插入图片描述
      即可得到波束形成。

    2. F-栅瓣现象
      栅瓣是一类现象,对应干涉仪就是相位模糊(相位超过2*pi),对应到Beamforming就是栅瓣问题,具体不再论述,给出现象(同样的波束,在不同的位置分别出现):
      在这里插入图片描述

    3. G-波束形成与空间谱

      之前分析过MVDR的方法,得到的输出(含有约束的最小均方误差准则)为:
      在这里插入图片描述
      有时候也称这个输出为空间谱,其实就是|y2(t)|,但这个与MUSIC等算法的谱还不是一回事,只是有时候也被称作空间谱,所以这里多啰嗦几句,分析这个说法的来源。

      已知N个采样点的信号,对其进行傅里叶变换:
      在这里插入图片描述
      进一步得到功率谱密度:
      在这里插入图片描述
      根据上文的分析:y(t)其实对应的就是空域变换(可借助DFT实现),类比于时频处理中的频域变换。而这里又可以看到频域变换的平方/长度,对应就是功率谱,这是频域的分析。

      对应到空域,自然就是|y2(t)|/长度,对应空间谱,长度只影响比例关系,所以MVDR的最小方差输出被称作:空间谱也是合适的。

      给出一个测试(这里如果),对比MVDR的y(t)、MVDR功率谱以及普通Beamforming的结果:

    clc;clear all;close all
    M = 32;
    DOA = [-30 30];
    SNR = 10;
    theta = -90:.1:90;
    len = length(theta);
    SignalMode = 'Independent';
    fc = 1e9;
    c = 3e8;
    lambda = c/fc;
    d = lambda/2;
    N = 100;%snap points
    x = StatSigGenerate(M,N,DOA,SNR,SignalMode,lambda,d);
    R_hat = 1/N*x*x';
    output = zeros(3,len);
    for i = 1:len
        a = exp(1j*2*pi*[0:M-1]'*sind(theta(i))*d/lambda);
        W = (inv(R_hat)*a)*(1./(a'*inv(R_hat)*a));
        output(1,i) = mean(abs(W'*x),2);
        output(2,i) = 1./(a'*inv(R_hat)*a);
        output(3,i) = a'*x*ones(N,1);
    end
    output = abs(output);
    output = output - repmat(mean(output.')',1,size(output,2));
    output = output./repmat(max(output.')',1,size(output,2));
    %plot
    plot(theta,output(1,:),'k',theta,output(2,:),'r--',theta,output(3,:),'b');
    legend('MVDR 波束','MVDR 谱','固定权重 波束');
    

    在这里插入图片描述
    如果将d = lambda/2;改为d = lambda/0.5;,自然就有了栅瓣:
    在这里插入图片描述

    去混响

    混响是指声波在室内传播时,要被墙壁、天花板、地板等障碍物反射,当声源停止发声后,声波在室内要经过多次反射和吸收,最后才消失。这种现象称为混响。因此,当声源和麦克风之间的距离越远,反射声占的比例就越高,混响就严重。
    经典的去混响方法包括形成拾音波束来减少反射声和基于反卷积的去混响方法。

    麦克风阵列结构设计

    MUC 孔的孔深孔径比越小越好,即开孔越大越好,深度越小越好,尽量向1:1靠近。孔深与孔径比值越大,麦克频响的震点越像低频靠近,要求震点在12KHz以上。最少也要在8KHz以上。喇叭腔体不能漏气。这是因为,喇叭正反两面的声波相位相差180度,当音腔有漏气时,声波会发生抵消,尤其是低频频段。
    麦克和喇叭的失真都要小。麦克失真小于4%,喇叭失真小于10%,由于喇叭低频失真严重些,会超过10%,可以考虑增加滤波器滤掉低频成分。
    喇叭腔体四周与其他机构件保留1mm的距离,防止腔壳与机构接触产生异音。
    喇叭鼓膜上方与机构件保留1.5mm的距离,以防鼓膜振动碰到机构件产生异音。
    喇叭与机构件有接触的地方,要增加泡面,以起到缓冲、减振的效果,防止喇叭振动时与机构件碰撞产生异音。

    声学结构确认流程

    1)远程会议或现场结构设计评估
    确认麦克阵列构型,确认声腔及安装结构设计,确认进声孔深度、直径大小等;
    2)声学实验室录音效果评估-第一阶段
    计算裸麦和带声腔结构的麦克风之间的录音之间谐波程度,根据分析结果确定是否通过。
    3)声学实验室录音效果评估-第二阶段
    分别利用裸麦和带声腔结构的麦克风信号做基于相位的声源定位,如果两者定位误差小于5°,则认为通过该项测试。
    4)声学实验室录音效果评估-第三阶段
    分别利用裸麦和带声腔结构的麦克风录音数据进行识别,效果差距在2%以内,则认为远场识别方面无问题。

    展开全文
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
  • 有两种线性模型: (1)大信号状态下的理想二极管模型,理想二极管相当于一个理想开关; (2)正向压降与外加电压相比不可忽略,且正向电阻与外接电阻相比可以忽略时的恒压源模型,即一个恒压源与一个理想二极管...

    Multisim模拟电路仿真

    本章Multisim10电路仿真软件,讲解使用Multisim进行模拟电路仿真的基本方法。
    目录

    1. Multisim软件入门

    2. 二极管电路

    3. 基本放大电路

    4. 差分放大电路

    5. 负反馈放大电路

    6. 集成运放信号运算和处理电路

    7. 互补对称(OCL)功率放大电路

    8. 信号产生和转换电路

    9. 可调式三端集成直流稳压电源电路

    13.1 Multisim用户界面及基本操作
    在这里插入图片描述
    13.1.1 Multisim用户界面
    在众多的EDA仿真软件中,Multisim软件界面友好、功能强大、易学易用,受到电类设计开发人员的青睐。Multisim用软件方法虚拟电子元器件及仪器仪表,将元器件和仪器集合为一体,是原理图设计、电路测试的虚拟仿真软件。
    Multisim来源于加拿大图像交互技术公司(Interactive Image Technologies,简称IIT公司)推出的以Windows为基础的仿真工具,原名EWB。
    IIT公司于1988年推出一个用于电子电路仿真和设计的EDA工具软件Electronics Work Bench(电子工作台,简称EWB),以界面形象直观、操作方便、分析功能强大、易学易用而得到迅速推广使用。
    1996年IIT推出了EWB5.0版本,在EWB5.x版本之后,从EWB6.0版本开始,IIT对EWB进行了较大变动,名称改为Multisim(多功能仿真软件)。
    IIT后被美国国家仪器(NI,National Instruments)公司收购,软件更名为NI Multisim,Multisim经历了多个版本的升级,已经有Multisim2001、 Multisim7、 Multisim8、Multisim9 、Multisim10等版本,9版本之后增加了单片机和LabVIEW虚拟仪器的仿真和应用。
    下面以Multisim10为例介绍其基本操作。图13.1-1是Multisim10的用户界面,包括菜单栏、标准工具栏、主工具栏、虚拟仪器工具栏、元器件工具栏、仿真按钮、状态栏、电路图编辑区等组成部分。

    图13.1-1 Multisim10用户界面
    菜单栏与Windows应用程序相似,如图13.1-2所示。

    图13.1-2 Multisim菜单栏
    其中,Options菜单下的Global Preferences和Sheet Properties可进行个性化界面设置,Multisim10提供两套电气元器件符号标准:
    ANSI:美国国家标准学会,美国标准,默认为该标准,本章采用默认设置;
    DIN:德国国家标准学会,欧洲标准,与中国符号标准一致。

    工具栏是标准的Windows应用程序风格。
    标准工具栏:
    视图工具栏:
    图13.1-3是主工具栏及按钮名称,图13.1-4是元器件工具栏及按钮名称,图13.1-5是虚拟仪器工具栏及仪器名称。

    图13.1-3 Multisim主工具栏

    图13.1-4 Multisim元器件工具栏

    图13.1-5 Multisim虚拟仪器工具栏

    项目管理器位于Multisim10工作界面的左半部分,电路以分层的形式展示,主要用于层次电路的显示,3个标签为:
    Hierarchy:对不同电路的分层显示,单击“新建”按钮将生成Circuit2电路;
    Visibility:设置是否显示电路的各种参数标识,如集成电路的引脚名;
    Project View:显示同一电路的不同页。
    13.1.2 Multisim仿真基本操作
    Multisim10仿真的基本步骤为:

    1. 建立电路文件
    2. 放置元器件和仪表
    3. 元器件编辑
    4. 连线和进一步调整
    5. 电路仿真
    6. 输出分析结果
      具体方式如下:
    7. 建立电路文件
      具体建立电路文件的方法有:
      打开Multisim10时自动打开空白电路文件Circuit1,保存时可以重新命名
      菜单File/New
      工具栏New按钮
      快捷键Ctrl+N
    8. 放置元器件和仪表
      Multisim10的元件数据库有:主元件库(Master Database),用户元件库(User Database),合作元件库(Corporate Database),后两个库由用户或合作人创建,新安装的Multisim10中这两个数据库是空的。
      放置元器件的方法有:
      菜单Place Component
      元件工具栏:Place/Component
      在绘图区右击,利用弹出菜单放置
      快捷键Ctrl+W
      放置仪表可以点击虚拟仪器工具栏相应按钮,或者使用菜单方式。
      以晶体管单管共射放大电路放置+12V电源为例,点击元器件工具栏放置电源按钮(Place Source),得到如图13.1-6所示界面。

    图13.1-6 放置电源
    修改电压值为12V,如图13.1-7所示。

    图13.1-7 修改电压源的电压值
    同理,放置接地端和电阻,如图13.1-8所示。

    图13.1-8 放置接地端(左图)和电阻(右图)
    图13.1-9为放置了元器件和仪器仪表的效果图,其中左下角是函数信号发生器,右上角是双通道示波器。

    图13.1-9 放置元器件和仪器仪表
    3. 元器件编辑
    (1)元器件参数设置
    双击元器件,弹出相关对话框,选项卡包括:
    Label:标签,Refdes编号,由系统自动分配,可以修改,但须保证编号唯一性
    Display:显示
    Value:数值
    Fault:故障设置,Leakage漏电;Short短路;Open开路;None无故障(默认)
    Pins:引脚,各引脚编号、类型、电气状态
    (2)元器件向导(Component Wizard)
    对特殊要求,可以用元器件向导编辑自己的元器件,一般是在已有元器件基础上进行编辑和修改。方法是:菜单Tools/ Component Wizard,按照规定步骤编辑,用元器件向导编辑生成的元器件放置在User Database(用户数据库)中。
    4. 连线和进一步调整
    连线:
    (1)自动连线:单击起始引脚,鼠标指针变为“十”字形,移动鼠标至目标引脚或导线,单击,则连线完成,当导线连接后呈现丁字交叉时,系统自动在交叉点放节点(Junction);
    (2)手动连线:单击起始引脚,鼠标指针变为“十”字形后,在需要拐弯处单击,可以固定连线的拐弯点,从而设定连线路径;
    (3)关于交叉点,Multisim10默认丁字交叉为导通,十字交叉为不导通,对于十字交叉而希望导通的情况,可以分段连线,即先连接起点到交叉点,然后连接交叉点到终点;也可以在已有连线上增加一个节点(Junction),从该节点引出新的连线,添加节点可以使用菜单Place/Junction,或者使用快捷键Ctrl+J。
    进一步调整:
    (1)调整位置:单击选定元件,移动至合适位置;
    (2)改变标号:双击进入属性对话框更改;
    (3)显示节点编号以方便仿真结果输出:菜单Options/Sheet Properties/Circuit/Net Names,选择Show All;
    (4)导线和节点删除:右击/Delete,或者点击选中,按键盘Delete键。

    图13.1-10是连线和调整后的电路图,图13.1-11是显示节点编号后的电路图。

    图13.1-10 连线和调整后的电路图

          (a)显示节点编号对话框                 (b)显示节点编号后的电路图
    

    图13.1-11 电路图的节点编号显示
    5.电路仿真
    基本方法:
    按下仿真开关,电路开始工作,Multisim界面的状态栏右端出现仿真状态指示;
    双击虚拟仪器,进行仪器设置,获得仿真结果

    图13.1-12是示波器界面,双击示波器,进行仪器设置,可以点击Reverse按钮将其背景反色,使用两个测量标尺,显示区给出对应时间及该时间的电压波形幅值,也可以用测量标尺测量信号周期。

    图13.1-12 示波器界面(右图为点击Reverse按钮将背景反色)

    1. 输出分析结果
      使用菜单命令Simulate/Analyses,以上述单管共射放大电路的静态工作点分析为例,步骤如下:
      菜单Simulate/Analyses/DC Operating Point
      选择输出节点1、4、5,点击ADD、Simulate

    图13.1-13 静态工作点分析

    13.2 二极管及三极管电路13.2.1 二极管参数测试仿真实验
    半导体二极管是由PN结构成的一种非线性元件。典型的二极管伏安特性曲线可分为4个区:死区、正向导通区、反向截止区、反向击穿区,二极管具有单向导电性、稳压特性,利用这些特性可以构成整流、限幅、钳位、稳压等功能电路。
    半导体二极管正向特性参数测试电路如图13.2-1所示。表13.2-1是正向测试的数据,从仿真数据可以看出:二极管电阻值不是固定值,当二极管两端正向电压小,处于“死区”,正向电阻很大、正向电流很小,当二极管两端正向电压超过死区电压,正向电流急剧增加,正向电阻也迅速减小,处于“正向导通区”。

    图13.2-1 二极管正向特性测试电路

    表13.2-1 二极管正向特性仿真测试数据
    Rw
    10%
    20%
    30%
    50%
    70%
    90%
    Vd/mV
    299
    496
    544
    583
    613
    660
    Id/mA
    0.004
    0.248
    0.684
    1.529
    2.860
    7.286
    rd=Vd/Id(欧姆)
    74750
    2000
    795
    381
    214
    90.58

    半导体二极管反向特性参数测试电路如图13.2-2所示。

    图13.2-2 二极管反向特性测试电路
    表13.2-2是反向测试的数据,从仿真数据可以看出:二极管反向电阻较大,而正向电阻小,故具有单向特性。反向电压超过一定数值(VBR),进入“反向击穿区”,反向电压的微小增大会导致反向电流急剧增加。
    表13.2-2 二极管反向特性仿真测试数据
    Rw
    10%
    30%
    50%
    80%
    90%
    100%
    Vd/mV
    10000
    30000
    49993
    79982
    80180
    80327
    Id/mA
    0
    0.004
    0.007
    0.043
    35
    197
    rd=Vd/Id(欧姆)

    7.5E6
    7.1E6
    1.8E6
    2290.9
    407.8

    13.2.2 二极管电路分析仿真实验
    二极管是非线性器件,引入线性电路模型可使分析更简单。有两种线性模型:
    (1)大信号状态下的理想二极管模型,理想二极管相当于一个理想开关;
    (2)正向压降与外加电压相比不可忽略,且正向电阻与外接电阻相比可以忽略时的恒压源模型,即一个恒压源与一个理想二极管串联。
    图13.2-3是二极管实验电路,由图中的电压表可以读出:二极管导通电压Von = 0.617V; 输出电压Vo = -2.617V。

    图13.2-3二极管实验电路(二极管为IN4148)
    利用二极管的单向导电性、正向导通后其压降基本恒定的特性,可实现对输入信号的限幅,
    图13.2-4(a)是二极管双向限幅实验电路。V1和V2是两个电压源,根据电路图,上限幅值为:V1+Von,下限幅值为:–V2–Von。在Vi的正半周,当输入信号幅值小于(V1+Von)时,D1、D2均截止,故Vo = Vi;当Vi大于(V1+Von)时,D1导通、D2截止,Vo = V1+Von≈4.65V;在Vi的负半周,当|Vi| < V2+Von时,D1、D2均截止,Vo = Vi;当|Vi| >(V2+Von)时,D2导通、D1截止,Vo = -(V2+Von)≈ -2.65V。图13.2-4(b)是二极管双向限幅实验电路的仿真结果,输出电压波形与理论分析基本一致。

    (a)二极管双向限幅仿真电路 (b)输出电压波形
    图13.2-4 二极管双向限幅实验电路
    13.2.3 三极管特性测试
    选择虚拟晶体管特性测试仪(IV-Analysis)XIV1,双击该图标,弹出测试仪界面,进行相应设置,如图13.2-5所示,点击Sim_Param按钮,设置集射极电压的起始范围、基极电流的起始范围,以及基极电流增加步数Num_Steps(对应特性曲线的根数),单击仿真按钮,得到一簇三极管输出特性曲线。
    右击其中的一条曲线,选择show select marts,则选中了某一条特性曲线,移动测试标尺,则在仪器界面下部可以显示对应的基极电流、集射极电压、集电极电流。根据测得的和值,可以计算出该工作点处的直流电流放大倍数,根据测得的和,可以计算出交流电流放大倍数。

    图13.2-5 用晶体管特性测试仪测量三极管特性
    13.3 单管基本放大电路13.3.1 共射放大电路仿真实验
    放大是对模拟信号最基本的处理,图13.3-1是单管共射放大电路(NPN型三极管)的仿真电路图。

    图13.3-1 单管共射放大电路(NPN型三极管)
    进行直流工作点分析,采用菜单命令Simulate/Analysis/DC Operating Point,在对话框中设置分析节点及电压或电流变量,如图13.3-2所示。图13.3-3是直流工作点分析结果。

    图13.3-2 直流工作点分析对话框

    图13.3-3 直流工作点分析结果
    当静态工作点合适,并且加入合适幅值的正弦信号时,可以得到基本无失真的输出,如图13.3-4所示。

    图13.3-4 单管共射放大电路输入输出波形
    但是,持续增大输入信号,由于超出了晶体管工作的线性工作区,将导致输出波形失真,如图13.3-5(a)所示,图13.3-5(b)是进行傅里叶频谱分析的结果,可见输出波形含有高次谐波分量。

    (a)输出波形失真 (b)傅里叶频谱分析结果
    图13.3-5 增大输入后的失真输出波形及其频谱分析结果
    静态工作点过低或者过高也会导致输出波形失真,如图13.3-6所示,由于基极电阻过小,导致基极电流过大,静态工作点靠近饱和区,集电极电流也因此变大,输出电压,大的集电极电流导致整个电路的输出电压变小,因此从输出波形上看,输出波形的下半周趋于被削平了,属于饱和失真。

    图13.3-6 减小Rb后的失真输出波形

    13.3.2 场效应管放大电路仿真实验

    1. 场效应管的转移特性
      场效应管的转移特性指漏-源电压固定时,栅-源电压对漏极电流的控制特性,即 ,按照图13.3-7搭建N沟道增强型场效应管转移特性实验电路,单击Multisim10 菜单“Simulate/Analyses/DC Sweep…”选择直流扫描分析功能,在弹出的对话框“Analysis Parameters”中设置所要扫描的直流电源,并设置起始和终止值、步长值,在“Output”选项卡中选择节点2的电压V[2]为分析节点,由于源极电阻,所以电压V[2]的数值等于源极电流,也等于漏极电流。由图13.3-7(b)可知,N沟道增强型场效应管2N7002的开启电压V。

    (a)仿真电路 (b)转移特性仿真结果
    图13.3-7 场效应管转移特性直流扫描分析
    2. 场效应管共源放大电路
    图13.3-8是场效应管共源放大电路仿真实验电路图,调整电阻和构成的分压网络可以改变,从而改变电压放大倍数。此外,改变电阻、也可改变输出电压。

    (a)仿真电路 (b)输入和输出电压波形
    图13.3-8 场效应管共源放大电路仿真
    13.4 放大电路指标测量13.4.1 输入电阻测量
    万用表可以测量交直流电压、交直流电流、电阻、电路中两个节点之间的分贝损耗,不需用户设置量程,参数默认为理想参数(比如电流表内阻为0),用户可以修改参数。点击虚拟仪器万用表(Multimeter),接入放大电路的输入回路,本例中将万用表设置为交流,测得的是有效值(RMS值)。由于交流输入电阻要在合适的静态工作点上测量,所以直流电源要保留。
    由图13.4-1可见,测得输入回路的输入电压有效值为3.536mV,电流为2.806μA,输入电阻。
    在实验室中进行的实物电路的输入电阻测量要采用间接测量方法,这是因为实际的电压表、电流表都不是理想仪器,电流表内阻不是0,而电压表内阻不是无穷大。

    (a) 输入电阻测量电路

    (b)电压、电流测量结果
    图13.4-1 放大电路输入电阻测量电路图
    13.4.2 输出电阻的测量
    采用外加激励法,将信号源短路,负载开路,在输出端接电压源,并测量电压、电流,如图13.4-2所示。
    由图13.4-2可见,测得输出回路的激励电压有效值为707.106mV,电流为517.861μA,输出电阻。

    (a)输出电阻测量

    (b)电压、电流测量结果
    图13.4-2 放大电路输出电阻测量电路图

    13.4.3 幅频特性的测量
    可以用示波器测量放大电路的增益,以电阻分压式共射放大电路为例,图13.4-3(a)是测量电压放大倍数的电路图,图13.4-3(b)是示波器输出波形。
    移动测试标尺可以读出输入输出波形幅值,进而计算出电压放大倍数,但是,可以发现,标尺处于不同位置计算出的结果不同,仅可作为估计值,此外,输出波形与输入波形相比,存在一定相移,不是理想的反相,即发生了相移,相移大小与频率有关,这就是该放大电路的相频特性。
    除了用示波器进行放大倍数测量的方法。还有两种方法:扫描分析法和波特仪测量法。

    (a) (b)
    图13.4-3 分压式共射放大电路放大倍数的测量

    1. 扫描分析法
      由菜单Simulate/Analyses/AC Analysis,弹出AC Analysis(交流分析)对话框,如图13.4-4所示,选项卡Frequency Parameters中设置Start frequency(起始频率,本例设为1Hz)、Stop frequency(终止频率,本例设为10GHz)、Sweep type(扫描方式,本例设为Decade,十倍频扫描)、Number of points per decade(每十倍频的采样点数,默认为10)、Vertical scale(纵坐标刻度,默认是Logarithmic,即对数形式,本例选择Linear,即线性坐标,更便于读出其电压放大倍数)。
      在Output选项卡中选择节点5的电压V[5]为分析变量,按下Simulate(仿真)按钮,得到图13.4-4(b)所示的频谱图,包括幅频特性和相频特性两个图。
      在幅频特性波形图的左侧,有个红色的三角块指示,表明当前激活图形是幅频特性,为了详细获取数值信息,按下工具栏的Show/Hide Cursors按钮,则显示出测量标尺和数据窗口,移动测试标尺,则可以读取详细数值,如图(c)和(d)所示。同理,可激活相频特性图形,进行相应测量。

    (a)AC Analysis对话框 (b)被分析节点的幅频和相频特性

    (c) 用测试标尺读取详细数值 (d)频响数据
    图13.4-4 扫描分析法进行放大电路幅频特性测量
    2. 波特仪测量法
    波特仪(Bode Plotter)也称为扫频仪,用于测量电路的频响(幅频特性、相频特性),将波特仪连接至输入端和被测节点,如图13.4-5(a)所示,双击波特仪,获得频响特性,图13.4-5(b)是幅频响应,图13.4-5(c)是相频响应。

    (a)波特仪测试频响电路图

    (b)幅频特性测试结果

    (c)相频特性测试结果
    图13.4-5 扫描分析法进行放大电路幅频特性测量
    波特仪的面板设置:
    (1)Mode:模式选择,点击Magnitude获得幅频响应曲线,选择Phase获得相频响应曲线;
    (2)水平和垂直坐标:点击Log选择对数刻度,点击Lin选择线性刻度;
    (3)起始范围:F文本框内填写终了值及单位,I文本框内填写起始值及单位。
    13.5 差动放大电路13.5.1 差动放大电路仿真电路
    直接耦合是多级放大的重要级间连接方式,对直流信号、变化缓慢的信号只能用直接耦合,但随之而来的是零点漂移问题,影响电路的稳定,解决这个问题的一个办法是采用差动放大电路,在电子设备中常用差动放大电路放大差摸信号,抑制温度变化、电源电压波动等引起的共模信号。
    图13.5-1是差动放大电路仿真电路,是由两个相同的共射放大电路组成的,当开关J1拨向左侧时,构成了一个典型的差动放大电路,调零电位器Rw用来调节Q1、Q2管的静态工作点,使得输入信号为0时,双端输出电压(即电阻RL上的电压)为0。
    当开关J1拨向右侧时,构成了一个具有恒流源的差动放大电路,用恒流源代替射极电阻Re,可以进一步提高抑制共模信号的能力。
    差动放大电路的输入信号既可以是交流信号,也可以是直流信号。图13.5-1中,输入信号由函数发生器提供,函数发生器(Function Generator)可以产生正弦波、三角波、矩形波电压信号,可设置的参数有:频率、幅值、占空比、直流偏置,频率范围很宽(0.001pHz~1000THz)。
    差动放大电路需要一正一负两个电压源,实际中不存在负的电压源,将正极接地,则电压源的负极可以提供负的电压,因此,按照图中的接法可以提供正负电压源。
    差动放大电路有两个输入端和两个输出端,因此电路组态有双入双出、双入单出、单入双出、单入单出4种,凡是双端输出,差摸电压放大倍数与单管情况下相同,凡是单端输出,差摸电压放大倍数为单管情况下的一半。

    图13.5-1 差动放大电路仿真电路
    13.5.2 差动放大电路的调零
    调零是指差动放大器输入端不接入信号,调整电路参数使两个输出端达到等电位。
    图13.5-2中是调整电位器Rw,使节点3和节点4的电压相同,这时可认为左右两侧的电路已经对称,调零工作完成。
    图中的电压读数也是两个三极管的集电极静态工作电压。

    图13.5-2 差动放大电路的调零
    13.5.3 差动放大电路的静态工作点
    采用菜单命令Simulate/Analysis/DC Operating Point,选择节点仿真可以获得静态工作点指标,下面采用另一种方法,将电流表和电压表接入仿真电路,获得更直观的静态工作点测量结果,如图13.5-3所示。

    图13.5-3 差动放大电路的静态工作点测量
    13.5.4 差模增益和共模增益测量

    1. 差模电压增益
      双端输入双端输出情况下的差摸电压放大倍数是输出端电压差除以输入端电压差。
      为获得较大电压增益,将仿真电路的参数进行一些调整,测量电路如图13.5-4所示。
      函数发生器设置为输出正弦波,频率1kHz,幅值5mV,“+”端和“-”端接入差动放大电路的两个输入端,COM端接地。
      用电压表测量输入端的电压差,注意双击电压表,将测量模式(Mode)改为交流(AC)模式。
      由图中测量数据,输入端电压差为7.071mV,输出端电压差为308.991mV,双入双出模式时的差摸电压增益为。
      当开关J1拨向右侧时,以恒流源代替射极电阻,则差摸电压增益增加到。
      仿真可发现,负载电阻RL对增益值影响很大,此外,调零电阻Rw、基极电阻Rb1、Rb2、集电极电阻Rc1、Rc2均有影响。

    图13.5-4 双入双出差动放大电路的差摸增益测量

    1. 共模电压增益
      将两输入端短接,COM端接地,构成共模输入方式,如图13.5-5所示。
      调整输入信号频率为1kHz,幅值为1mV,在负载电阻两端接万用表,测得输出电压为6pV左右,“皮”的数量级为10-12,几乎为零。可见,差动放大电路对共模信号有很强的抑制效果。

    图13.5-5 双入双出差动放大电路的共摸增益测量
    13.6 集成运放电路
    由分立元件构成的电路具有电子设计上灵活性大的优点,但缺点是功耗大、稳定性差、可靠性差,此外,设计本身较复杂。集成电路采用微电子技术构成具有特定功能的电路系统模块,与分立元件构成的电路相比,性能有了很大提高,电子设计也更为简单。
    集成运算放大器是高增益、高输入阻抗、低输出阻抗、直接耦合的线性放大集成电路,功耗低、稳定性好、可靠性高。可以通过外围元器件的连接构成放大器、信号发生电路、运算电路、滤波器等电路。
    以集成运放μA741为例,图13.6-1是μA741的管脚示意图及实物照片。

    图13.6-1 集成运放μA741管脚示意图及实物照片

    13.6.1 比例放大电路
    用μA741组成同相比例放大电路,仿真电路图如图13.6-2所示。根据同相比例电路的增益公式,图13.6-2的电压增益应为:。

    (a)同相比例放大电路

    (b)输入、输出电压波形
    图13.6-2 集成运放μA741构成的同相比例放大电路
    从波形上看,输入、输出同相位,用测试标尺测量幅值,可发现输出与输入的比例为3,在一定范围内调整负载电阻,波形基本不变,说明该电路带负载能力强。同理,可以进行反相比例放大电路的仿真,图13.6-3是集成运放μA741构成的反相比例放大电路,其电压增益应为:,这与示波器读数一致。

    图13.6-3 集成运放μA741构成的反相比例放大电路及波形
    由仿真可见,由运算放大器构成比例放大电路的电路结构简单、设计容易、性能稳定、带负载能力强。
    13.6.2有源滤波电路
    根据滤波电路中有无有源元件可将滤波器电路分为无源滤波器和有源滤波器,无源滤波器由无源元器件(电阻、电容、电感)构成电路网络,但其滤波特性随着负载的变化而变化,负载效应明显,不能满足很多应用场合的要求,有源滤波器则通过运放电路提高输入阻抗,降低输出阻抗而大大减少了负载效应。
    简单的有源滤波器是在无源滤波器输出端接一个由运放电路构成的电压跟随器或同相比例放大器,使得滤波的同时可以放大信号,并且提高带负载能力。
    图13.6-4是简单的二阶低通有源滤波电路,运放U1和电阻Rf、R3构成同相比例放大电路,放大倍数为,电阻R1、电容C1、电阻R2、电容C2组成的RC网络是二阶低通滤波电路,其特征频率为Hz。信号源是幅值为1V的交流电压源。
    用菜单命令Simulate/Analyses/AC Analysis对其进行交流分析,频率范围设置为1Hz~1MHz,扫描类型Sweep type选择Decade,纵坐标Vertical Scale选择Linear,Output选项卡中选择节点4作为分析节点,单击Simulate按钮,可得到其频率特性,如图13.6-5所示。

    图13.6-4 简单二阶低通有源滤波电路
    由频率特性可以看出:最大输出为1.9996V,截止频率为对应V(即增益下降3dB)的频率,约为125.4003Hz(标尺2处),而在特征频率处(标尺1处,338.2989Hz),幅值已下降至672.8329mV,可见,实际的截止频率远小于特征频率。为缩小二者的差别,可引入正反馈增大特征频率处的幅值,这就是所谓的压控电压源二阶低通滤波器。

    图13.6-5简单二阶低通有源滤波电路的频率特性

    将电容C1的下端直接接在滤波器输出端,构成图13.6-6所示的压控电压源二阶低通滤波器,其频率特性如图13.6-7所示。

    图13.6-6 压控电压源二阶低通滤波电路

    图13.6-7 压控电压源二阶低通滤波电路的频率特性
    可以看出,特征频率处的幅值有所增大,在特征频率处(测量标尺1,338.2989Hz)幅值增大为1.9857V,截止频率为1.414V所对应的频率,在测量标尺2处(幅值为1.3912),对应频率为439.2605Hz,二者差距由约213Hz缩小至约100Hz,特征频率和截止频率差距大大缩小了。
    品质因数Q的物理意义是特征频率处的电压增益与通带电压增益之比,理论分析给出品质因数Q与通带增益的关系为:,而在本节例子中,通带增益,因此,改变运放电阻或者即可改变品质因数。
    13.7 直流稳压电源13.7.1 桥式整流滤波电路
    建立如图13.7-1所示的单相桥式整流滤波电路,变压器取值Basic Group组的BASIC_VIRTUAL中的TS_VIRTUAL,设置变比(本例设为10),变压器的二次侧有3个抽头,可以有两种接法,如图13.7-1中的(a)和(b)所示,前者的整流波形最大值约为15V,后者约为30V,整流桥选自Diodes组中的FWB中的元件。

    (a)变压器输出15V整流波形

    (b)变压器输出30V整流波形
    图13.7-1 单相桥式整流滤波电路
    以图13.7-1(b)电路为例,图13.7-2是该单相桥式整流滤波电路的输出波形,图(a)是未接入滤波电容C1时的输出波形,即整流桥输出波形,图(b)是接入滤波电容C1时的输出波形,可见,桥式整流后用滤波电容进行滤波,电压平均值上升,电压波动(波纹系数)减小了。
    但是,RC回路参数对波形影响很大,波形与滤波电容的大小有关系,也与负载大小有关系。将负载增至10kΩ,输出波形如图13.7-2(c)所示,可见输出电压的波动进一步减小,若继续将滤波电容增至100μF,则电压波形趋于理想,如图13.7-2(d)所示。
    当负载较轻(对应负载电阻大),对电压波形要求不高时,可采用这种方式提供直流电压,为减少纹波系数,可适当增大滤波电容。

    (a)未接入滤波电容C1时的输出波形 (b)接入滤波电容C1时的输出波形

    (c)电容为47μF、负载为10kΩ时的输出波形 (d)电容为100μF、负载为10kΩ时的输出波形
    图13.7-2 单相桥式整流滤波电路的输出波形
    13.7.2 串联线性稳压电路
    串联稳压是指稳压元件(调整三极管)与负载串联的稳压电路,图13.7-3是串联线性稳压电路,稳压管取自Diodes组的DIODES_VIRTUAL中的ZENER_VIRTUAL,可修改稳压值;调整三极管的选择要确保最大耗散功率满足要求(一般不小于2W),并保证电流输出能力(对应最小输出电压);取样电阻取千欧级以降低功耗。

    图13.7-3 串联线性稳压电路

    图13.7-4是串联线性稳压电路的输入、输出波形,示波器上部的波形是串联稳压电路输入电压信号,可见存在电压纹波,下部的波形是串联稳压电路的输出电压信号,几乎是理想的直流电压。
    调整取样电位器,可以调整输出电压的幅值,获得一定可调范围的直流输出电压。

    Multisim入门到精通视频教程:如果需要请私信我

    展开全文
  • 天线基础与HFSS天线设计流程

    万次阅读 多人点赞 2019-04-28 15:10:10
    目录 天线基础 1.1 电基本振子的辐射场 1. 近区场 2. 远区场 1.2 天线的性能参数 1. 方向图 2. 辐射强度 3.方向性系数 ...2.创建天线的结构模型 3.设置边界条件【Assign Boundary】 4. 设...
  • 内部框图 支持PWM和SMBus两种模式 管脚定义 参考电路: SMBus模式,需要接两根线SDA和SCL,SDA和SCL需要接上拉电阻。 SMBus模式电路 PWM模式,将SDA接到MCU带有PWM功能的管脚,上拉10K电阻到MCU的供电电源上,SCL...
  • 维纳滤波

    万次阅读 多人点赞 2016-12-17 16:55:43
    本文主要介绍FIR方式实现的维纳滤波器。维纳滤波原理维纳滤波器通常用于提取被噪声污染的有用信号,它是以最小均方误差准则进行滤波的,下面对该准则下的最优滤波器系数进行推导。 图1.1 维纳滤波器
  • 本文提供粒子群算法简介和一个算法举例,提供粒子群算法仿真PID的M文件代码...另外,本文还提供了一动态simulink仿真方法,可以让M文件和simulink文件之间互相交换数据,实现仿真与程序的反馈,增加了仿真的灵活度。
  • 一篇文章讲清python开发必懂的8数据结构

    千次阅读 多人点赞 2021-08-05 09:08:57
    出于这个原因,大多数顶级公司都要求对数据结构有很深的理解,并在编码面试中对其进行深入的考察。 下面是我们今天要讲的内容: 什么是数据结构? 在Python中数组 队列在Python中 栈在Python中 Python中的链表 Python...
  • 2019年电赛H题电磁炮实录

    万次阅读 多人点赞 2019-10-25 10:41:24
    这边有两种思路: 一种是通过纯数学公式模拟整个模型,得出α(x)与s(fx)的关系式,进而确定每次的仰角。用matlab数值模拟将( ∗ * ∗)式解出,V取平射能达到两米时的初速,h由题目给定。 另一种是直接枚举出所有...
  • AHP层次分析法

    万次阅读 多人点赞 2014-02-21 01:07:12
    2014年参加数学建模美赛, 其中一道题是选出5大优秀教练,数据来源要求自行寻找。 在比赛中,我们运用了层次分析法(AHPAnalytic Hierarchy ...文章内容主要参阅 《matlab数学建模算法实例与分析》,部分图片来...
  • 图像去噪算法综述

    万次阅读 多人点赞 2019-03-22 16:43:18
    图像降噪算法总结 分析各种算法的优点和缺点 1、BM3D 降噪 2、DCT 降噪 3、PCA 降噪 4、K-SVD 降噪 5、非局部均值降噪 6、WNNM 降噪 7、基于主成分分析和双边滤波的图像降噪算法 ...BM3D 是一降噪方法提高了图像在...
  • 位置式PID与增量式PID区别浅析

    万次阅读 多人点赞 2019-04-26 08:55:12
    1PID控制算法 什么是PID PID 控制器以各种形式使用超过了 1 世纪,广泛应用在机械设备、气动设备 和电子设备.在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法 ...它的结构...
  • 1 索引介绍 ... 我们知道,数据库查询是数据库的最主要功能之一,例如下面的SQL语句: SELECT * FROM my_table WHERE col2 = '77' 可以从表“my_table”中获得“col2”为“77”的数据记录。  我们
  • x = input('Please input an integer of 4 digits meaning the year:') if x%400==0 or (x%4==0 and not x%100==0): print 'Yes' else: print 'No' 3.3 Python 提供了两种基本的循环结构: for 循环 和 while ...
  • DSP入门应该懂得57个问题

    万次阅读 多人点赞 2017-08-05 16:06:35
    一.DSP的C语言同主机C语言的主要区别? 1)DSP的C语言是标准的ANSI C,它不包括同外设联系的扩展部分,如屏幕绘图等。但在CCS中,为了方便调试,可以将数据通过prinf命令虚拟输出到主机的屏幕上。  2)DSP的C语言的...
  • 计算机体系结构课后答案

    万次阅读 多人点赞 2018-12-19 21:02:07
    层次机构:按照计算机语言从低级到高级的次序,把计算机系统按功能划分成多级层次结构,每一层以一不同的语言为特征。这些层次依次为:微程序机器级,传统机器语言机器级,汇编语言机器级,高级语言机器级,应用...
  • 本文代码实现基本按照《数据结构》课本目录顺序,外加大量的复杂算法实现,一篇文章足够。能换你一个收藏了吧?
  • 图的两种遍历方式

    万次阅读 多人点赞 2019-04-06 21:14:18
    遍历是指从某个节点出发...树的遍历过程,根据访问规则的不同主要分为四遍历方式: (1)先序遍历 (2)中序遍历 (3)后序遍历 (4)层次遍历 类似的,图的遍历是指,从给定图中任意指定的顶点(称为初始点...
  • 根据此书所做随笔笔记。 一、绪论 1.1、数据机构的研究内容 ...由于数据必须在计算机中处理,因此不能局限于数据本身的数学问题的研究,还必须考虑数据的物理结构,即数据在计算机中的存储结构。 1.
  • 第1章 绪论 习题 1.简述下列概念:数据、数据元素、数据项、数据对象、数据...4.存储结构哪两种基本的存储方法实现? 5.选择题 (1)在数据结构中,从逻辑上可以把数据结构分成( )。 A.动态结构和静态结
  • 数据结构之图的基本介绍

    万次阅读 2020-06-29 14:37:32
    图(Graph)是一数据结构,由顶点(vertex)和边(edge)组成,通常表示为G=(V,E): G:表示一个图 V:表示图中顶点的集合,顶点集V有穷且非空 E: 表示图中边的集合,边集E可以是空的 边:个顶点之间的连接。 ...
  • 数据结构(C语言版 第2版)课后习题答案 严蔚敏 等 编著,仅供参考,还是自己认真做了再看 第1章 绪论 5.选择题 (1)在数据结构中,从逻辑上可以把数据结构分成( C )。 A.动态结构和静态结构 B.紧凑结构和...
  • 前言 这是我听老师讲课做的笔记,考试要看的。 作者:RodmaChen 关注我的csdn博客,更多数据结构...3.线性结构的顺序存储结构是一 ① 的存储结构,线性结构的链式存储是一 ② 的存储结构。4.下面程序的时间复杂度
  • 多传感器融合的四经典结构

    万次阅读 多人点赞 2019-02-17 11:39:00
    多传感器信息融合的结构模型一般基本形式: 集中式、分散式和分级式结构,分级式又分为反馈结构和无反馈结构。   集中式结构   (使用卡尔曼滤波技术) F(k)为状态转移矩阵, X(k)是k时刻目标的...
  • 两种PID算法的使用

    千次阅读 2020-08-03 11:07:51
    1PID控制算法 什么是PID PID 控制器以各种形式使用超过了 1 世纪,广泛应用在机械设备、气动...它的结构简单,参数易 于调整,是控制系统中经常采用的控制算法。 PID:比例单元(P)、积分单元(I)和微分单元(D)
  • 宏定义有无参数宏定义和参数宏定义两种。  无参数的宏定义的一般形式为  # define 标识符 字符序列 其中# define之后的标识符称为宏定义名(简称宏名),要求宏名与字符序列之间用空格符分隔。这种宏定义要求...
  • Redis六底层数据结构

    万次阅读 多人点赞 2019-04-19 09:16:39
    Redis底层数据结构有:简单动态字符串、双向链表、字典、跳跃表、整数集合和压缩列表。 一、简单动态字符串 Redis没有直接使用c语言传统的字符串表示,而是自己构建了一名为简单动态字符串的可以被修改的抽象类型...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 233,551
精华内容 93,420
关键字:

v带结构主要有哪两种