基于双麦克风声源定位的视频跟踪
扫描二维码
随时随地手机看文章
摘要:声源定位跟踪技术在当今社会有着越来越广泛的应用。在此使用两个高灵敏度麦克风作为传感器,配以音频信号处理芯片,接收音频信号并进行模数转换,使用FPGA器件作为核心控制器,结合TDOA算法和ILD算法,实现在室内环境下、二维平面内的声源定位。并根据声源定位的信息驱动摄像头转动,使其一直对准于声源所在位置,并保持持续跟踪。FPGA使用NiosⅡ内核,方便使用高级语言进行程序设计。摄像头的视频输出信号可接于PC机或其他视频设备。与其他定位算法相比,系统减少了使用传感器的数量。
在日常生活中,声源跟踪定位技术有着广泛的应用。例如在视频会议中,声源定位被用于检测讲话人的位置,并自动调整摄像头转动角度,使其对准讲话者;舞台演出中,声源定位跟踪可是摄像头自动保持指向主持人或主角;安防保卫系统中,声源定位技术可使监控摄像头在监控区域发生声响的瞬间对准于声源位置,并保持对移动声源的跟踪。
现在常见的麦克风声源定位算法多见于TDOA算法,其基本原理是根据信号到达两个不同位置的麦克风的时间差,估计出信号到达两个不同位置麦克风的距离差,可以列出一个双曲线方程,同时使用另外两个不同的麦克风同时检测信号可以得到另外一个双曲线方程,两个双曲线方程的交点就是声源的位置坐标。使用这种方法进行声源定位时,至少要使用三个麦克风,使用两次TDOA算法进行运算,才能完成一次定位操作。为了实现更精确的声源定位,也常采用阵列技术,将多个麦克风组成线阵,或方阵采集信号进行声源定位。但这种定位技术的算法更为复杂。本文采用两个高灵敏度麦克风作为传感器,选用FPGA作为控制器,当对声源实现定位后,控制步进电机转动,使摄像头对准声源。当声源位置发生移动时,可使摄像头自动保持跟踪。
1 设计原理
系统使用TDOA算法和ILD算法相结合的方法,实现声源的定位。在二维平面,即声源和麦克风处于同一平面时,麦克风接收到的信号模型在考虑信号传播的逆平方定律时可表示为:
x(t)=s(t-τ)/d+n(t) (1)
式中:s(t)为源信号;n(t)为加性白噪声;d和τ分别为信号到达麦克风的距离和时延。
使用ILD方法在计算能量时可以忽略时延信息。在[0,l]时间范围内,麦克风接收到的信号能量,就是该时间段内信号采样的平方和,即:
对于两个麦克风组成的阵列,可得到麦克风接收到信号的能量与麦克风距声源距离的关系为:
求解式(6)和式(7)组成的方程组就可得到声源位置坐标。通过进一步的变换可以得到该方程的闭合解。
2 系统硬件设计
本文采用Altera公司的CycloneⅢ系列FPGA芯片EP3C16F484作为核心处理器。使用UDA1341芯片作为前端音频信号采集电路的处理芯片,使用两个高灵敏度的麦克风作为音频信号的传感器。两个麦克风朝向同一方向,间距0.5 m并行放置。麦克风在使用前需要标定,保证麦克风在同一位置接受同一信号时,其接收到的信号的幅值一致。使用两个两相步进电机对摄像头的转动角度进行控制。为了记录数据,在系统中添加了一个4 Mb的FLASH存储器,使用一片带字库的16x2的液晶用于显示定位信息。为保证摄像头的视线不受环境障碍物的干扰,摄像头在放置时应该有一定的高度,一般高于麦克风的放置高度,因此需要两个步进电机调整摄像头的角度,一个调整水平转动角度,另一个调整俯仰角。系统框图如图1所示。
EP3C16F484是CycloneⅢ型FPGA,是一种低成本的应用于终端市场的FPGA器件,其共有15 408个逻辑单元,56个嵌入式乘法器,4个锁相环,346个用户定义的I/O脚。可满足一般系统核心控制器的应用。UDA1341是一种经济型的音频信号采集编码芯片,有两个ADC模块,过采样比可达128,可以编程设置其各种工作参数,如增益等。系统在启动时首先进行初始化操作,通过UDA11341芯片的L3总线接口设置芯片的工作方式和工作参数。两个麦克风所接收到的音频信号经音频信号采集电路处理后,转换成离散的信号,送至FPGA中进行处理。控制器根据接收到的信号的序列判断出两个麦克风接收到信号的时差和信号功率的衰减,进而计算出声源的位置坐标。控制步进电机转动,使摄像头对准声源。系统同时将测得的声源的位置坐标在LCD显示出来。用户在使用时可根据具体的使用环境建立定位的坐标系。确定坐标系后在系统启动初始化时将两个麦克风的位置和摄像头的位置的坐标通过矩阵键盘输入到系统中。
3 系统软件设计
FPGA编程中常用的语言是VHDL和Verilog HDL语言。这两种语言都是硬件编程语言,功能强大,可用于描述数字系统的结构,功能等,逻辑性非常强,但是若用于一些信号处理方面算法的编程,则难度和工作量都比较大。Altera公司推出了可移植于FPGA芯片上的NiosⅡ内核。利用该内核可以方便的裁剪系统资源,同时使用C/C++语言进行程序的开发,大大降低了利用FPGA开发的难度。为了保证系统响应的实时性,本文使用NIOSII/f型内核。虽然占用了大量的FPGA资源,但获得了最高的系统性能。同时添加的其他系统资源包括:片上SRAM 63 KB,一个定时器,一个串口,一个JTAG接口,一个FLASH控制器CFI,一个用于矩阵键盘的5位的通用I/O口,用于液晶显示的16位通用I/O口,两个9位的通用I/O口用于前端数据采集电路的输入,两个1位的I/O口用于控制两个步进电机。在QuartersⅡ9.0开发环境中完成对NiosⅡ内核的配置和编译后,在NiosⅡIDE中使用C++语言进行程序的编写。图2为软件流程图。
系统启动后,首先进行初始化操作,设置UDA1341的工作方式,设置麦克风和摄像头的位置坐标。声源所发出的音频信号经前端信号采集电路处理后变为离散时间信号。系统每次从前端信号处理电路的两路输出中读取相同时间段的相同长度的序列后,将其存储在内存中,直到下次读入数据进行更新。系统对读入的音频数据进行归一化运算,消除两个麦克风接收到信号的能量的差异。然后对两列信号进行广义的互相关运算,判断是否有有效的声源信号的输入。若有有效地声源信号输入,则根据前端信号采集电路的采样速率,计算出两个麦克风接收到信号的时间差。并利用存储的原始信号计算出两个麦克风接收到信号的功率衰减,根据式(6),式(7),计算出声源的位置坐标,并存储。
若无有效的信号输入,则系统继续从前端处理电路中读取数据,继续判断。系统在安装时,为避免摄像头的视线被障碍物所遮挡,摄像头的安装位置应高于两个麦克风的安装高度。因此在计算摄像头的转动角度时即需要考虑摄像头的水平转动角度,也需要考虑摄像头在垂直方向上的转动角度。系统计算出声源位置坐标后,根据当前摄像头的指向,分别计算出摄像头在水平方向和垂直方向上需转动的角度,控制步进电机进行转动,使摄像头指向声源的位置。完成一次定位操作后,统继续从前端电路中读取数据,进行下次定位操作。
4 实验测试
由于在设计时只使用了两个麦克风,仅能在二维平面内实现对麦克风正面180°范围的定位和跟踪,摄像头的安放高度应高于声源的高度,否则有可能出现摄像头看不到声源位置的情况。在10.8 m×7.5 m×3.5 m的室内环境进行试验,将麦克风和摄像头置于边界,麦克风安放高度为1.5 m,和声源处于同一高度,摄像头安放高度2.0 m,为了保证能够得到方程的解,麦克风的坐标不能设置在坐标轴上;设麦克风1的坐标为(1.0,1.0),麦克风2的坐标为(1.5,1.0)。使用由信号发生器产生的脉冲信号作为声源,每组信号仅有一个脉冲,频率2 kHz,幅度3 V,每组脉冲发射间隔2 s,通过一音箱播放,室内环境保持安静。将声源以较慢的步速在室内移动,系统可实现对声源的正常跟踪,使摄像头一直将声源保持在镜头的视野范围内。图3是计算机所监测到的音频信号的波形图。上面的波形是位于右侧的麦克风所接收到的信号,下面的波形是位于左侧的麦克风所接收到的信号,其中右侧的麦克风距离声源的位置更近一些。从波形图中可以看出左侧的麦克风接收到的信号相对于右侧的麦克风有一定的时延,并且接收到信号的幅值也更小一些。系统在设计时仅使用两个麦克风作为传感器,当声源移动至两个麦克风连线的中垂线位置时,由于两个麦克风接收到的信号的能量衰减相同,无法将方程解出,此时将麦克风稍微偏转一下角度,使声源偏离中垂线位置,即可继续定位跟踪。
5 结语
在舞台和视频会议中,声源定位跟踪技术相对于其他技术具有很多优点。声源定位跟踪可实现全自动的工作模式,工作过程中不需要人为控制操纵。与相同功能的红外跟踪定位系统相比,跟踪目标身上不需要携带红外发射装置,不必考虑红外发射的角度,频率等问题。与采用图像识别实现跟踪的方法相比,其系统结构、算法等各方面更为简单。同时若将摄像头换成聚光灯,也可实现灯管的自动跟踪控制。现有的设计中,如果要确定一个二维平面的点,至少需要三个麦克风作为传感器接收信号。本设计采用两个麦克风作为系统传感器,使用TDOA算法和ILD算法相结合的方法实现定位操作。比现有的设计减少一个麦克风,使系统体积更小,同时也降低了麦克风安放的要求,使麦克风可以根据具体环境更加灵活的放置。