2011-08-13 53 views
2

我想實現一個視頻檢索系統,我需要首先從視頻中提取關鍵幀,理想情況下我想有一個庫來自動檢測這些關鍵幀,每個鏡頭的一個關鍵幀。如果我可以配置要提取哪個關鍵幀(鏡頭中連續幀的第一個,中間或最後一個),則可獲得獎勵。 這是否有開源的實現?開源鏡頭檢測實現?

+0

如果你有一個鏡頭的第一幀,那麼你知道前一幀的最後一幀。如果你有第一幀和最後一幀的鏡頭,那麼你可以找到一箇中間幀。你似乎沒有考慮過渡,這將是你最大的挑戰。 – koan

+0

@koan我不知道鏡頭的第一幀/最後一幀,我實際上是在試圖在視頻中找到鏡頭。一旦知道鏡頭的邊界,我知道如何使用opencv或其他庫從視頻流中提取幀。 – fantasticsid

+0

你想要做的並不是微不足道的。我懷疑你會發現這樣做的庫函數,如果你這樣做,它可能不會得到適合你的應用程序的結果。 – koan

回答

1

FFmpeg的LIB(包含在OpenCV的),可以尋求一個關鍵幀與函數av_seek_frame()

看到FFMPEG reading keyframes

+0

問題是如何通過鏡頭檢測找到關鍵幀,因爲關鍵幀不可用。視頻編碼中的關鍵幀被插入用於編碼,而不一定是在鏡頭切割邊界處(理想情況下它們應該是,但是您可能會爲導航目的插入更多的* lot *) – koan

+1

@koan - 如果要爲每個鏡頭提取關鍵幀,第一步是獲取關鍵幀的方法。那麼你可以決定他們在哪一個鏡頭 –

+0

你會編碼你的視頻只是爲了獲得候選關鍵幀?聽起來效率低下,候選人將會受到率失真指標的偏見。決定他們是哪個鏡頭,那原來的問題不是嗎? – koan

2

什麼你叫鏡頭分割之後。雖然這是一個非常活躍的研究領域,但我認爲你不可能找到任何完整的庫來爲你解決問題,因爲它是開箱即用的。您最好的選擇可能是閱讀主題,選擇最適合您需求的方法並自行編碼。

一種方法是計算相鄰幀的顏色直方圖之間的卡方距離。當此距離超過用戶指定的閾值時,您處於鏡頭邊界。該方法在this paper解釋:

A.長阪和Y.田中,「自動視頻索引和全視頻 搜索對象露面」,雜誌信息處理 檔案15卷,第2期(1992年)Page 316

我已經玩過了,取得了一些成功。值得注意的失敗是單次拍攝(由相機閃光等引起)中的突然光線變化以及鏡頭變化的混合。

一旦你知道了鏡頭邊界,從每個鏡頭中選擇一個關鍵幀將是微不足道的,正如其他人指出的。

1

如果您輸入了一個未壓縮的視頻,您可以從www.ffmpeg.org下載ffmpeg並使用此可執行文件將您的視頻流解壓縮到其幀中。

隨後,爲了檢測您的鏡頭邊界,您必須從視頻關鍵幀中提取一些功能。在MediaMixer Deliverable, D1.1.2中提出了用於鏡頭邊界檢測的有效技術。此外,在MediaMixer網絡研討會上,您可以找到演示文稿「Fragmenting your Media Assets meaningfully – media analysis for fragment detection and extraction」,其中介紹了此鏡頭邊界檢測實現,同時您還可以訪問MediaMixer演示程序[http://www.mediamixer.eu/automatic-fragmentation-and-annotation-for - 改進的訪問演講視頻/],其中視頻鏡頭分割和概念檢測的結果可視化。