【课题总结】OpenCV 抠图项目实战(3)抠图综述
Python 小白的課題報告—OpenCV 摳圖項目實戰(3)摳圖綜述
本系列是 Python 小白的課題作業《基于OpenCV 的圖像分割和摳圖》。
需要說明的是,本系列并不能算是 OpenCV 的摳圖項目教程,只是以此為主題的課題報告。其中包括了一個較為完整的 PyQt 項目。
歡迎關注『Python 小白的項目實戰 @ youcans』 原創作品
Python 小白的課題報告—OpenCV 摳圖項目實戰(1)目錄摘要
Python 小白的課題報告—OpenCV 摳圖項目實戰(2)摳圖緒論
Python 小白的課題報告—OpenCV 摳圖項目實戰(3)摳圖綜述
Python 小白的課題報告—OpenCV 摳圖項目實戰(4)固定閾值摳圖
Python 小白的課題報告—OpenCV 摳圖項目實戰(5)自適應閾值摳圖
Python 小白的課題報告—OpenCV 摳圖項目實戰(6)色彩范圍摳圖
Python 小白的課題報告—OpenCV 摳圖項目實戰(7)邊緣檢測
Python 小白的課題報告—OpenCV 摳圖項目實戰(8)圖像輪廓
Python 小白的課題報告—OpenCV 摳圖項目實戰(9)評價指標
Python 小白的課題報告—OpenCV 摳圖項目實戰(10)PyQt5 使用
Python 小白的課題報告—OpenCV 摳圖項目實戰(11)算法實驗平臺
Python 小白的課題報告—OpenCV 摳圖項目實戰(12)源程序代碼
第二章 數字圖像摳圖技術綜述
文獻 [2],[3],[6]~[9] 綜述了圖像摳圖技術的研究進展。
藍屏摳圖的技術已經非常成熟,近年來摳圖問題的研究主要集中于自然圖像摳圖。
在自然圖像摳圖中,適當的人工交互是必要的。大多數摳圖算法通過用戶標記的三元圖(Trimap)實現對對解空間的約束。三元圖通過指定一部分已知的前景區域與已知的背景區域對圖像進行標記,由用戶涂鴉交互生成,或者由二值圖像分割結果自動生成。
依據透明度遮罩計算的原理,自然圖像摳圖算法可分為三大類,為基于像素對優化的摳圖算法、基于深度學習的摳圖算法和基于傳播的摳圖算法。
2.1 基于采樣的摳圖方法
基于顏色采樣的方法認為圖像的局部區域是連續的,具有相似顏色的近鄰像素,也具有相近的α值。
滿足局部連續假設的像素在統計特征上具有相關性,通過采樣未知像素周圍近鄰的已知前景、背景像素來估計α值。
基于采樣的自然圖像摳圖方法有Knockout方法[10]、Ruzon-Tomasi方法[11]、Hillman方法[12]、Bayesian方法[13]等。
圖2.1 自然圖像摳圖方法
基于采樣的方法可以分為區域劃分、顏色估計與α值估計三個步驟,先進行trimap 劃分,然后求未知區域中各點的前景色成分和α值。首先從trimap標定的前景背景區域中收集一組前景色和背景色樣本進行初始化;區域分割以后,對未知區域中任一點,通過鄰近的前景輪廓線上的點的顏色均值修正前景色分量,類似地可得到背景色分量的修正值;最后根據得到的前景色和背景色分量以及像素點的顏色值來估計該點的α值。
Knockout方法[10]計算每個顏色通道的α分量,加權平均作為最終的α值,也稱三通道加權法。該方法簡單、運算速度很快,但只適用于光滑圖像的摳圖。
Ruzon-Tomasi方法[11]采用統計方法來估計α值,顏色估計和α值估計的計算量很大,處理速度非常慢。
Hillman等[12]提出的基于主成分分析方法,考慮前景和背景區域在顏色空間中的分布為類似于雪茄形狀的長條形,使樣本的協方差矩陣的非零元素主要分布在對角線附近。該方法采用投影法估計α值,計算量也很大。
Chuang等[13]提出的基于貝葉斯框架的摳圖方法,將摳圖問題表示為貝葉斯形式。貝葉斯方法假設前景和背景像素均服從高斯分布,先建立前景顏色的概率分布,再把未知區域的像素劃分到前景或背景的不同簇中,表示當前選定的F概率有多大。貝葉斯方法忽略了全局信息,當前景和背景的顏色比較接近時摳圖效果不太理想。
2.2 基于傳播的摳圖方法(sampling-based)
基于傳播的方法認為圖像的局部區域滿足平滑性質,通過已知區域構建局部平滑的能量函數,從而計算得到α值,再將α值傳播到未知區域中。這樣可以利用臨近像素的相關性以減少由于顏色采樣中樣本選取不當所導致的錯誤。
典型的基于傳播的方法將圖像的透明度視為圖像本身的一種特性梯度場。Sun等[14]提出的泊松摳圖方法,提供了一種完全不同的重編輯掩像的方式,通過修改原始圖像的梯度場來達到改善摳圖效果的目的。
首先把彩色圖像轉化為灰度圖像并得到trimap;再將兩條輪廓線作為初始的邊界條件,在原始圖像的梯度場上建立一個泊松方程,于是掩像可以通過求解該方程得到重建,稱為全局泊松摳圖,適用于顏色變化光滑的圖像摳圖。
復雜圖像的掩像梯度場和原始圖像梯度場相差很大,可以采用局部泊松摳圖方法:先在原始圖像中找出局部區域,再用濾波器平滑使其與掩像梯度場相吻合,直到重建掩像令人滿意為止。
Rother等[15]提出了交互式前景提取技術GrabCut,是一種基于圖切割的圖像分割方法。GrabCut 算法是基于 Graph Cut 算法的改進,僅需要做很少的交互操作,就能夠準確地提取出前景圖像。
GrabCut 基于被分割對象的指定邊界框開始,使用高斯混合模型估計被分割對象和背景的顏色分布,將圖像分為被分割對象和背景兩部分。只需確認前景和背景輸入,該算法就可以完成前景和背景的最優分割。該算法利用圖像中紋理(顏色)信息和邊界(反差)信息,只要少量的用戶交互操作就可得到較好的分割效果。從靜態圖像中提取前景物體,采用GrabCut算法是最好的選擇。
2.3 基于深度學習的摳圖方法
近年來,基于深度學習的自然圖像摳圖算法大量涌現,性能也得到了很大的提升。
一類基于深度學習的摳圖算法仍然需要先驗信息,稱為Trimap-based方法,也稱為半監督學習方法。寬泛的先驗信息包括Trimap、粗糙Mask、無人的背景圖像、Pose信息等。
另一類基于深度學習的摳圖算法則是Trimap-free的方法,不需要提供具體圖片的人工交互或先驗信息。這類方法基于對大量訓練數據的學習,獲得自然圖像摳圖任務的表征信息,無需人工干預。
由于缺乏深度學習相關知識的基礎,尚未深入閱讀和學習該領域的文獻,相關的技術綜述可以參見文獻[3]。
參考文獻
[1] Porter T,Duff T.Compositing digital images [C].Computer Graphics Proceedings,Annual Conference Series,ACM SIGGRAPH,New York,1984 :253-259
[2] 林生佑,潘瑞芳,杜輝等.數字摳圖技術綜述[J].計算機輔助設計與圖形學學報,2007,19(4):473-478
[3] 梁椅輝,黃翰,蔡邵權等.自然圖像摳圖技術綜述[J].計算機應用研究,2021,38(5): 1294-1301
[4] 孫巍.視覺感知特性指導下的自然圖像摳圖算法研究[D].北京:北京交通大學,2015
[5] Gonzalez R C,Woods R E著,阮秋琦,阮宇智譯.數字圖像處理(第四版)[M].電子工業出版社,2020
[6] 沈洋,林曉,謝志峰等.交互式前景摳圖技術綜述 [J].計算機輔助設計與圖形學學報,2014,26(4):511-519
[7] 姚桂林,姚鴻勛.基于仿射方法的圖像摳圖算法綜述 [J].計算機輔助設計與圖形學學報,2016,28(4):677-692
[8] 李卓婷.三種典型數字圖像算法的比較[D].廣州:華南理工大學,2013
[9] 文向東.基于高分辨率大尺寸圖像摳圖方法的研究綜述 [J].現代計算機,2021(5):75-80
[10] Berman A,Dardourian A,Vlahos P.Method for removing from an image the background surrounding a selected object: US 6134346 [P] .2000
[11] Ruzon M,Tomasi C.Alpha estimation in natural images [C].Proceedings of IEEE Conf. on Computer Vision and Pattern Recognition,South Carolina,2000:18-25
[12] Hillman P,Hannah J,Renshaw D.Alpha channel estimation in high resolution images and image sequences [C].Proceedings of IEEE Conf. on Computer Vision and Pattern Recognition,Hawaii,2001:1063-1068
[13] Chuang Y Y.New models and methods format ting and compositing [D].Seattle: University of Washington,2004
[14] Sun J,Jia J Y,Tang C K.Poisson matting [C].Computer Graphics Proceedings,Annual Conference Series,ACM SIGGRAPH,Los Angeles,2004 :315-321
[15] Rother C,Kolmogorov V,Blake A.Interactive foreground extraction using iterated graph cuts [C].Computer Graphics Proc.,Annual Conference Series,ACM SIGGRAPH,Los Angeles,2004 :309-314
【本節完】
版權聲明:
歡迎關注『Python 小白的項目實戰 @ youcans』 原創作品
原創作品,轉載必須標注原文鏈接:https://blog.csdn.net/youcans/article/details/122296231
Copyright 2022 youcans, XUPT
Crated:2022-01-01
歡迎關注『Python 小白從零開始 PyQt5 項目實戰 @ Youcans』系列,持續更新中
歡迎關注『Python 小白的項目實戰 @ youcans』 原創作品
Python 小白的課題報告—OpenCV 摳圖項目實戰(1)目錄摘要
Python 小白的課題報告—OpenCV 摳圖項目實戰(2)摳圖緒論
Python 小白的課題報告—OpenCV 摳圖項目實戰(3)摳圖綜述
Python 小白的課題報告—OpenCV 摳圖項目實戰(4)固定閾值摳圖
Python 小白的課題報告—OpenCV 摳圖項目實戰(5)自適應閾值摳圖
Python 小白的課題報告—OpenCV 摳圖項目實戰(6)色彩范圍摳圖
Python 小白的課題報告—OpenCV 摳圖項目實戰(7)邊緣檢測
Python 小白的課題報告—OpenCV 摳圖項目實戰(8)圖像輪廓
Python 小白的課題報告—OpenCV 摳圖項目實戰(9)評價指標
Python 小白的課題報告—OpenCV 摳圖項目實戰(10)PyQt5 使用
Python 小白的課題報告—OpenCV 摳圖項目實戰(11)算法實驗平臺
Python 小白的課題報告—OpenCV 摳圖項目實戰(12)源程序代碼
總結
以上是生活随笔為你收集整理的【课题总结】OpenCV 抠图项目实战(3)抠图综述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java web开发之上机指导(2)
- 下一篇: mxnet安装(Jetson)