上一章說到,通過「AI重新生圖」當作背景修復,是個帶有不確定性的方法,容易因為AI模型的隨機性,造成文字去除不完整。所以我花了一些時間調查可行的圖片修復方案,目前暫時選了性能開銷較小、修復能力不錯的OpenCV inpaint Telea算法。
具體的演算法可以參考相關文件,使用方法是輸入原圖、OCR產生的文字遮罩,對覆蓋的範圍取鄰近值作修復。這個方法不需要接AI模型,而且對電腦性能要求也不大,相當方便。實測在不是非常複雜的線條圖案沒有問題,但是顏色交界、圖案邊界偶爾會出現問題,我覺得這些是可以再調參數或是換演算法解決的。
| 原圖 | 修復失敗案例 |
|---|---|
![]() |
![]() |
這邊特別挑出失敗的案例展示;通常情況,像前面幾章的範例圖都不會出現錯誤。但偶發情況出現的漸層色、圖案交界會出現修復錯誤,這些就需要在調整。
為了應對這種情況,系統保留了前面的「AI生圖修復」和「OpenCV修復」,預設情況使用OpenCV修復,如果遇到比較複雜的圖片,還可以重新切回AI生圖,解決這個問題。
另外,背景修復也是一個品質預算的tradeoff,有些PPT Skill會重新生成每個元素,再把他們組合成單頁簡報,通過這種方法,可編輯性會好非常多,但每個元件的生圖都是額外的成本開銷。我在開發平台時,希望把每張圖片盡量壓縮到1-2次生成(這樣每頁圖片不會超過$5 TWD),所以先選擇了傳統的CV圖像修復,後續應該會繼續嘗試優化,希望能找到穩定修復背景的方法。