發表文章

目前顯示的是有「數位修復」標籤的文章

低成本的數位影像修復 (OpenCV Inpainting)

圖片
低成本的數位影像修復 (OpenCV Inpainting)           影像的數位修復一向是個昂貴的工作。造成其價格居高不下的,除了高效能的硬體外,還有不便宜的軟體成本。目前市面上常見的數位修復軟體包括: Phoenix (DigitalVision) , Diamant (HS-ART) , PFClean (The Pixel Farm) ,以及較小眾的 DRS Nova (MTI) ,與部份使用特效軟體如 AE (Adobe) 來進行影像修復。這些產品通常都所費不貲,對於修復需求較小的個人或小型典藏單位而言並不是好的投資目標。如果透過外包給服務商的方式來處理,也是筆不小的花費。          面對這樣的問題,開源程式會是很好的解決方案。在 " Japan as destination in 20th century visual and material culture (2013-2016)" 這個計畫中,便使用 Python 程式語言的 OpenCV 函式庫,用其來進行影像中刮痕,髒點的修復與區域性降噪處理。 Inpainting         在使用這種方式進行數位修復前,需先安裝 Python 與 OpenCV 函式庫。 OpenCV 函式庫中,使用 cv2.inpaint() 這個函式來進行影像修復。修復影像的方式使用了兩種演算法: cv2.INPAINT_TELEA 與 cv2.INPAINT_NS 。           第一種演算法 TELEA 是 由Alexandru Telea在2004年提出的演算法, 使用 快速行進算法 來回溯需修復的區域。這種演算法會從修復區域的邊界開始,並向內填補。演算法的權重對於演算結果會相當大的影響,越往區域內部也可能有越大的誤差。          第二種演算法 NS 於 2001 年由 Bertalmio 等人提出的,使用用來描述流體的 Navier-Stokes 方程式,透過偏微分程式,由修復區域邊緣開始向內計算。由於流體的特性, 會延續其周圍區域的等距線(類似等高線,由相同強度的點所組成),並符合修復區域的邊界的強度變化。以這個方式,預期以最小差異的方式填補修復區域。 編寫程式碼          使用 Inpaint 的基本程式碼如下: import n