資工碩專一 陳建芳 2008/1/25
動機:
以某固定廣告片段,去搜尋某個電視台所錄下的影像,找出此一廣告發生的時間長度。
若以單一影像 依YUV去判斷,再作Fuzzy比對,將嚴重拖慢比對時間。
目前的構想是取得MPEG4壓縮檔案後,在處理Entropy Coding、Inverse ZigZag、Huffman Decode Thresholder 之後,Inverse DCT之前, 將Block 資料直接拿來比對,由於在Decode過程中,Huffman 、Zigzag還原僅用到加法及移位運算,而IDCT後用到乘法運算,如此一來即可直接減少大量 IDCT、MV、Predict、Block 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 將 X牌 IPCAM 電視影像以Element stream錄起來
( 此一步驟乃先期測試用,未來將改以直讀 Encoder , 並自行控制 Index File , 並自定格式,以達提升Performance ).
2. 先用肉眼觀查,尋找相同廣告片段。
影像序列範例EX: I1 P1 P2 P3 P4 P5… ...P13 P14 P15….P29 I2 P21 P22 P23…..
利用xvid 讀取 VOS、VOL、VOP..等Header ( 測試階段採用Only ).
當xvid decode 步驟完成 Huffman、zigzag scan 完成 bitplant 還原後,在IDCT之前,將整個畫面的Block存起來,P15 DCT取法採做快速作法,直接延用之前I1 所遺留之Block,完全不計算Inter、Intra、Predict、MV等運算( P1 – P14 所作的Intra IDCT 更動也納入改變)。
實驗結果:
直接抓取 2040 與19076 ( 以下簡稱 A、B frame ) 的Block,僅比較所有Block的DC值,(Block 區塊共 22x15x4 =1320)。
當沒有誤差值時,共有1192塊不相同、錯誤率約90%。
Error[1320.000000] DC=1192.000000 (90.303030)%
當誤差值小於8時,共有1108塊不相同、錯誤率約89%。
Error[1320.000000] DC=1108.000000 (83.939394)%
當誤差值小於16時,共有915塊不相同、錯誤率約69%。
Error[1320.000000] DC=915.000000 (69.318182)%
結論:
1.在第2040、19076 偵時,出現相同的廣告,但這兩偵都不是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來,所以這樣的做法不可行。
分析:
Video reconstruction時, 許多使用 MV Forward的方式不用再透過IDCT轉換,導至此一實驗所抓取的值不正確。
數據的取得為 Y 的 DCT block , UV 未納入考量(減少Performance損耗),然而仔細看2040、19076圖,為相同廣告卻還是約略有所不同。
誤差值增加到 + - 16 以屬高,再加下去恐有誤判。
下期研究方向:
Source Frame 重新壓製? 使其起始影像為IFrame , 提升 比對的正確性。
加大第一階誤差值,進入第二階段後,以相鄰Block(n個) 為一組,若誤差同為 某數X即判定相同。
當PFrame 採用Inter Prediction 時,無法由歷史資料得到該Block 正確IDCT前的資料, 找方式把Predict後的資料取回。
若只能從 prediction 後再 DCT回來, 則將損耗時間,若花費時間大於整張PFrame的Decode , 則沒有義意。
若由臨近的block predict 而來,用臨近的Block 值取代(少量誤差)。
若3、4點能提升識別、則可由 Frame 序列的相關性再提升辨識度。
- PFrame 19076




No comments:
Post a Comment