一種基于時空特性的交通事件視頻存取方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種基于時空特性的交通事件視頻存取方法及系統(tǒng)。所述基于時空特性的交通事件視頻存取方法包括:獲取交通事件視頻小文件;根據(jù)所述交通事件視頻小文件的路段編號將所述交通事件視頻小文件分配到不同的緩存中處理,每個緩存中所存儲的所有交通事件視頻小文件的路段編號對應的路段與所存儲的第一個交通事件視頻小文件的路段編號對應的路段間的距離都在預設的距離閾值范圍內;當任一個緩存中的交通事件視頻小文件滿足預設的合并處理條件時,將所述緩存中的所有交通事件視頻小文件合并成一個合并文件;所述合并文件中還包括小文件索引表;將所述合并文件存儲到HDFS中,清除所述合并文件對應緩存中的文件。本發(fā)明方案能提高存取效率。
【專利說明】
-種基于時空特性的交通事件視頻存取方法及系統(tǒng)
技術領域
[0001] 本發(fā)明設及一種數(shù)據(jù)存取技術領域,特別是設及一種基于時空特性的交通事件視 頻存取方法及系統(tǒng)。
【背景技術】
[0002] 視頻監(jiān)控是智能交通系統(tǒng)中的一大重要應用。在現(xiàn)代城市交通監(jiān)管系統(tǒng)中,為了 有效監(jiān)控交通路況,每個交通路口通常都裝配有攝像頭,分別用于車輛違章事件檢測、車輛 隊列長度檢測、車輛追蹤等,每個攝像頭都源源不斷產生視頻數(shù)據(jù)。交通視頻包含大量交通 狀況正常的視頻數(shù)據(jù)流和部分含有交通事件的視頻數(shù)據(jù)流,其中交通事件類型包括交通擁 擠、超速、車輛逆行、違章停車等。在真實交通場景中,人們更加關注后者。因此,兩種視頻數(shù) 據(jù)采用同樣的方式存儲在一起往往不合理。在傳統(tǒng)交通監(jiān)控系統(tǒng)中,通常采用集中的存儲 服務器存放所有數(shù)據(jù),操作員之后需要手動回放視頻W查找某個特定的交通事件,因為運 種存儲系統(tǒng)不能很好地將有事件視頻和無事件視頻區(qū)分開來。目前,具有事件檢測功能的 智能攝像頭能已經可W對事件進行結構化的描述,已有學者對具有事件的視頻部分進行高 清晰度傳輸,對無事件的視頻內容進行低清晰度傳輸,從而分離出了具有事件的文件。此 夕h含有事件的視頻文件往往是小文件。對運些有交通事件的海量小文件存儲和檢索技術 的研究,對于交警部口分析特定區(qū)域的交通事故特性具有實際意義。如何高效存儲海量交 通事件視頻小文件和快速查詢路口交通事件進行回放已成為智能交通監(jiān)管系統(tǒng)中的重要 主題。
[0003] HDFS(化doop Distributed File System)是一個適合構建于廉價計算機集群之 上的分布式文件系統(tǒng),具有低成本、高可靠性、高吞吐量的特點。皿FS是一個"一次寫入多次 讀取"的文件訪問模型。交通視頻數(shù)據(jù)特點具有實時產生,順序寫,無需修改的特點,正符合 HDFS的設計特點。然而HDFS本質上是一種流式分塊文件系統(tǒng),設計之初主要是為了處理大 文件(文件大小通常在幾百兆W上),在處理交通事件視頻小文件時,會產生一些問題,本發(fā) 明的小文件指的是包含持續(xù)數(shù)秒或數(shù)分鐘的交通事件視頻數(shù)據(jù),通常文件大小小于10MB。 在HDFS中,任何數(shù)據(jù)塊(b 1 OCk)、文件或者目錄在內存中均W對象的形式存儲,每個對象約 占150B,隨著越來越多的事件文件到來,Namenode越來越多內存會被占用,Namenode所在機 器的內存大小將可能成為集群的制約點。另外,某時間段內某路段上發(fā)生的交通事件通常 不止一件,如果運些事件不合并存在一個數(shù)據(jù)塊內,當讀取某時間段某些相鄰路段事件視 頻時,需要不斷從一個化tanode跳到另一個化tanode,影響讀取性能。其次,訪問大量小文 件速度遠遠小于訪問幾個大文件。
[0004] 目前HDFS小文件存儲方法眾多,Mack巧G等人利用HAR化adoop Archive)技術實 現(xiàn)小文件的合并,提高了皿FS中元數(shù)據(jù)的存儲效率;Xuhui Liu等人提出了適用于WebGIS儲 機制,提高了小文件的存儲和訪問效率。江柳等人提出將小文件存儲到化ase中通過文件合 并與分解操作提高文件的存儲效率,運種方案的一個缺點就是隨著文件的增多會造成 化ase大量的合并與分解操作占用大量系統(tǒng)資源嚴重影響系統(tǒng)的性能,并且化ase只支持簡 單的字符類型,對其它的圖片等類型支持不好還需用戶單獨的處理。雖然目前不少HDFS小 文件存儲方法已被提出,但是現(xiàn)有方法都沒有考慮到交通事件視頻的發(fā)生時間、發(fā)生區(qū)域 W及實時產生的特性,因而用目前已有方法進行交通事件小視頻文件的存取往往會導致查 詢交通事件視頻效率低下。
[0005] 因此,如何實現(xiàn)在HDFS高效存儲海量交通事件視頻小文件和快速查詢路口交通事 件進行回放就成為了本領域技術人員亟待解決的問題。
【發(fā)明內容】
[0006] 鑒于W上所述現(xiàn)有技術的缺點,本發(fā)明的目的在于提供一種基于時空特性的交通 事件視頻存取方法及系統(tǒng),用于解決現(xiàn)有技術中皿FS不能高效存儲海量交通事件視頻小文 件的問題。
[0007] 為實現(xiàn)上述目的及其他相關目的,本發(fā)明提供一種基于時空特性的交通事件視頻 存取方法,所述基于時空特性的交通事件視頻存取方法包括:獲取交通事件視頻小文件,所 述交通事件視頻小文件名中包括路段編號、開始時間信息、截止時間信息;根據(jù)所述交通事 件視頻小文件的路段編號將所述交通事件視頻小文件分配到不同的緩存中處理,每個緩存 中所存儲的所有交通事件視頻小文件的路段編號對應的路段與所存儲的第一個交通事件 視頻小文件的路段編號對應的路段間的距離都在預設的距離闊值范圍內;當任一個緩存中 的交通事件視頻小文件滿足預設的合并處理條件時,將所述緩存中的所有交通事件視頻小 文件合并成一個合并文件,所述合并文件名包括路段編號、開始時間信息、截止時間信息; 所述合并文件名的路段編號為所述緩存中第一個交通事件視頻小文件名的路段編號,所述 合并文件名的開始時間信息為所述緩存中所有交通事件視頻小文件名中最早的開始時間 信息,所述合并文件名的截止時間信息為所述緩存中所有交通事件視頻小文件名中最晚的 截止時間信息;所述合并文件中還包括小文件索引表,所述小文件索引表包括所述合并文 件中所有交通事件視頻小文件信息,包括每一個交通事件視頻小文件的路段編號、開始時 間信息、截止時間信息,文件大小信息,在所述合并文件中的開始位置信息;將所述合并文 件存儲到皿FS中,清除所述合并文件對應緩存中的文件。
[0008] 可選地,所述合并處理條件包括:所述緩存中的所有交通事件視頻小文件的總大 小大于或等于預設的合并文件大小。
[0009] 可選地,每個緩存設定一個最近更新時間,所述合并處理條件包括:當監(jiān)測到系統(tǒng) 當前時間與所述緩存的最近更新時間的差值大于或等于設定的時間闊值時。
[0010] 可選地,所述基于時空特性的交通事件視頻存取方法還包括:建立倒排鏈表,所述 倒排鏈表的每一項包括一個屬性值和具有所述屬性值的記錄集合;所述屬性值包括路段編 號和時間段信息;當合并文件名的路段編號對應的路段與所述屬性值的路段編號對應的路 段間的距離在預設的距離闊值范圍內,且所述合并文件名的開始時間信息到截止時間信息 的時間段與所述屬性值的時間段有交集時,將所述合并文件名加入到具有所述屬性值的記 錄集合中。
[0011] 可選地,所述基于時空特性的交通事件視頻存取方法還包括:客戶端接收待查詢 的路段編號和時間段信息;確定與所述待查詢的路段編號對應的路段的距離在所述距離闊 值范圍內的所有路段對應的路段編號集合;針對所述路段編號集合中的每一個路段編號, 在倒排鏈表中找到與所述路段編號和待查詢的時間段信息確定對應的合并文件名記錄;在 皿FS中獲取所有所述合并文件名對應的合并文件緩存到所述客戶端;針對每一個所述合并 文件,讀取所述合并文件中的小文件索引表,找到路段編號與待查詢的路段編號相同同時 開始時間信息到截止時間信息的時間段與待查詢的時間段信息重疊的小文件。
[0012] 可選地,所述基于時空特性的交通事件視頻存取方法還包括:在所述客戶端查找 是否已經緩存所述合并文件名的合并文件,如果存在,則直接獲取所述合并文件名對應的 合并文件;如果不存在,則在HDFS中獲取所有所述合并文件名對應的合并文件緩存到所述 客戶端。
[0013] 本發(fā)明還提供一種基于時空特性的交通事件視頻存取系統(tǒng),所述基于時空特性的 交通事件視頻存取系統(tǒng)包括:交通事件視頻小文件獲取模塊,用于獲取交通事件視頻小文 件,所述交通事件視頻小文件名中包括路段編號、開始時間信息、截止時間信息;交通事件 視頻小文件分配模塊,用于根據(jù)所述交通事件視頻小文件的路段編號將所述交通事件視頻 小文件分配到不同的緩存中處理,每個緩存中所存儲的所有交通事件視頻小文件的路段編 號對應的路段與所存儲的第一個交通事件視頻小文件的路段編號對應的路段間的距離都 在預設的距離闊值范圍內;交通事件視頻小文件合并模塊,用于當任一個緩存中的交通事 件視頻小文件滿足預設的合并處理條件時,將所述緩存中的所有交通事件視頻小文件合并 成一個合并文件,所述合并文件名包括路段編號、開始時間信息、截止時間信息;所述合并 文件名的路段編號為所述緩存中第一個交通事件視頻小文件名的路段編號,所述合并文件 名的開始時間信息為所述緩存中所有交通事件視頻小文件名中最早的開始時間信息,所述 合并文件名的截止時間信息為所述緩存中所有交通事件視頻小文件名中最晚的截止時間 信息;所述合并文件中還包括小文件索引表,所述小文件索引表包括所述合并文件中所有 交通事件視頻小文件信息,包括每一個交通事件視頻小文件的路段編號、開始時間信息、截 止時間信息,文件大小信息,在所述合并文件中的開始位置信息;合并文件存儲模塊,用于 將所述合并文件存儲到皿FS中,清除所述合并文件對應緩存中的文件。
[0014] 可選地,所述合并處理條件包括:所述緩存中的所有交通事件視頻小文件的總大 小大于或等于預設的合并文件大小。
[0015] 可選地,每個緩存設定一個最近更新時間,所述合并處理條件包括:當監(jiān)測到系統(tǒng) 當前時間與所述緩存的最近更新時間的差值大于或等于設定的時間闊值時。
[0016] 可選地,所述基于時空特性的交通事件視頻存取系統(tǒng)還包括:倒排鏈表建立模塊, 用于建立倒排鏈表,所述倒排鏈表的每一項包括一個屬性值和具有所述屬性值的記錄集 合;所述屬性值包括路段編號和時間段信息;當合并文件名的路段編號對應的路段與所述 屬性值的路段編號對應的路段間的距離在預設的距離闊值范圍內,且所述合并文件名的開 始時間信息到截止時間信息的時間段與所述屬性值的時間段有交集時,將所述合并文件名 加入到具有所述屬性值的記錄集合中。
[0017] 可選地,所述基于時空特性的交通事件視頻存取系統(tǒng)還包括交通事件視頻查詢模 塊,用于接收待查詢的路段編號和時間段信息;確定與所述待查詢的路段編號對應的路段 的距離在所述距離闊值范圍內的所有路段對應的路段編號集合;針對所述路段編號集合中 的每一個路段編號,在倒排鏈表中找到與所述路段編號和待查詢的時間段信息確定對應的 合并文件名記錄;在HDFS中獲取所有所述合并文件名對應的合并文件緩存到所述客戶端; 針對每一個所述合并文件,讀取所述合并文件中的小文件索引表,找到路段編號與待查詢 的路段編號相同同時開始時間信息到截止時間信息的時間段與待查詢的時間段信息重疊 的小文件。
[0018] 可選地,所述交通事件視頻查詢模塊還包括:在所述客戶端查找是否已經緩存所 述合并文件名的合并文件,如果存在,則直接獲取所述合并文件名對應的合并文件;如果不 存在,則在皿FS中獲取所有所述合并文件名對應的合并文件緩存到所述客戶端。
[0019] 如上所述,本發(fā)明的一種基于時空特性的交通事件視頻存取方法及系統(tǒng),具有W 下有益效果:1,結合交通視頻的時空特性將事件小文件合并,減少了 HDFS名字節(jié)點內存使 用率;2,可W高效存取交通事件視頻,從而有效減少了用戶查詢時間。本發(fā)明根據(jù)交通事件 視頻的時間和區(qū)域特性把距離在闊值范圍內路段上的源源不斷到來的事件視頻小文件合 并到一起,當合并后文件大小達到一定值或者距離在闊值范圍內的路段上很久沒有事件發(fā) 生時,把合并后文件存儲到HDFS中。本發(fā)明還提出了一種基于倒排索引思想的索引機制對 存儲到HDFS中的合并后文件W及小文件創(chuàng)建索引,W便能快速查詢到所需事件。當用戶根 據(jù)路段和時間查詢事件視頻時,相關數(shù)據(jù)塊可W緩存到本地。當查詢某時間段某區(qū)域路段 上事件視頻時,本發(fā)明提出的存取方法能有效地縮短查詢時間W及減少H D F S系統(tǒng)中 Namenode內存占用。
【附圖說明】
[0020] 圖1顯示為本發(fā)明的一種基于時空特性的交通事件視頻存取方法的一實施例的流 程示意圖。
[0021] 圖2顯示為本發(fā)明的一種基于時空特性的交通事件視頻存取方法的一實施例的系 統(tǒng)架構示意圖。
[0022] 圖3顯示為本發(fā)明的一種基于時空特性的交通事件視頻存取方法的一實施例的存 取流程示意圖。
[0023] 圖4顯示為本發(fā)明的一種基于時空特性的交通事件視頻存取方法的一實施例的分 配合并流程示意圖。
[0024] 圖5顯示為本發(fā)明的一種基于時空特性的交通事件視頻存取方法的一實施例的倒 排索引建立流程示意圖。
[0025] 圖6顯示為本發(fā)明的一種基于時空特性的交通事件視頻存取方法的一實施例的查 詢流程示意圖。
[0026] 圖7顯示為本發(fā)明的一種基于時空特性的交通事件視頻存取系統(tǒng)的一實施例的模 塊不意圖。
[0027] 元件標號說明
[0028] 1 基于時空特性的交通事件 視頻存取系統(tǒng)
[0029] 11 交通事件視頻小文件獲取 模塊
[0030] 12 交通事件視頻小文件分配 模塊
[0031] 13 交通事件視頻小文件合并 模塊
[0032] 14 合并文件存儲模塊
[0033] Sl ~S4 步驟
【具體實施方式】
[0034] W下通過特定的具體實例說明本發(fā)明的實施方式,本領域技術人員可由本說明書 所掲露的內容輕易地了解本發(fā)明的其他優(yōu)點與功效。本發(fā)明還可W通過另外不同的具體實 施方式加W實施或應用,本說明書中的各項細節(jié)也可W基于不同觀點與應用,在沒有背離 本發(fā)明的精神下進行各種修飾或改變。
[0035] 需要說明的是,本實施例中所提供的圖示僅W示意方式說明本發(fā)明的基本構想, 遂圖式中僅顯示與本發(fā)明中有關的組件而非按照實際實施時的組件數(shù)目、形狀及尺寸繪 審IJ,其實際實施時各組件的型態(tài)、數(shù)量及比例可為一種隨意的改變,且其組件布局型態(tài)也可 能更為復雜。
[0036] 本發(fā)明提供一種基于時空特性的交通事件視頻存取方法。在一個實施例中,所述 基于時空特性的交通事件視頻存取方法包括:
[0037] 步驟SI,獲取交通事件視頻小文件,所述交通事件視頻小文件名中包括路段編號、 開始時間信息、截止時間信息。在一個實施例中,路段編號由一串連續(xù)的11個數(shù)字組成,如 59565108098,59565108097。事件小文件名構成如:路段編號-開始時間-截止時間。此處路 段編號指的是事件發(fā)生地點,開始時間指的是事件發(fā)生的開始時間,截止時間指的是事件 發(fā)生完成時間。事件小文件名格式如59565108098-20151128073205-20151128073217,表明 運個事件小文件于2015年11月28號上午7:32分在路段59565108098發(fā)生并且持續(xù)了12秒。
[0038] 步驟S2,根據(jù)所述交通事件視頻小文件的路段編號將所述交通事件視頻小文件分 配到不同的緩存中處理,每個緩存中所存儲的所有交通事件視頻小文件的路段編號對應的 路段與所存儲的第一個交通事件視頻小文件的路段編號對應的路段間的距離都在預設的 距離闊值范圍內。在一個實施例中,存儲客戶端中有用來暫存事件小視頻的緩沖區(qū),即 buffer[0] ,buffer。],-'.每個緩沖區(qū)的中屯、路段編號由第一個暫存在此緩沖區(qū)的事件小 視頻的路段編號決定。例如,對于buffer[0],第一個到達buffer[0]暫存的事件小視頻為 59565108098-20141128073205-20141128073217,那么它的路段編號 59565108098 將被作為 buffer[0]的中屯、路段編號。每個非空buffer都有一個中屯、路段編號,它用于判斷到來的事 件小視頻文件能否被暫存在某個特定的buff er中。
[0039] 步驟S3,當任一個緩存中的交通事件視頻小文件滿足預設的合并處理條件時,將 所述緩存中的所有交通事件視頻小文件合并成一個合并文件,所述合并文件名包括路段編 號、開始時間信息、截止時間信息;所述合并文件名的路段編號為所述緩存中第一個交通事 件視頻小文件名的路段編號,所述合并文件名的開始時間信息為所述緩存中所有交通事件 視頻小文件名中最早的開始時間信息,所述合并文件名的截止時間信息為所述緩存中所有 交通事件視頻小文件名中最晚的截止時間信息;所述合并文件中還包括小文件索引表,所 述小文件索引表包括所述合并文件中所有交通事件視頻小文件信息,包括每一個交通事件 視頻小文件的路段編號、開始時間信息、截止時間信息,文件大小信息,在所述合并文件中 的開始位置信息。在一個實施例中,所述合并處理條件包括:所述緩存中的所有交通事件視 頻小文件的總大小大于或等于預設的合并文件大小。在一個實施例中,每個緩存設定一個 最近更新時間,所述合并處理條件還包括:當監(jiān)測到系統(tǒng)當前時間與所述緩存的最近更新 時間的差值大于或等于設定的時間闊值時。在一個實施例中,合并后文件名格式為:中屯、路 段編號-起始時間-截止時間。此處的中屯、路段編號是第一個到來而暫存在此buffer中的事 件小視頻文件的路段編號,buffer中的事件小視頻文件是按照到達此buffer中的順序合并 在一起的。合并后文件名的起始時間指的是運個合并文件中第一個視頻小文件發(fā)生的開始 時間;截止時間指的是運個合并文件中最后一個視頻小文件發(fā)生的截止時間。例如事件小 視頻文件 59565108098-20151128070110-20151128070118 是第一個到達 buff er[i]的文件, 事件小視頻文件 59565108067-20141128070500-20141128070512 是最后到達 buff er[i]的 文件,那么當buffer[i]中的事件小視頻文件被合并后,得到的合并后文件名則為 59565108098-20151128070110-20151128070512。小文件索引表用于存儲合并后文件中每 個事件小視頻文件的元數(shù)據(jù)。小文件索引表是和合并后文件一起發(fā)送到HDFS存儲在 化化Node里。從皿FS取出合并后文件時,小文件索引表被一起取到本地緩存,之后根據(jù)小文 件索引表,讀取符合路段和時間段的事件小視頻文件。小文件索引表的結構如下所示,其中 的偏移位置指的是合并后文件中的事件小文件的起始位置。
[0040]
[0041 ]步驟S4,將所述合并文件存儲到皿!^中,清除所述合并文件對應緩存中的文件。
[0042] 在一個實施例中,所述基于時空特性的交通事件視頻存取方法還包括:建立倒排 鏈表,所述倒排鏈表的每一項包括一個屬性值和具有所述屬性值的記錄集合;所述屬性值 包括路段編號和時間段信息;當合并文件名的路段編號對應的路段與所述屬性值的路段編 號對應的路段間的距離在預設的距離闊值范圍內,且所述合并文件名的開始時間信息到截 止時間信息的時間段與所述屬性值的時間段有交集時,將所述合并文件名加入到具有所述 屬性值的記錄集合中。在一個實施例中,所述屬性值的時間段為半小時,在另一實施例中, 所述屬性值的時間段為1小時。
[0043] 在一個實施例中,所述基于時空特性的交通事件視頻存取方法還包括:客戶端接 收待查詢的路段編號和時間段信息;確定與所述待查詢的路段編號對應的路段的距離在所 述距離闊值范圍內的所有路段對應的路段編號集合;針對所述路段編號集合中的每一個路 段編號,在倒排鏈表中找到與所述路段編號和待查詢的時間段信息確定對應的合并文件名 記錄;在HDFS中獲取所有所述合并文件名對應的合并文件緩存到所述客戶端;針對每一個 所述合并文件,讀取所述合并文件中的小文件索引表,找到路段編號與待查詢的路段編號 相同同時開始時間信息到截止時間信息的時間段與待查詢的時間段信息重疊的小文件。
[0044] 在一個實施例中,所述基于時空特性的交通事件視頻存取方法還包括:在所述客 戶端查找是否已經緩存所述合并文件名的合并文件,如果存在,則直接獲取所述合并文件 名對應的合并文件;如果不存在,則在皿FS中獲取所有所述合并文件名對應的合并文件緩 存到所述客戶端。
[0045] 在一個實施例中,本發(fā)明的基于時空特性的交通事件視頻存取方法的系統(tǒng)架構如 圖2所示,它包含獲取交通事件視頻的智能攝像頭(smad cameras)、將不同大區(qū)域發(fā)生的 事件視頻分配給不同的存儲客戶端暫存的分配器(dispatcher)、一些為事件視頻暫存W及 合并并且建立索引的存儲客戶端(storing clients)、捜索客戶端(search clients)、響應 捜索的服務器(request processer)。其中,存儲客戶端負責接收交通事件視頻小文件,并 根據(jù)所述交通事件視頻小文件的路段編號將所述交通事件視頻小文件分配到不同的緩存 中處理,接著,當任一個緩存中的交通事件視頻小文件滿足預設的合并處理條件時,將所述 緩存中的所有交通事件視頻小文件合并成一個合并文件;將所述合并文件存儲到HDFS中, 清除所述合并文件對應緩存中的文件;并針對合并文件建立倒排鏈表(即索引,或稱為倒排 索引)。所述交通視頻小文件通過智能攝像頭采集,并通過分配器按照空間區(qū)域分配到不同 的存儲客戶端處理。捜索客戶端接收捜索條件,并通過響應捜索的服務器獲取捜索結果,包 括從緩存(cache)中讀取或從HDFS集群中讀取。整個系統(tǒng)架構工作的存取方法如圖3所示。 先基于時空特性合并小事件視頻文件,合并小文件的同時創(chuàng)建小文件索引,并將合并文件 存儲到HDFS中。同時對合并文件采用改進的倒排索引策略建立倒排索引,通過倒排索引實 現(xiàn)快速查詢,包括從緩存中讀取結果或從皿FS中讀取查詢結果。
[0046] 在一個實施例中,所述交通事件視頻小文件的分配和合并流程如圖4所示,在智能 攝像頭實時地將有事件視頻小文件傳過來后,尋找一個buffer,并且buffer的中屯、路段編 號在當前小文件的路段編號闊值范圍內(事件視頻小文件發(fā)生路段與buffer的中屯、路段間 的跳數(shù)小于闊值范圍),將當前小文件放入該buffer,即將視頻小文件暫存在系統(tǒng)存儲客戶 端?;蛘撸业揭粋€空的buffer來存放事件視頻小文件,并把該事件的路段編號作為該 buffer的中屯、路段編號。當buffer[ i ]文件大小滿足要求或者是很久沒有小文件暫存到 buf f er [ i ]時,將buff er [ i ]中所有小文件合并后,對合并文件命名并存入HDFS,同時清除 buffer[i]中的內容。在另一實施例中,考慮到一種較壞情況:有的路段及其附近發(fā)生了一 些事件,但是之后又很久都沒有發(fā)生事件,導致的情況是有些buf fer非空,不過其文件內容 大小很久都不能達到64MB-2KB,運種情況下的buffer里暫存的小文件很久都不能被合并存 到HDFS里。由于小文件在被存儲到HDFS里之前不能被用戶查詢到,因此此種情況可能會導 致用戶不能較及時地查詢到此類事件視頻。為了避免運種情況,當有小文件暫存在某 buf fer時,我們?yōu)榇薭uf fer設置一個最近更新時間。監(jiān)控系統(tǒng)暫存客戶端的非空buffer,若 監(jiān)控到系統(tǒng)當前時間和buf f er [ i ]的最近更新時間差值超過時間闊值,就buf f er [ i ]里的小 文件和表3.1所示的小文件索引表合并,并存儲到皿FS系統(tǒng)中。
[0047] 在一個實施例中,含有交通事件的視頻片段大小通常不超過10MB。當buffer里的 文件總大小符合條件后或是buffer等待時間達到上限后,將buffer里的小文件合并成大文 件,并存儲到皿FS系統(tǒng)中。為了能快速捜索到事件視頻,可W每隔一段時間對該時間段內存 儲到HDFS的合并后創(chuàng)建索引。運樣當用戶查詢事件視頻時,系統(tǒng)根據(jù)查詢的時間段條件歸 并相應時間段W得出待查的合并后文件名。此思想是基于傳統(tǒng)的倒排索引策略并加W改進 而得。倒排索引是包含倒排鏈表格式的索引,倒排鏈表中的每一項都包括一個屬性值和具 有該屬性值的各記錄的地址。由于不是由記錄來確定屬性值,而是由屬性值來確定記錄的 位置,因而稱為倒排索引。帶有倒排索引的文件我們稱為倒排索引文件。
[0048] 在一個實施例中,索引創(chuàng)建大致過程如圖5所示,對于每個合并后文件,如果它的 事件發(fā)生時間和索引鍵IK的時間段有交集,此合并后文件名會被放入IK對應的值集合中。 當用戶查找某路段在某時間段發(fā)生的事件時,根據(jù)查找路段和時間段計算出索引鍵,合并 運些索引鍵對應的值,即得到應該從HDFS集群讀取的合并后文件的名字。具體地,當把一個 合并后文件存儲到HDFS后,系統(tǒng)記錄此合并后文件的文件名到MF中,其中MF是用來記錄做 增量索引前的時間里被存儲到皿FS集群里的合并后文件的名字的變量。每到半點或整點時 間(根據(jù)預設的時間段),根據(jù)MF里的合并后文件名為存儲到HDFS的合并后文件建立索引。 用合并后文件名的第二和第=部構成的時間段和半點時間段做交集得到半點時間段集合 T。再根據(jù)合并后文件名第一部分代表的中屯、路段編號R,將合并后文件名加入到索引鍵為 R-t對應的值中,其中tGT。
[0049] 例如,當訪問存儲在HDFS集群中的事件文件時,要根據(jù)路段編號-半點時間段到合 并后文件名映射獲取合并文件名,然后根據(jù)合并后文件名從HDFS中讀取文件。在此映射中, 路段編號-半點時間段是鍵,合并后文件名是值。其中,路段編號-半點時間段具體格式表示 為類似{......,59565108098-20141128080000-20141128083000,59565108098- 20141128083000-20141128090000,59565108098-20141128090000- 20141128093000,…...}。每隔半小時為運半小時內存儲到HD^?的合并后文件創(chuàng)建索引,合 并后文件名的S個部分決定該合并后文件放入哪些值的集合中。例如,某合并后文件名MFN 是59565108098-20151128062803-20151 128071220,計算得MF的時間段部分和 20151128060000-20151128063000,20151128063000-20151128070000和20151128070000- 20151128073000運^時間段有交集。因此,將1。放入鍵為59565108098-20151128060000- 20151128063000,59565108098-20151128063000-20151128070000和59565108098- 20151128070000-20151128073000 的值的集合中。
[0050] 在一個實施例中,如圖6所示,本發(fā)明還提供了快速查詢方法。首先,接收用戶輸入 的查詢的時間段PT,路段編號R。通過用戶輸入的要查詢的路段編號計算出距離闊值范圍內 的路段編號集合。接著,根據(jù)用戶輸入的時間段計算出符合條件的半點時間段集合,結合步 驟1得到的路段編號集合,得到索引鍵,歸并運些索引鍵得到的值是要從HDFS取的合并后文 件的文件名。具體地,當查找交通事件時,給定路段、起始時間和截止時間,若事件視頻文件 全不在本地,則根據(jù)既定闊值計算出待查路段編號集合RTSS。例如,當起始時間為2015年11 月28號7 :10am,截止時間為2015年11月28號8 : 20am,對于每個的3 G RTSS,歸并索引鍵為 rts-20151128070000-20151128073000,rts-20151128073000-20151128080000和rts- 20151128080000-20151128083000的值,去重得到待從HDFS集群讀取的合并后文件的文件 名。用戶在事件查詢頁面輸入欲查路段編號R,起始時間tl和截止時間t2(即時間段PT)。根 據(jù)R獲得距離在闊值范圍內的路段編號集合,設為待查路段集合RTS,獲取客戶端本地存儲 的已查路段標記樹HSRT(該標記樹用化ie樹結構存儲已查路段,已查路段標記樹存儲在用 戶本地。已查路段和待查路段集合RTS相關),從HSRT里查詢RTS,若待查路段集合里每一個 路段都能在已查路段標記樹里查詢到,則所有待查詢事件視頻都已在被取到本地緩存,根 據(jù)小文件索引表從本地緩存中讀取文件即可,無需再去HDFS集群中查找。如果不符合上面 的條件,則系統(tǒng)會對在待查路段里而不在已查路口標記樹里的路段,結合起始時間和截止 時間,算出索引鍵。若鍵對應的值有不為空的,根據(jù)改進的倒排索引策略獲取值,即是從 HDFS中讀取的合并后文件的文件名,根據(jù)文件名,去HDFS取滿足用戶查詢條件的小文件結 合本地緩存中滿足查詢條件的小文件,響應用戶,另外后臺線程根據(jù)已計算出的合并后文 件名將整塊大文件緩存到用戶本地;若計算出的各索引鍵對應的值都為空,說明所有待讀 取視頻文件都已在本地緩存,根據(jù)小文件索引表在本地緩存中讀取相應小文件。
[0051 ]在一個實施例中,事件視頻的查詢流程如下:1,用戶查詢事件視頻時,輸入查詢路 段RW,起始時間11和截止時間t2,根據(jù)RW計算出與其跳數(shù)在闊值范圍內的路段編號集合,設 為待查路段集合RTS,其中兩路段之間跳數(shù)為路段到另一路段要經過的路口數(shù)。從已查路段 標記樹HSRT里查找待查路段集合RTS。若對于的帶£化巧有Ks G HSRT,那么根據(jù)小文件索引 表,讀取本地緩存中的事件小文件。2,對在待查路段集合而不在已查路口標記樹里的路段, 根據(jù)起始時間tl和截止時間t2,算出索引鍵,若索引鍵對應的值不為空,則將在待查路段集 合而不在已查路口標記樹里的路段加入已查路口標記樹,固巧Ij3。否則,若所有索引鍵對應 的值都為空,則把在待查路段集合而不在已查路口標記樹里的路段加入已查路口標記樹, 那么根據(jù)小文件索引表,讀取本地緩存中的事件小文件。3,歸并所有的非空索引值,去重后 得到待查詢的合并后文件的文件名集合,利用文件名去皿FS取文件時分兩步。第一步,讀取 合并后文件里的小文件索引,根據(jù)小文件索引讀取本合并后文件中的發(fā)生在路段RW且其發(fā) 生時間和時間時間構成的時間段和由tl和t2構成的時間段有交集的小文件,返回給用戶客 戶端,供查看。第二步,查詢頁面響應后,請求處理器再根據(jù)之前計算出的合并后文件名向 皿FS發(fā)出讀取請求,將整塊數(shù)據(jù)下載到用戶客戶端。
[0052] 本發(fā)明還提供一種基于時空特性的交通事件視頻存取系統(tǒng),所述基于時空特性的 交通事件視頻存取系統(tǒng)可W應用如上所述的基于時空特性的交通事件視頻存取方法。在一 個實施例中,如圖7所示,所述基于時空特性的交通事件視頻存取系統(tǒng)1包括交通事件視頻 小文件獲取模塊11,交通事件視頻小文件分配模塊12,交通事件視頻小文件合并模塊13W 及合并文件存儲模塊14。其中:
[0053] 交通事件視頻小文件獲取模塊11用于獲取交通事件視頻小文件,所述交通事件視 頻小文件名中包括路段編號、開始時間信息、截止時間信息。在一個實施例中,路段編號由 一串連續(xù)的11個數(shù)字組成,如59565108098,59565108097。事件小文件名構成如:路段編號- 開始時間-截止時間。此處路段編號指的是事件發(fā)生地點,開始時間指的是事件發(fā)生的開始 時間,截止時間指的是事件發(fā)生完成時間。事件小文件名格式如59565 108098- 20151128073205-20151128073217,表明運個事件小文件于2015年11月28號上午7:32分在 路段59565108098發(fā)生并且持續(xù)了12秒。
[0054] 交通事件視頻小文件分配模塊12與交通事件視頻小文件獲取模塊11相連,用于根 據(jù)所述交通事件視頻小文件的路段編號將所述交通事件視頻小文件分配到不同的緩存中 處理,每個緩存中所存儲的所有交通事件視頻小文件的路段編號對應的路段與所存儲的第 一個交通事件視頻小文件的路段編號對應的路段間的距離都在預設的距離闊值范圍內。在 一個實施例中,存儲客戶端中有用來暫存事件小視頻的緩沖區(qū),即buffer[0] ,buffer
[l],一.每個緩沖區(qū)的中屯、路段編號由第一個暫存在此緩沖區(qū)的事件小視頻的路段編號決 定。例如,對于buffer [0],第一個到達buffer [0]暫存的事件小視頻為59565108098- 20141128073205-20141128073217,那么它的路段編號 59565108098將被作為 buff er[0]的 中屯、路段編號。每個非空buffer都有一個中屯、路段編號,它用于判斷到來的事件小視頻文 件能否被暫存在某個特定的buff er中。
[0055] 交通事件視頻小文件合并模塊13與交通事件視頻小文件分配模塊12相連,用于當 任一個緩存中的交通事件視頻小文件滿足預設的合并處理條件時,將所述緩存中的所有交 通事件視頻小文件合并成一個合并文件,所述合并文件名包括路段編號、開始時間信息、截 止時間信息;所述合并文件名的路段編號為所述緩存中第一個交通事件視頻小文件名的路 段編號,所述合并文件名的開始時間信息為所述緩存中所有交通事件視頻小文件名中最早 的開始時間信息,所述合并文件名的截止時間信息為所述緩存中所有交通事件視頻小文件 名中最晚的截止時間信息;所述合并文件中還包括小文件索引表,所述小文件索引表包括 所述合并文件中所有交通事件視頻小文件信息,包括每一個交通事件視頻小文件的路段編 號、開始時間信息、截止時間信息,文件大小信息,在所述合并文件中的開始位置信息。在一 個實施例中,所述合并處理條件包括:所述緩存中的所有交通事件視頻小文件的總大小大 于或等于預設的合并文件大小。在一個實施例中,每個緩存設定一個最近更新時間,所述合 并處理條件還包括:當監(jiān)測到系統(tǒng)當前時間與所述緩存的最近更新時間的差值大于或等于 設定的時間闊值時。在一個實施例中,合并后文件名格式為:中屯、路段編號-起始時間-截止 時間。此處的中屯、路段編號是第一個到來而暫存在此buffer中的事件小視頻文件的路段編 號,buff er中的事件小視頻文件是按照到達此buff er中的順序合并在一起的。合并后文件 名的起始時間指的是運個合并文件中第一個視頻小文件發(fā)生的開始時間;截止時間指的是 運個合并文件中最后一個視頻小文件發(fā)生的截止時間。例如事件小視頻文件59565108098- 20151128070110-20151128070118是第一個到達buff er[i]的文件,事件小視頻文件 59565108067-20141128070500-20141128070512是最后到達buffer[i]的文件,那么當 buffer[i]中的事件小視頻文件被合并后,得到的合并后文件名則為59565108098- 20151128070110-20151128070512。小文件索引表用于存儲合并后文件中每個事件小視頻 文件的元數(shù)據(jù)。小文件索引表是和合并后文件一起發(fā)送到HDFS存儲在化taNode里。從HDFS 取出合并后文件時,小文件索引表被一起取到本地緩存,之后根據(jù)小文件索引表,讀取符合 路段和時間段的事件小視頻文件。
[0056] 合并文件存儲模塊14與交通事件視頻小文件合并模塊13相連,用于將所述合并文 件存儲到皿FS中,清除所述合并文件對應緩存中的文件。
[0057] 在一個實施例中,所述基于時空特性的交通事件視頻存取系統(tǒng)1還包括:倒排鏈表 建立模塊,用于建立倒排鏈表,所述倒排鏈表的每一項包括一個屬性值和具有所述屬性值 的記錄集合;所述屬性值包括路段編號和時間段信息;當合并文件名的路段編號對應的路 段與所述屬性值的路段編號對應的路段間的距離在預設的距離闊值范圍內,且所述合并文 件名的開始時間信息到截止時間信息的時間段與所述屬性值的時間段有交集時,將所述合 并文件名加入到具有所述屬性值的記錄集合中。
[0058] 在一個實施例中,所述基于時空特性的交通事件視頻存取系統(tǒng)還包括交通事件視 頻查詢模塊,用于接收待查詢的路段編號和時間段信息;確定與所述待查詢的路段編號對 應的路段的距離在所述距離闊值范圍內的所有路段對應的路段編號集合;針對所述路段編 號集合中的每一個路段編號,在倒排鏈表中找到與所述路段編號和待查詢的時間段信息確 定對應的合并文件名記錄;在皿FS中獲取所有所述合并文件名對應的合并文件緩存到所述 客戶端;針對每一個所述合并文件,讀取所述合并文件中的小文件索引表,找到路段編號與 待查詢的路段編號相同同時開始時間信息到截止時間信息的時間段與待查詢的時間段信 息重疊的小文件。在一個實施例中,所述交通事件視頻查詢模塊還包括:在所述客戶端查找 是否已經緩存所述合并文件名的合并文件,如果存在,則直接獲取所述合并文件名對應的 合并文件;如果不存在,則在HDFS中獲取所有所述合并文件名對應的合并文件緩存到所述 客戶端。
[0059] 綜上所述,本發(fā)明的一種基于時空特性的交通事件視頻存取方法及系統(tǒng),具有W 下有益效果:1,結合交通視頻的時空特性將事件小文件合并,減少了 HDFS名字節(jié)點內存使 用率;2,可W高效存取交通事件視頻,從而有效減少了用戶查詢時間。本發(fā)明根據(jù)交通事件 視頻的時間和區(qū)域特性把距離在闊值范圍內路段上的源源不斷到來的事件視頻小文件合 并到一起,當合并后文件大小達到一定值或者距離在闊值范圍內的路段上很久沒有事件發(fā) 生時,把合并后文件存儲到HDFS中。本發(fā)明還提出了一種基于倒排索引思想的索引機制對 存儲到HDFS中的合并后文件W及小文件創(chuàng)建索引,W便能快速查詢到所需事件。當用戶根 據(jù)路段和時間查詢事件視頻時,相關數(shù)據(jù)塊可W緩存到本地。當查詢某時間段某區(qū)域路段 上事件視頻時,本發(fā)明提出的存取方法能有效地縮短查詢時間W及減少H D F S系統(tǒng)中 Namenode內存占用。所W,本發(fā)明有效克服了現(xiàn)有技術中的種種缺點而具高度產業(yè)利用價 值。
[0060] 上述實施例僅例示性說明本發(fā)明的原理及其功效,而非用于限制本發(fā)明。任何熟 悉此技術的人±皆可在不違背本發(fā)明的精神及范疇下,對上述實施例進行修飾或改變。因 此,舉凡所屬技術領域中具有通常知識者在未脫離本發(fā)明所掲示的精神與技術思想下所完 成的一切等效修飾或改變,仍應由本發(fā)明的權利要求所涵蓋。
【主權項】
1. 一種基于時空特性的交通事件視頻存取方法,其特征在于,所述基于時空特性的交 通事件視頻存取方法包括: 獲取交通事件視頻小文件,所述交通事件視頻小文件名中包括路段編號、開始時間信 息、截止時間信息; 根據(jù)所述交通事件視頻小文件的路段編號將所述交通事件視頻小文件分配到不同的 緩存中處理,每個緩存中所存儲的所有交通事件視頻小文件的路段編號對應的路段與所存 儲的第一個交通事件視頻小文件的路段編號對應的路段間的距離都在預設的距離閾值范 圍內; 當任一個緩存中的交通事件視頻小文件滿足預設的合并處理條件時,將所述緩存中的 所有交通事件視頻小文件合并成一個合并文件,所述合并文件名包括路段編號、開始時間 信息、截止時間信息;所述合并文件名的路段編號為所述緩存中第一個交通事件視頻小文 件名的路段編號,所述合并文件名的開始時間信息為所述緩存中所有交通事件視頻小文件 名中最早的開始時間信息,所述合并文件名的截止時間信息為所述緩存中所有交通事件視 頻小文件名中最晚的截止時間信息;所述合并文件中還包括小文件索引表,所述小文件索 引表包括所述合并文件中所有交通事件視頻小文件信息,包括每一個交通事件視頻小文件 的路段編號、開始時間信息、截止時間信息,文件大小信息,在所述合并文件中的開始位置 信息; 將所述合并文件存儲到HDFS中,清除所述合并文件對應緩存中的文件。2. 根據(jù)權利要求1所述的基于時空特性的交通事件視頻存取方法,其特征在于:所述合 并處理條件包括:所述緩存中的所有交通事件視頻小文件的總大小大于或等于預設的合并 文件大小。3. 根據(jù)權利要求1或2所述的基于時空特性的交通事件視頻存取方法,其特征在于:每 個緩存設定一個最近更新時間,所述合并處理條件包括:當監(jiān)測到系統(tǒng)當前時間與所述緩 存的最近更新時間的差值大于或等于設定的時間閾值時。4. 根據(jù)權利要求1所述的基于時空特性的交通事件視頻存取方法,其特征在于:所述基 于時空特性的交通事件視頻存取方法還包括:建立倒排鏈表,所述倒排鏈表的每一項包括 一個屬性值和具有所述屬性值的記錄集合;所述屬性值包括路段編號和時間段信息;當合 并文件名的路段編號對應的路段與所述屬性值的路段編號對應的路段間的距離在預設的 距離閾值范圍內,且所述合并文件名的開始時間信息到截止時間信息的時間段與所述屬性 值的時間段有交集時,將所述合并文件名加入到具有所述屬性值的記錄集合中。5. 根據(jù)權利要求4所述的基于時空特性的交通事件視頻存取方法,其特征在于:所述基 于時空特性的交通事件視頻存取方法還包括:客戶端接收待查詢的路段編號和時間段信 息;確定與所述待查詢的路段編號對應的路段的距離在所述距離閾值范圍內的所有路段對 應的路段編號集合;針對所述路段編號集合中的每一個路段編號,在倒排鏈表中找到與所 述路段編號和待查詢的時間段信息確定對應的合并文件名記錄;在HDFS中獲取所有所述合 并文件名對應的合并文件緩存到所述客戶端;針對每一個所述合并文件,讀取所述合并文 件中的小文件索引表,找到路段編號與待查詢的路段編號相同同時開始時間信息到截止時 間信息的時間段與待查詢的時間段信息重疊的小文件。6. 根據(jù)權利要求5所述的基于時空特性的交通事件視頻存取方法,其特征在于:所述基 于時空特性的交通事件視頻存取方法還包括:在所述客戶端查找是否已經緩存所述合并文 件名的合并文件,如果存在,則直接獲取所述合并文件名對應的合并文件;如果不存在,則 在HDFS中獲取所有所述合并文件名對應的合并文件緩存到所述客戶端。7. -種基于時空特性的交通事件視頻存取系統(tǒng),其特征在于:所述基于時空特性的交 通事件視頻存取系統(tǒng)包括: 交通事件視頻小文件獲取模塊,用于獲取交通事件視頻小文件,所述交通事件視頻小 文件名中包括路段編號、開始時間信息、截止時間信息; 交通事件視頻小文件分配模塊,用于根據(jù)所述交通事件視頻小文件的路段編號將所述 交通事件視頻小文件分配到不同的緩存中處理,每個緩存中所存儲的所有交通事件視頻小 文件的路段編號對應的路段與所存儲的第一個交通事件視頻小文件的路段編號對應的路 段間的距離都在預設的距離閾值范圍內; 交通事件視頻小文件合并模塊,用于當任一個緩存中的交通事件視頻小文件滿足預設 的合并處理條件時,將所述緩存中的所有交通事件視頻小文件合并成一個合并文件,所述 合并文件名包括路段編號、開始時間信息、截止時間信息;所述合并文件名的路段編號為所 述緩存中第一個交通事件視頻小文件名的路段編號,所述合并文件名的開始時間信息為所 述緩存中所有交通事件視頻小文件名中最早的開始時間信息,所述合并文件名的截止時間 信息為所述緩存中所有交通事件視頻小文件名中最晚的截止時間信息;所述合并文件中還 包括小文件索引表,所述小文件索引表包括所述合并文件中所有交通事件視頻小文件信 息,包括每一個交通事件視頻小文件的路段編號、開始時間信息、截止時間信息,文件大小 信息,在所述合并文件中的開始位置信息; 合并文件存儲模塊,用于將所述合并文件存儲到HDFS中,清除所述合并文件對應緩存 中的文件。8. 根據(jù)權利要求7所述的基于時空特性的交通事件視頻存取系統(tǒng),其特征在于:所述合 并處理條件包括:所述緩存中的所有交通事件視頻小文件的總大小大于或等于預設的合并 文件大小。9. 根據(jù)權利要求7或8所述的基于時空特性的交通事件視頻存取系統(tǒng),其特征在于:每 個緩存設定一個最近更新時間,所述合并處理條件包括:當監(jiān)測到系統(tǒng)當前時間與所述緩 存的最近更新時間的差值大于或等于設定的時間閾值時。10. 根據(jù)權利要求7所述的基于時空特性的交通事件視頻存取系統(tǒng),其特征在于:所述 基于時空特性的交通事件視頻存取系統(tǒng)還包括:倒排鏈表建立模塊,用于建立倒排鏈表,所 述倒排鏈表的每一項包括一個屬性值和具有所述屬性值的記錄集合;所述屬性值包括路段 編號和時間段信息;當合并文件名的路段編號對應的路段與所述屬性值的路段編號對應的 路段間的距離在預設的距離閾值范圍內,且所述合并文件名的開始時間信息到截止時間信 息的時間段與所述屬性值的時間段有交集時,將所述合并文件名加入到具有所述屬性值的 記錄集合中。11. 根據(jù)權利要求7所述的基于時空特性的交通事件視頻存取系統(tǒng),其特征在于:所述 基于時空特性的交通事件視頻存取系統(tǒng)還包括交通事件視頻查詢模塊,用于接收待查詢的 路段編號和時間段信息;確定與所述待查詢的路段編號對應的路段的距離在所述距離閾值 范圍內的所有路段對應的路段編號集合;針對所述路段編號集合中的每一個路段編號,在 倒排鏈表中找到與所述路段編號和待查詢的時間段信息確定對應的合并文件名記錄;在 HDFS中獲取所有所述合并文件名對應的合并文件緩存到所述客戶端;針對每一個所述合并 文件,讀取所述合并文件中的小文件索引表,找到路段編號與待查詢的路段編號相同同時 開始時間信息到截止時間信息的時間段與待查詢的時間段信息重疊的小文件。12.根據(jù)權利要求11所述的基于時空特性的交通事件視頻存取系統(tǒng),其特征在于:所述 交通事件視頻查詢模塊還包括:在所述客戶端查找是否已經緩存所述合并文件名的合并文 件,如果存在,則直接獲取所述合并文件名對應的合并文件;如果不存在,則在HDFS中獲取 所有所述合并文件名對應的合并文件緩存到所述客戶端。
【文檔編號】G06F3/06GK106021585SQ201610389219
【公開日】2016年10月12日
【申請日】2016年6月2日
【發(fā)明人】蔣昌俊, 閆春鋼, 陳閎中, 張亞英, 喻劍, 葉晨, 朱茵茵
【申請人】同濟大學