三、 研究方法及成果
3.3 視覺導向錯誤補償之硬體架構設計
本計畫之系統架設在無線網路上,需要做 大量資訊傳輸。但受限於無線網路的頻寬有 限,因此資料壓縮是不可或缺的。以現階段而 言,H.264 是最有效率的壓縮工具,能以最小 的頻寬傳輸品質最好的影片(video)。然而,無 線網路很容易受到雜訊的干擾,而 H.264 標準 中的 entropy-coding,intra/inter prediction 機 制,會使傳輸中的影片很容易因為一個位元產 生的錯誤,而擴散出去,對人眼視覺感覺不 適。現階段而言,解決方法大致可分成以下三 種: 1. 重傳(Retransmission):也就是重新傳輸 發現是錯誤的封包。2. 錯誤更正碼(FEC)或多 餘封包(redundancy packets):這類的方法是藉 由加入多餘的資訊在封包中,使錯誤產生時還 有可能更正回正確的封包。FEC 就是在封包的 開頭加上錯誤更正碼,當封包中的某些位元產 生 錯 誤 時 有 發 現 甚 至 有 一 定 改 正 的 能 力 。 Redundancy packets 可以使得在某些封包遺失 下還能還原。舉例來說,原本一個影片只需要 七個封包就可以包含所有資訊,但我們可以加 入額外三個封包,這樣在接收端我們只要收到 這十個封包其中的七個就可以還原正確的影 片。3.錯誤補償(Error concealment):雖然傳輸 的 過 程 中 產 生 的 錯 誤 會 造 成 一 些 資 訊 的 遺 失,但可以利用正確接收的到部份來補償,包 括空間(spatial)和時間(temporal)上的資訊。其 中空間上的資訊指的是同一張影像(frame)上
的正確部份,而時間上的資訊是指前面幾張影 像的正確部份。因為錯誤的部份跟鄰近影像有 很大的相關性,所以可以利用周圍的資訊來補 償錯誤的部份。以上三種方法,前兩種都會對 本 來 就 已 經 擁 擠 的 無 線 網 路 造 成 更 大 的 負 擔,但在解碼器端的錯誤補償法卻不會,因此 最後我們選擇錯誤補償法來處理傳輸過程中 封包遺失或錯誤發生的情況。
3.3.2 文獻探討
現今已經有很多人提出錯誤補償相關的 演算法,大致可分成空間錯誤補償(spatial error concealment) 、 時 間 錯 誤 補 償 (temporal error concealment)以及同時使用上述兩者的空間時 間補償法。
空間錯誤補償通常用來補償壓縮後的 I 影 像 (intra-frame) 或 者 是 當 場 景 轉 移 (scene change)的時候,因為 I 影像沒有移動向量 (motion vector),沒有辦法直接跟前一張作對 應,而場景轉移則代表前一張影像跟目前這張 影像相似性不高,所以只能利用空間上的關聯 性。而時間錯誤補償通常能得到比較好的效 果,但是需要很好的去預測遺失的移動向量,
通常使用在 P or B 影像上。若有時前一張影 像也不見得能找到好的對應,所以就有所謂空 間時間的補償法,來在兩者之間取得平衡。在 這篇 paper 裡,我們主要是針對處理 I-frame 的演算法來做探討。
首先是Wang et al. [26]所提出的演算法,
也是目前應用在H.264上的方法。作者利用錯 誤的區塊 (Macroblock)周圍正確的像素值來 內插遺失的資訊,其權重反比於其與遺失位置 的距離。Xu and Zhou提出使用具有方向性的 內插法,使得遺失區塊的方向性可以被還原 [27]。Agrafiotis et al.把周圍區塊邊界的角度 分成八個方向,計算角度分布的亂度,若亂度 太大則為避免延伸出錯誤的邊界反而使缺陷 更加明顯,就不會使用方向性的內插法[28]。
在[29][30]兩篇論文中,周圍區塊會先依據像 素值的分佈分類,然後會選擇適合的演算法來 補償某一類的區塊。然而,以上這些演算法只 能處理小範圍的遺失區塊,但都沒有讓大範圍 的遺失區塊達到使人眼接受的程度。所以我們 使用一個在電腦視覺領域發展多時的影像補 償法,也就是"image inpainting"。
圖十六 Image inpainting 說明
這種演算法已經被很多相關論文證實錯 誤區塊經過補償後,觀看者很難一眼辨認出錯 誤的區域在哪裡。如同圖十六所示,對一張影 像來說,Ω (圖十六中的黃色部份)是錯誤區塊 所在的區域;∂Ω(橘色部份) 是Ω 的邊界;θ ( 白 色 部 份 ) 是 正 確 區 塊 所 在 的 區 域 。 在 exemplar-based image inpainting演算法一開始 必須要決定每個邊界點的先後次序(priority, P(p)),利用以下公式:
P(p) = C(p) × D(p) (1) 其中C(p)代表可靠度,是p點周圍點可靠度的 平均值。對於正確區塊來說,其中每一點可靠 度都起始為1,而錯誤區塊點可靠度則設為0。
D(p)是與周圍點分布有關的條件,和周圍邊緣 (edge)強弱成正比。簡單來說,若周圍的邊緣 越明顯,則D(p)會比較大。Patch(Ψ )是這演算 法的基礎運算元,其大小(patch size)由使用者 來定義。它是以 上的點為中心,張出長寬 皆等於patch size的正方形。然後這個邊界點的
先後次序就是由這個小正方形裡頭的點來決 定。每個邊界點所張出的patch的順位都決定好 後,就由最高的開始補起找一個在正確區域裡 最接近的patch。如同圖十六, pΨ 有最大的次 序值因為有一個很明顯邊緣在附近,而 qΨ 是 在 定 義 好 的 搜 索 範 圍 之 中 , 與 它 最 接 近 的 patch。用式子表示如下:
其中 d(.)是兩個 patch 間的距離函數,定義為 兩 者 像 素 相 減 絕 對 值 的 累 加 (SAD, sum of absolute difference)。最後,Ψ 就會貼到 pq Ψ 範 圍裡,並取代那些本來是錯誤的像素。並且會 把那些位置的點之可靠度設成 pΨ 內所有點可 靠度的平均值。同樣的步驟重複不斷的運作直 到沒有任何沒有像素值的點就可以完成這個 演算法,更多的細節可參照[31][32]兩篇論 文。
3.3.3 研究目的
雖然 image inpainting 這個演算法能大幅 改進錯誤補償的效果,但是卻無法滿足每秒三 十張影像的即時運算需求(現在的演算法做一 張影像需要的時間至少也要數秒,錯誤區域若 比較大甚至要耗費數分鐘的時間),因此需要 硬體的加速。但原本的演算法要做成硬體卻會 造成以下兩個問題:
1. 需要大量記憶體,成本太高 2. 執行時間和次數是不可預測的
這兩點使得硬體的設計極為困難,為此我 們 提 出 了 一 個 以 一 個 個 區 塊 為 基 準 的 演 算 法,來降低記憶體的使用並把執行時間和次數 控制在一定的數量上。重點是,也不會降低補 償影像的品質。所以本研究的目的就是提出一 個適於硬體的image inpainting演算法,使得錯 誤補償即時運算的需求能被滿足,同時補償的 結果能比現有的演算法使人眼更舒服。
3.3.4 研究方法
圖十七是提出演算法的流程圖。由論文 [33] , 可 知 道 如 何 預 測 錯 誤 區 域 的 結 構 性 (structure)對於錯誤補償是非常重要的。所以一 開始我們提出了一個延長邊緣的機制,依據周 圍正確區域的邊緣的方向性和強度來預測錯 誤區域的邊緣並延伸出來。舉例來說,圖十八 中的黑色點代表的就是依據周圍已存在的邊 緣(實線)延伸出的邊緣點。有了這些結構性的 資訊,就可以預先知道要先補那些點來維持結 構性,所以公式(1) 中的D(p)就可以被省略簡 化為公式(3):
其中| p|是 pΨ 的面積。此外,為了更加減少硬 體成本,image inpainting的流程不在是以整個 錯誤區域為整體,而是分割成一個個區塊來處
理。這樣的話,晶片內的記憶體就只需要存目 前處理區塊附近一定範圍的資訊,而且運算所 支 援 的 遞 迴 也 只 需 要 支 援 一 個 小 區 塊 的 完 成,比原先來得容易控制得多。
圖十七 我們提出之演算法流程圖
此外,為了維持邊緣的連續性,第二步動 態決定目前要補償的區塊是不可或缺的。如同 圖十八所示,只要我們從號碼較小的區塊補到 號碼較大的區塊,並在每個區塊的補償過程中 先從那些延伸出去的邊緣點開始,那麼這些邊
緣的連續性就可以像原本的演算法壓一樣連 接起來。選擇完要補的區塊後,會開始spatial image inpainting 或 mixed spatial-temporal image inpainting依據前一個影像是否存在或有 場景轉移的情況發生。但這張I影像是整個影 片的第一張或者發現前一張影像跟這一張沒 有什麼關聯性。也就是場景轉移產生時,會選 擇spatial image inpainting,只會利用到目前影 像的資訊來補償,反之則進入mixed spatial -temporal image inpainting,也就是同時利用空 間和時間上的資訊。關於各項機制細節如下所 述:
圖十八 邊緣延長.
1. 邊緣延長 Edge Extension
這個機制的目的是延長正確區塊內的邊 緣到錯誤區塊中來得到結構資訊。由論文[34]
我 們 可 以 得 知 , 邊 緣 的 強 度 和 方 向 性 可 由 Sobel邊緣偵測器計算出來。然後在正確區塊 和錯誤區快交界處,強度在3 x 3範圍內最大的 點 會 沿 著 原 本 邊 緣 方 向 被 延 長 到 錯 誤 區 塊 內,延伸長度正比於其強度。
2. 動態區塊次序 Dynamic Order Decision 補 償 次 序 並 不 是 依 照 raster-scan 的 次 序,因為那樣無法保證邊緣的延續。選擇區塊 的方式改變為由有最強邊緣經過的區塊開始 且最接近正確的區塊。以下是一些依循的規 則:
(1) 找出最靠近正確區塊的那一列 (2) 計算這一列裡每個區塊的次序值 (3) 選擇次序值最高的區塊
次序值按照以下條件來決定: 若那區塊只有延 伸至正確區塊會以補償區塊的邊緣會最先處 理;若有來自錯誤區塊延伸邊緣的區塊則會等 周圍補完再補。若條件一樣,則以區塊裡面的 邊緣點較多者優先。
3. Spatial Image Inpainting
這個機制是要在沒有前一張影像的資訊下 補償區塊的方法。首先,patch的長寬和搜索範 圍要先定義,這部分會依據周圍區塊的特性而 動態調整。舉例來說,當周圍的區域很平坦,
邊緣不多時,長寬就可以設大一點,搜索範圍 也可以小一點。反之,當周圍的特性很複雜,
如細緻的花紋,這時長寬就要小一點來保存材 質的特性。再來,為了要保持連續性和類似 性,補償的流程會切分成三層。第一步會先從 延伸出去的邊緣點開始找尋對應的patch,在來 才是所有的邊界點,不過要貼上去之前會先檢 查相減絕對值的平均值是否小於某個標準,否
如細緻的花紋,這時長寬就要小一點來保存材 質的特性。再來,為了要保持連續性和類似 性,補償的流程會切分成三層。第一步會先從 延伸出去的邊緣點開始找尋對應的patch,在來 才是所有的邊界點,不過要貼上去之前會先檢 查相減絕對值的平均值是否小於某個標準,否