本發(fā)明涉及圖像拍攝采集領域,尤指一種多路相機同步采集系統(tǒng)及方法。
背景技術:
在虛擬現(xiàn)實視頻制作等領域,為了獲得更完備的視覺信息,通常需要在同一時刻采集多角度的高分辨率圖像,并以高幀速率采集。這給圖像采集系統(tǒng)提出了三個要求:1.能同時控制多臺相機,并水平擴展;2.能支持高采集帶寬;3.多相機之間的曝光觸發(fā)要同步。在現(xiàn)有技術中存在兩種技術方案予以應對上述要求,具體如下:
在現(xiàn)有技術一中,主要是通過單機控制多相機的系統(tǒng),既多相機通過gige,usb等協(xié)議與單主機pcie相連。主機通過輪詢或多線程的方式,向相機發(fā)送控制信號,并接受相機的采集數(shù)據(jù)。采集數(shù)據(jù)通過一個raid寫入到ssd陣列中。該方案中,采集帶寬受限于單機cpu核數(shù)、主頻,主板支持的pcie個數(shù),單raid卡性能,而不能水平擴展。以2048*2448,12bit位深度,60fps的圖像序列為例,單相機的數(shù)據(jù)帶寬為430mb/s,已接近usb3.0的傳輸速度。這意味著每個相機需要獨占一個線程,才能保證實時采集;同時,raid硬件的寫入帶寬上限通常需要提高并發(fā)寫入的指令數(shù)才能達到,既存儲也需要占用多個線程。即使單相機的帶寬減半,如果采集/存儲線程不獨占,觸發(fā)了線程切換,導致采集中斷,中斷時間如果超過了相機內部緩存容納的幀數(shù),會產生丟幀的情況。
在現(xiàn)有技術二中,主要是利用不同主機會控制不同的相機,主機之間通過網(wǎng)絡協(xié)議連接。該方案中,主機之間通過網(wǎng)絡協(xié)議發(fā)送控制信號的話,最小會有30ms的誤差,這個誤差是由基于tcp/ip協(xié)議的時鐘同步協(xié)議決定的,在高幀數(shù)率的情況下,這意味著多相機拍攝畫面在時間上的不同步。
技術實現(xiàn)要素:
本發(fā)明目的在于提供一種多路相機同步采集系統(tǒng)及方法,以解決高帶寬同步采集系統(tǒng)中存在的問題,使其既能同時控制多臺相機,并水平擴展;又能支持高采集帶寬;同時能夠同步觸發(fā)多相機之間的曝光。
為達上述目的,本發(fā)明提供了一種多路相機同步采集系統(tǒng),該采集系統(tǒng)具體包含:處理模組、攝像模組和信號發(fā)生器;所述攝像模組包含復數(shù)個相機;所述處理模組包含復數(shù)個處理模塊,所述復數(shù)個處理模塊中其中一個為主控處理模塊;所述主控處理模塊用于根據(jù)控制指令向復數(shù)個處理模塊分發(fā)數(shù)據(jù)采集指令;所述處理模塊與所述相機相連,用于根據(jù)所述數(shù)據(jù)采集指令設置所述相機的拍攝參數(shù),及獲取所述相機拍攝的圖像數(shù)據(jù);所述信號發(fā)生器分別與所述相機相連,用于控制所述相機同步啟動拍攝或停止拍攝。
在上述多路相機同步采集系統(tǒng)中,優(yōu)選的,所述信號發(fā)生器與所述主控處理模塊相連,當所述相機的拍攝參數(shù)設置完成后,所述主控處理模塊控制所述信號發(fā)生器輸出控制信號,控制所述相機同步啟動拍攝。
在上述多路相機同步采集系統(tǒng)中,優(yōu)選的,所述處理模塊之間通過tcp/ip協(xié)議通信連接;所述處理模塊和所述相機通過usb3.0協(xié)議通信連接;所述相機通過總線與所述信號發(fā)生器相連。
在上述多路相機同步采集系統(tǒng)中,優(yōu)選的,所述處理模塊為計算機,所述處理模塊數(shù)量與所述主控處理模塊cpu內核數(shù)量相同。
在上述多路相機同步采集系統(tǒng)中,優(yōu)選的,所述處理模塊與預定數(shù)量的所述相機相連,根據(jù)所述處理模塊的磁盤陣列容量和所述相機拍攝占用帶寬,計算獲得所述相機的預定數(shù)量。
本發(fā)明還提供一種多路相機同步采集方法,所述采集方法包含:主控處理模塊獲取客戶端發(fā)送的控制指令,根據(jù)所述控制指令向復數(shù)個處理模塊分發(fā)數(shù)據(jù)采集指令;處理模塊根據(jù)所述數(shù)據(jù)采集指令設置相機的拍攝參數(shù),及獲取所述相機拍攝的圖像數(shù)據(jù);信號發(fā)生器控制復數(shù)個相機同步啟動拍攝或停止拍攝。
在上述多路相機同步采集方法中,優(yōu)選的,所述信號發(fā)生器控制復數(shù)個相機同步啟動拍攝包含:當所述相機的拍攝參數(shù)設置完成后,所述主控處理模塊控制所述信號發(fā)生器輸出控制信號,控制所述相機同步啟動拍攝。
在上述多路相機同步采集方法中,優(yōu)選的,所述處理模塊根據(jù)所述數(shù)據(jù)采集指令設置相機的拍攝參數(shù)還包含:所述處理模塊與預定數(shù)量的所述相機相連,所述預定數(shù)量通過根據(jù)所述處理模塊的磁盤陣列容量和所述相機拍攝占用帶寬計算獲得。
在上述多路相機同步采集方法中,優(yōu)選的,所述處理模塊根據(jù)所述數(shù)據(jù)采集指令設置相機的拍攝參數(shù)還包含:當所述相機的拍攝參數(shù)設置完成后,所述處理模塊將所述相機設置為待觸發(fā)狀態(tài),所述相機根據(jù)所述控制信號觸發(fā)拍攝。
在上述多路相機同步采集方法中,優(yōu)選的,所述信號發(fā)生器控制復數(shù)個相機同步啟動拍攝或停止拍攝包含:所述信號發(fā)生器輸出方波信號,所述相機根據(jù)所述方波信號的下沿觸發(fā)拍攝。
本發(fā)明的有益技術效果在于:通過本發(fā)明所提供的多路相機同步采集系統(tǒng)及方法,不僅可以采集任意相機數(shù)量的相機陣列,而且保證了相機采集數(shù)據(jù)的同步性克服了現(xiàn)有技術中的延遲問題,再者提供了相機水平擴展的可能。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構成本申請的一部分,并不構成對本發(fā)明的限定。在附圖中:
圖1為本發(fā)明所提供的多路相機同步采集系統(tǒng)的結構示意圖;
圖2為本發(fā)明所提供的多路相機同步采集方法的流程示意圖;
圖3a至圖3c為本發(fā)明所提供的多路相機同步采集方法的一較佳實施例流程示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚明白,下面結合實施例和附圖,對本發(fā)明做進一步詳細說明。在此,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,但并不作為對本發(fā)明的限定。
請參考圖1所示,本發(fā)明提供了一種多路相機同步采集系統(tǒng),該采集系統(tǒng)具體包含:處理模組、攝像模組和信號發(fā)生器;所述攝像模組包含復數(shù)個相機;所述處理模組包含復數(shù)個處理模塊,所述復數(shù)個處理模塊中其中一個為主控處理模塊;所述主控處理模塊用于根據(jù)控制指令向復數(shù)個處理模塊分發(fā)數(shù)據(jù)采集指令;所述處理模塊與所述相機相連,用于根據(jù)所述數(shù)據(jù)采集指令設置所述相機的拍攝參數(shù),及獲取所述相機拍攝的圖像數(shù)據(jù);所述信號發(fā)生器分別與所述相機相連,用于控制所述相機同步啟動拍攝或停止拍攝。其中所述相機可為現(xiàn)有任意具備觸發(fā)拍攝的攝像元件;所述處理模塊的架設為主從結構,當實際需要時,也可設置為樹狀結構,通過頂層的控制端分別控制中層與下層的處理模塊來統(tǒng)一控制與該些處理模塊相連的相機,至于該樹狀結構中每一處理模塊所連接的相機數(shù)量,本發(fā)明在此并不做限制,相關技術人員可根據(jù)實際需要以該處理模塊具體帶寬、內核數(shù)量等因素,酌情連接對應數(shù)量的相機。以此,通過處理模塊的主從結構,使得后期再次添加相機時,只用單單加設一臺處理模塊即可,同時,該些相機因均由信號發(fā)生器控制開啟,導致所述相機采集圖像均能同步執(zhí)行,不再存在延遲的問題。
在上述實施例中,所述處理模塊之間通過tcp/ip協(xié)議通信連接,采用主從結構;控制信號由一個客戶端統(tǒng)一設置,發(fā)送給其它節(jié)點具備代理功能的處理模塊,再由該些處理模塊轉交給與相機;所述處理模塊和所述相機通過usb3.0協(xié)議通信連接,其通過該控制信號及數(shù)據(jù)采集指令來設置相機參數(shù);所述相機通過總線與所述信號發(fā)生器相連,信號發(fā)生器可直接連接在該總線上,以此保證所有相機均可根據(jù)信號發(fā)生器輸出信號同步啟動拍攝或停止拍攝。
在本發(fā)明一較佳的實施例中,所述信號發(fā)生器與所述主控處理模塊相連,當所述相機的拍攝參數(shù)設置完成后,所述主控處理模塊控制所述信號發(fā)生器輸出控制信號,控制所述相機同步啟動拍攝。其中所述信號發(fā)生器即可為人工手動控制輸出控制信號,也可與所述主控處理模塊相連,在確認所有相機均已配置拍攝參數(shù)完成后,同步啟動所有相機進行拍攝,以此避免后期相機采集數(shù)據(jù)存在延時性的問題;上述兩種控制方式可根據(jù)實際情況選擇使用,本發(fā)明在此并不做限制。
在本發(fā)明一較佳的實施例中,所述處理模塊為計算機、fpga、單片機中一個或多個的組合,所述處理模塊數(shù)量與所述主控處理模塊cpu內核數(shù)量相同。所述處理模塊與預定數(shù)量的所述相機相連,根據(jù)所述處理模塊的磁盤陣列容量和所述相機拍攝占用帶寬,計算獲得所述相機的預定數(shù)量。在該實施例中,所述處理模塊可用一切具備存儲和處理功能的服務器或元器件替代,本發(fā)明在此并不做過多限制。
綜上所述,實際工作中,本發(fā)明所提供的多路相機同步采集系統(tǒng)總體可有兩部分組成,即相機組成的相機陣列和處理模塊組成的服務器集群;其中,服務器集群通過tcp/ip協(xié)議連接,采用主從結構,控制信號由一個客戶端統(tǒng)一設置,發(fā)送給其它節(jié)點的執(zhí)行代理功能的服務器,再由代理轉交給與相機交互的采集程序;服務器與相機通過usb3.0協(xié)議連接,采集程序將有代理得到的信號發(fā)送給相機,來設置相機參數(shù);一個采集程序只負責與該主機相連的相機的設置與數(shù)據(jù)獲取,設置與數(shù)據(jù)接收是獨立的,并可以通過增加服務器水平擴展;相機之間通過gpio與一個信號發(fā)生器相聯(lián)。通過信號發(fā)生器的方波信號下沿,來觸發(fā)曝光,保證相機陣列的曝光同步。采集程序在配置過相機參數(shù)后,會將相機設置為待觸發(fā)狀態(tài),實際的拍攝起始與結束,由信號發(fā)生器通過gpio來控制,保證多相機的同步采集。在連接上述各元件時,主體是將相機通過gpio與信號發(fā)生器并聯(lián),根據(jù)相機的觸發(fā)方式設置信號的高低電平,占空比等參數(shù)。根據(jù)服務器核數(shù),確定服務器數(shù)量,服務器之間以網(wǎng)線相連。根據(jù)采集帶寬確定raid陣列的寫入帶寬。相機與服務器之間通過usb相連。
請參考圖2所示,本發(fā)明還提供一種多路相機同步采集方法,所述采集方法包含:主控處理模塊獲取客戶端發(fā)送的控制指令,根據(jù)所述控制指令向復數(shù)個處理模塊分發(fā)數(shù)據(jù)采集指令;處理模塊根據(jù)所述數(shù)據(jù)采集指令設置相機的拍攝參數(shù),及獲取所述相機拍攝的圖像數(shù)據(jù);信號發(fā)生器控制復數(shù)個相機同步啟動拍攝或停止拍攝。其中,所述主控處理模塊為所述復數(shù)個處理模塊的其中一個,其與其他處理模塊為主從結構,客戶端發(fā)送的控制指令通過所述主控模塊分發(fā)至所有處理模塊中,值得說明的是,在所述主控處理模塊根據(jù)所述控制指令分發(fā)數(shù)據(jù)采集指令時,其也會根據(jù)所述數(shù)據(jù)采集指令對與該主控處理模塊相連的相機進行拍攝參數(shù)設置,以及獲取所述相機拍攝的圖像數(shù)據(jù)。以此,通過處理模塊的主從結構,使得后期再次添加相機時,只用單單加設一臺處理模塊即可,同時,該些相機因均由信號發(fā)生器控制開啟,導致所述相機采集圖像均能同步執(zhí)行,不再存在延遲的問題。
在上述實施例中,所述處理模塊根據(jù)所述數(shù)據(jù)采集指令設置相機的拍攝參數(shù)即為現(xiàn)有的遠程通信設置相機參數(shù)技術,因其具有多種實現(xiàn)方案,且現(xiàn)有技術即可實施,為此本發(fā)明在此并不做過多限制及說明。
在上述實施例中,所述信號發(fā)生器控制復數(shù)個相機同步啟動拍攝包含:當所述相機的拍攝參數(shù)設置完成后,所述主控處理模塊控制所述信號發(fā)生器輸出控制信號,控制所述相機同步啟動拍攝。其中,所述信號發(fā)生器可通過輸出方波信號,由高低電平控制相機觸發(fā)開關,而所述相機則可根據(jù)所述方波信號的下沿觸發(fā)拍攝。
在本發(fā)明一優(yōu)選的實施例中,所述處理模塊根據(jù)所述數(shù)據(jù)采集指令設置相機的拍攝參數(shù)還包含:所述處理模塊與預定數(shù)量的所述相機相連,所述預定數(shù)量通過根據(jù)所述處理模塊的磁盤陣列容量和所述相機拍攝占用帶寬計算獲得。例如,當所述處理模塊的磁盤陣容容量可容納8臺相機同時拍攝,采集高清圖像數(shù)據(jù),此時該預定數(shù)量即可為1到8臺;同理,處理模塊的磁盤陣容容量越大,可連接的相機的數(shù)量就越高,為此本發(fā)明在此并不限制所述預定數(shù)量的具體個數(shù),本領域相關技術人員可根據(jù)實際情況設置,以保證處理模塊的利用最大化和相機采集數(shù)據(jù)的穩(wěn)定性。
在實施例中,當所述相機的拍攝參數(shù)設置完成后,所述處理模塊將所述相機設置為待觸發(fā)狀態(tài),所述相機根據(jù)所述控制信號觸發(fā)拍攝。以此,后續(xù)信號發(fā)生器可直接根據(jù)一觸發(fā)信號,如方波信號直接觸發(fā)該些相機,無需進行其他操作。
本發(fā)明一優(yōu)選實施例中,還提供一種計算機設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,其中,所述處理器執(zhí)行所述計算機程序時實現(xiàn)多路相機同步采集方法中相關步驟。
本發(fā)明一優(yōu)選實施例中,還提供一種計算機可讀存儲介質,所述計算機可讀存儲介質存儲有執(zhí)行多路相機同步采集方法的計算機程序。
為更清楚的說明上述計算機程序的實現(xiàn)邏輯,請參考圖1及圖3a-圖3c所示,圖3a為客戶端的啟動流程示意圖,具體的首先啟動采集程序,檢驗當前是否正在采集,如否,這開啟各節(jié)點采集進程,同時校驗agent是否運行,并清空所有相機的緩存后執(zhí)行采集工作;其后請參考圖3b,圖3b為單采集節(jié)點中,主線程,預覽線程與存儲線程的邏輯示意圖,首先為每一路相機創(chuàng)建采集文件夾,寫入cmd,相機元信息,其后再為每一路相機創(chuàng)建in-placebuffer,并用0去填充buffer,再啟動每一臺相機,圖像相關參數(shù),gpio相關參數(shù),開啟從相機捕獲功能,接著為每一路相機創(chuàng)建生產者線程和消費者線程,開啟消息隊列等待ipc消息,最后在關閉消息隊列,等待生成/消費線程結束,停止從相機采集,清空buffer,斷開相機連接,終止程序。在上述實施例中,為每一路相機創(chuàng)建消費者線程后,還創(chuàng)建采集文件,綁定cpu核,獲取buffer尾數(shù)數(shù)據(jù),檢驗buffer尾是否為null,如不是,則將buffer尾數(shù)據(jù)寫入ssd,前移尾游標,如是則確定所有寫操作完成,關閉文件,退出線程。圖3c為單采集節(jié)點中,采集線程的處理邏輯示意圖,其首先設置對終止信號的處理,創(chuàng)建信條文件,綁定特定cpu核,檢測共享變量及獲取相機一幀數(shù)據(jù),寫入buffer頭,前移頭游標,當采集完成后停止捕獲,stop設置為false,并將buffer尾設置為null,退出線程。
本發(fā)明的有益技術效果在于:通過本發(fā)明所提供的多路相機同步采集系統(tǒng)及方法,不僅可以采集任意相機數(shù)量的相機陣列,而且保證了相機采集數(shù)據(jù)的同步性克服了現(xiàn)有技術中的延遲問題,再者提供了相機水平擴展的可能。
以上所述的具體實施例,對本發(fā)明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。