Monday, September 22, 2008

研究如何以最低系統需求去搜尋電視廣告

研究如何以最低系統需求去搜尋電視廣告

資工碩專一 陳建芳 2008/1/25

動機:

以某固定廣告片段,去搜尋某個電視台所錄下的影像,找出此一廣告發生的時間長度。

若以單一影像 依YUV去判斷,再作Fuzzy比對,將嚴重拖慢比對時間。

目前的構想是取得MPEG4壓縮檔案後,在處理Entropy CodingInverse ZigZagHuffman Decode Thresholder 之後,Inverse DCT之前, Block 資料直接拿來比對,由於在Decode過程中,Huffman Zigzag還原僅用到加法及移位運算,而IDCT後用到乘法運算,如此一來即可直接減少大量 IDCTMVPredictBlock indegrater 等花費的時間。

目標: 以一台電腦可搜尋 30Channels的連續影像,每一Channel 30天,並判別 50-100個廣告(10秒長度)出現的總時間長度,正確度需達95%以上。

目標一: 以每個廣告的第一張拿來辨識,能正確找出影像。

目標二: 能判斷10秒的廣告出現其中的幾秒。

目標三: 10秒的廣告也許被切割成三段, 分別撥出,或是 1+3 等。

系統:

MPEG4( I/P Frame ) Advanced Simple Profile/Level 5 Encoder

Linux 2.6 , GCC-4.1

Xvid-1.1.3 software Decode. ( In Linux )

VLC.( In Windows )

規格:

CIF-352x240 30FPS

MicroBlock 22 x 15 ( (8x8) x 4 dct ) .

實驗步驟:

1. 利用VLC 透過RTSP XIPCAM 電視影像以Element stream錄起來

( 此一步驟乃先期測試用,未來將改以直讀 Encoder , 並自行控制 Index File , 並自定格式,以達提升Performance ).

2. 先用肉眼觀查,尋找相同廣告片段。

影像序列範例EX: I1 P1 P2 P3 P4 P5… ...P13 P14 P15….P29 I2 P21 P22 P23…..

  1. 利用xvid 讀取 VOSVOLVOP..Header ( 測試階段採用Only ).

  2. xvid decode 步驟完成 Huffmanzigzag scan 完成 bitplant 還原後,在IDCT之前,將整個畫面的Block存起來,P15 DCT取法採做快速作法,直接延用之前I1 所遺留之Block,完全不計算InterIntraPredictMV等運算( P1 – P14 所作的Intra IDCT 更動也納入改變)

實驗結果:

  1. 直接抓取 2040 19076 ( 以下簡稱 AB frame ) Block,僅比較所有BlockDC值,(Block 區塊共 22x15x4 =1320)

    1. 當沒有誤差值時,共有1192塊不相同、錯誤率約90%

Error[1320.000000] DC=1192.000000 (90.303030)%

    1. 當誤差值小於8時,共有1108塊不相同、錯誤率約89%

Error[1320.000000] DC=1108.000000 (83.939394)%

    1. 當誤差值小於16時,共有915塊不相同、錯誤率約69%

Error[1320.000000] DC=915.000000 (69.318182)%

結論:

1.在第204019076 偵時,出現相同的廣告,但這兩偵都不是I偵,然而其前一偵卻又不儘相同(圖一),此台IPCAM無法強制IFrame,故由PFrame MB Intra變化,重新做IDCT

2. P 2040 從圖上看來與P2039 相似度較高,且從Coding 觀察,2040用了許多MV forward(MB Inter),而19076就少了非常多,forward 表該Block不需要再作IDCT,直接由前一Frame Motion vector forward來,所以這樣的做法不可行。

分析:

  1. Video reconstruction, 許多使用 MV Forward的方式不用再透過IDCT轉換,導至此一實驗所抓取的值不正確。

  2. 數據的取得為 Y DCT block , UV 未納入考量(減少Performance損耗),然而仔細看204019076圖,為相同廣告卻還是約略有所不同。

  3. 誤差值增加到 + - 16 以屬高,再加下去恐有誤判。

下期研究方向:

  1. Source Frame 重新壓製? 使其起始影像為IFrame , 提升 比對的正確性。

  2. 加大第一階誤差值,進入第二階段後,以相鄰Block(n) 為一組,若誤差同為 某數X即判定相同。

  3. PFrame 採用Inter Prediction 時,無法由歷史資料得到該Block 正確IDCT前的資料, 找方式把Predict後的資料取回。

    1. 若只能從 prediction 後再 DCT回來, 則將損耗時間,若花費時間大於整張PFrameDecode , 則沒有義意。

    2. 若由臨近的block predict 而來,用臨近的Block 值取代(少量誤差)

  4. 34點能提升識別、則可由 Frame 序列的相關性再提升辨識度。

  • PFrame 2039
















  • PFrame 2040


















  • PFrame 19075

  • PFrame 19076

No comments: