2012-07-13 73 views
1

我試圖通過檢測幀中存在標記(圖像)來分割視頻。我已經閱讀了文檔,我看到removelogo但不是detectlogo使用FFmpeg檢測具有給定圖像/徽標的幀

有誰知道這可以實現?我知道這個標誌是什麼以及它所在的地區。

我想我可以提取所有幀爲巴新,然後分析它們一個接一個(或N乘N),但它可能是一個漫長的過程......

任何指針?

回答

3

ffmpeg本身沒有這種能力。 delogo過濾器只需在其參數中使用矩形區域並根據其周圍內容來對該區域進行內插。它不關心該地區以前包含什麼;它會填寫該區域,而不管它以前包含的內容。

如果您需要檢測徽標的存在,那是完全不同的任務。你需要自己創建它;如果您認真對待這個問題,我建議您開始熟悉ffmpeg過濾器API並準備好讓自己的手變髒。如果徽標具有鮮明的顏色,那麼可能是檢測它的好方法。

由於您所追求的可能只是輸出關於哪些幀包含(或不包含)徽標的信息,因此作爲模型的一個過濾器將是blackframe過濾器(它將搜索所有 - 黑框)。

2

您可以編寫detect-logo模塊,解碼視頻(YUV 420P FORMAT),將原始幀提供給此模塊,在您希望標識的區域執行SAD(絕對差的和),如果SAD它的匹配可以忽略不計,記錄幀數。您可以在這些幀中分割視頻。 SAD僅在Y(亮度)幀上完成。爲了保存處理,您可以在解碼之前將視頻縮放到較低的分辨率。

+0

你可以給任何關於如何實現SAD的指針嗎?有沒有模塊已經做到這一點? – Sofia 2012-07-17 22:41:57

+0

http://www.freescale.com/webapp/sps/site/overview.jsp?code=DRPPCSOAD看看C模塊。還有更多信息:http://en.wikipedia.org/wiki/Sum_of_absolute_differences – d33pika 2012-07-18 06:30:31