目的:
目前有一 2HR 影片,隨機抽取其中30 sec 影像,利用程式要找出這30 sec影像位置.
假設這2HR影片來源有可能不是原始的(轉檔過或是再重製過),壓縮格式可能是MPEG4/H.264.
假設影像大小:
- Resolution: 352x240 ( CIF ).
- FPS : 30 frame per second.
- Compress: H.264.
- 原始影像: 2HR , 108000 Frame.
- 比對影像: 1 sec, 30 Frame.
- 2HR影像序列,以每秒 30fps,2hr x 60mins/hr x 60 sec/hr = 共108000 frame
- 每個 frame 切成 NxM,以下面例子假設 N=176 : M = 120 ,故一個畫面切成四個Micro Block(之後統稱 MB1/MB2/MB3/MB4 ).
- 將欲比對的資料( 30sec ),以同樣的作法切分(以下稱為 Target Block TB1/TB2/TB3/TB4 ).
- 每個MB 取其 R/G/B 平均值,於是每一個Frame 就會有4組 R/G/B平均值.
- 為節省比對時間,先以R為主,有相似後再比G,B以此類推。
- 取出每個Frame的 MB1 ,可以得到 108000 個的資料序列。
- 題目所示,將欲比對的30sec,以同樣的作法,取出TB1的30個的資料序列。
- 用 TB1 30個去掃描 MB1的108000,找出相似段落,若有相似:
- 方法一:依序掃描 TB2 及 MB1 該位置是否相似,TB3/TB4相同.若同在作
- 方法二:先掃描 TB1(G/B)線,在回頭作方法一。
以上為簡略說明:
- 實作上可能不以RGB色彩比對,會改以YUV,Y取亮度較單一R or G or B精準,且解壓縮後無須再轉為RGB.
- block 數切分為 4 Block為範例,4 Block 基本上會造成 normalize而無參考價值。
- 320x240 resolution太小,一般影片為 720x480 ( D1 ).
- N/M 值該如何取適當,取太小有normalize的問題,取太大則增加比對時間。
- 如何比? 如果原始影像經過重製or 放大縮小,則每個MB 會有誤差的現象發生而不是相同,目前誤差的現象只能以 abs 處理,若誤差絕對值小於 X, X = 5%,則判定相似?
- 如上:連續誤差及雜訊問題。
- 目前把每個點串起來,弄成一個2D圖形,類似一個波型圖,以肉眼觀之是可以區分的,以上述作法應該也可行,但有沒有更好的資料比對方式。
- 目前再學校的圖書館網站找了一些Paper,似乎沒有這樣子的作法,這樣的資料比對可以說是純粹的Data search,而大部分的影像搜尋都是跟contain的Information有關。