基于雙麥克風聲源定位的視頻跟蹤
摘要:聲源定位跟蹤技術在當今社會有著越來越廣泛的應用。在此使用兩個高靈敏度麥克風作為傳感器,配以音頻信號處理芯片,接收音頻信號并進行模數轉換,使用FPGA器件作為核心控制器,結合TDOA算法和ILD算法,實現在室內環境下、二維平面內的聲源定位。并根據聲源定位的信息驅動攝像頭轉動,使其一直對準于聲源所在位置,并保持持續跟蹤。FPGA使用NiosⅡ內核,方便使用高級語言進行程序設計。攝像頭的視頻輸出信號可接于PC機或其他視頻設備。與其他定位算法相比,系統減少了使用傳感器的數量。
本文引用地址:http://www.j9360.com/article/201610/307131.htm在日常生活中,聲源跟蹤定位技術有著廣泛的應用。例如在視頻會議中,聲源定位被用于檢測講話人的位置,并自動調整攝像頭轉動角度,使其對準講話者;舞臺演出中,聲源定位跟蹤可是攝像頭自動保持指向主持人或主角;安防保衛系統中,聲源定位技術可使監控攝像頭在監控區域發生聲響的瞬間對準于聲源位置,并保持對移動聲源的跟蹤。
現在常見的麥克風聲源定位算法多見于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算法相結合的方法實現定位操作。比現有的設計減少一個麥克風,使系統體積更小,同時也降低了麥克風安放的要求,使麥克風可以根據具體環境更加靈活的放置。
評論