用投影片修正影片

Posted by TJ Wei on 星期五, 8月 08, 2014 with No comments

PyCon APAC 2014 錄的一些影片,效果並不好,於是想是否能利用講者給的投影片來修補看看。
關於圖形對比,有很多方法可以選, OpenCV 裡面就內建了一些。
不過由於原始影像的品質實在太差,用找關鍵點的方式似乎需要調整,因此最後由於時間以及精力上的限制,就拿 ipython 用了非常低科技的線性代數來處理。
最後的程式碼為

基本上的步驟如下:
  • 解開投影片 pdf 成為一系列 .png 檔案。 雖然 python 有  wand module,不過這裡直很無恥的接呼叫 ImageMagick 的 convert 來解。
  • 找出投影片的座標,這裡用 ipython 寫出一個手動工具,找出部份影片內容和投影片來手動對齊。
  • 將對齊後的影片和投影片轉成 256x256 灰階向量,平移及正規化之後取內積。用內積來決定相似度。256x256 這個大小是一開始隨便選一個夠大的數字,其實可能 128x128 即可。
  • 相似度的閥值由之前的手動工具可以大致估計出。不用很準,依照不同情形可以是 0.5 - 0.95 中間的某個值。
  • 最後直接逐格比對,適當時,用投影片取代原來內容,然後利用 OpenCV 把影片壓回去。
  • 因為 OpenCV 不能處理聲音,所以用 libav 把原來的音軌和處理過得視訊直接合在一起。雖然 python 也有 libav 的 module,不過我不確定怎麼用這個 module 做 copy stream 的功能,所以還是很無恥的直接呼叫 avconv 來處理。
 以下對比原始影片及處理過的影片
Toomore 的 GRS 演講錄影算是我的「動機」,你可以看看這個動機能不能說服你
原來文字完全糊成一團
這是一開使用來試驗的對象,原本直接方差,效果還不錯。

海總理的演講,錄影品質也不行,這是第二個處理的影片。

海總理的影片,處理效果也不錯,不過第一章投影片似乎字體大小有改過,所以抓不到

Cheng-Lung Sung 的影片又是令一個問題,跟其他影片不一樣,不事由投影機訊號直接錄的。
原本想利用 OpenCV 的 Perspective Transformation 來修改互動工具,但沒想到原本的工具看起來堪用。






Andy 的影片原始畫質就還可以,不過利用投影片,還是可以讓畫質由還可以變成完美。
但一來原本畫質就還可以,二來投影片有一些動畫,所以閥值設定的比較高。


駱勁成關於立院投票指南的演講

跟其他有些不同的地方在於,替代的投影片大小放大為全螢幕。



最開始其實是打算用 Feature Matching 的方式,但因為一開始實驗的對象是最模糊的兩個演講,發現不靈。所以放棄這招。不過對於比較清楚的影片,其實 feature matching 看起來效果還不錯。

處理之後的影片效果可以參考
Categories: