AI 圖像智能修復老照片,效果驚豔到我了!| 附代碼

2020-12-08 中國軟體網
近些年,基於深度學習的發展,計算機視覺在人工智慧和深度學習的大背景下方興未艾,與此同時,當越來越多的應用場景被挖掘出來時,也意味著計算機視覺的發展前景將無比廣闊,其中圖像處理技術就是最熱門的應用之一,而最近一段時間,圖像處理技術中最受歡迎的必須是圖像修復功能,一鍵修復老照片等App應用,在社交網絡上掀起一股潮流。

 

圖像識別技術本身的原理並不複雜,信息的處理是這一技術的關鍵點所在。近年來,由於深度學習的發展,大大提高了圖像識別的準確率,深度學習通過大量圖像數據信息特徵的積累與分析,可自動完成特徵提取和圖像匹配等任務。最近一段時間,最受歡迎的必須是圖像修復功能。

早在文藝復興時期,人們就開始修復一些中世紀的藝術品,其目的在於通過填補一些裂縫來使畫面恢復原貌,這一工作就稱之為"Inpainting"(修復,潤飾)或"Retouching"。M.Bertalmio首次提出許多圖像修復能被簡化為一個數學表達式,利用計算機能自動加以實現。圖像修復現已是計算機圖形學和計算機視覺中的一個研究熱點,在文物保護、影視特技製作、虛擬實境、多餘物體剔除(如視頻圖像中刪除部分人物、文字、小標題等)等方面有著重大的應用價值。

其中常見的修複方法有:

偏微分方程的方法:Bertalmio採用偏微分方程(PDE)的方法進行圖像修復,取得了較好的效果。用戶需指定需要修復的區域,算法將待修補的區域邊界的等值線外部的信息沿輪廓法向擴散到中間待修補的象素上。該算法利用局部顏色的光滑度沿著等值線擴散,考慮了各向異性的擴散,以保證邊緣處的邊界連續,但該方法計算不穩定。

整體變分方法和基於曲率的擴散模型:整體變分方法(TV,TotalVariational)採用了歐拉-拉格朗日方程和各向異性的擴散,基於曲率的擴散模型(CDD,Curvature-DrivenDiffusion)方法是整體變分方的一種擴展,在擴散過程中考慮了輪廓的幾何信息(曲率),可以處理較大的區域,但邊界處往往很模糊。

高斯卷積核對圖像進行濾波的方法:利用了高斯卷積核對圖像進行濾波,能快速地修復破損區域,但該算法僅考慮了破損區域邊緣一周的圖像顏色值,使得其僅適用於破損區域為2-3個象素寬度的情形。

紋理合成的方法:紋理合成的方法,能較好地去除圖像中的大塊汙斑,但由於算法運行時間不是與掩模區域成正比,而是與圖像大小成正比,因此修復時間相對較長。

而今天我們就將藉助Python實現我們的修圖效果。

 

實驗前的準備

首先我們使用的python版本是3.6.5。所測試的系統有windows10,windows7,Linux系統以及蘋果系統。從這點也可以看出python多平臺和多拓展性、易於遷移的優點。

所使用的的python庫有cv2庫,目的是用來讀取圖片,處理圖片像素值和保存圖片等;numpy用來對讀取過來的像素值矩陣進行運算。

 

修復程序處理一的搭建

1、圖像處理第一步:

首先我們所藉助常用的OpenCV處理手段進行處理圖片。首先進行的是圖片二值化處理和創建結構元素,其中詳細代碼如下:

import cv2import numpy as nppath = "13.jpg"img = cv2.imread(path)hight, width, depth = img.shape[0:3]#圖片二值化處理,把[240, 240, 240]~[255, 255, 255]以外的顏色變成0thresh = cv2.inRange(img, np.array([240, 240, 240]), np.array([255, 255, 255]))#創建形狀和尺寸的結構元素kernel = np.ones((3, 3), np.uint8)

2、擴張修復區域:

識別到修復區域並根據相鄰像素值進行擴張達到彌補像素值修復圖片的效果。cv2.inpaint()函數主要涉及兩種算法。

一種算法是從該區域的邊界開始,然後進入區域內,逐漸填充邊界中的所有內容。它需要在鄰近的像素周圍的一個小鄰域進行修復。該像素由鄰居中所有已知像素的歸一化加權和代替。選擇權重是一個重要的問題。對於靠近該點的那些像素,靠近邊界的法線和位於邊界輪廓上的像素,給予更多的權重。

另一種是基於流體動力學並利用偏微分方程。基本原則是heurisitic。它首先沿著已知區域的邊緣行進到未知區域(因為邊緣是連續的)。它繼續等照片(連接具有相同強度的點的線,就像輪廓連接具有相同高度的點一樣),同時在修復區域的邊界處匹配漸變矢量。為此,使用來自流體動力學的一些方法。獲得顏色後,填充顏色以減少該區域的最小差異。

詳細代碼如下:

#擴張待修復區域hi_mask = cv2.dilate(thresh, kernel, iterations=1)specular = cv2.inpaint(img, hi_mask, 5, flags=cv2.INPAINT_TELEA)cv2.namedWindow("Image", 0)cv2.resizeWindow("Image", int(width / 2), int(hight / 2))cv2.imshow("Image", img)cv2.namedWindow("newImage", 0)cv2.resizeWindow("newImage", int(width / 2), int(hight / 2))a=cv2.imshow("newImage", specular)cv2.imwrite("43.jpg",specular)cv2.waitKey(0)cv2.destroyAllWindows()

 

修復程序處理二的搭建

1、圖像處理第二步:

轉換成hsv值,根據hsv值判斷圖片的前景和後景。HSV是一種將RGB色彩空間中的點在倒圓錐體中的表示方法。HSV即色相(Hue)、飽和度(Saturation)、明度(Value),又稱HSB(B即Brightness)。色相是色彩的基本屬性,就是平常說的顏色的名稱,如紅色、黃色等。飽和度(S)是指色彩的純度,越高色彩越純,低則逐漸變灰,取0-100%的數值。明度(V),取0-max(計算機中HSV取值範圍和存儲的長度有關)。HSV顏色空間可以用一個圓錐空間模型來描述。圓錐的頂點處,V=0,H和S無定義,代表黑色。圓錐的頂面中心處V=max,S=0,H無定義,代表白色。其中主要用到的函數是cv2庫中的cv2.cvtColor()函數,將RGB圖像(在opencv中設計BGR圖像)轉換為HSV圖像用到了參數cv2.COLOR_BGR2HSV。

詳細代碼如下:

import cv2import osimport numpy as npsta=0for file in os.listdir("cut_test"): sta=sta+1 print("正在處理"+"cut_test/" + file) img = cv2.imread("cut_test/" + file) #img=cv2.imread('1.jpg') rows,cols,channels = img.shape cropped = img[0:479, 0:cols] #轉換hsv hsv=cv2.cvtColor(cropped,cv2.COLOR_BGR2HSV) # 圖片二值化處理,把[240, 240, 240]~[255, 255, 255]以外的顏色變成0 thresh = cv2.inRange(hsv, np.array([90,10,125]), np.array([135,180,255])) erode = cv2.erode(thresh, None, iterations=2) dilate = cv2.dilate(erode, None, iterations=0) # 創建形狀和尺寸的結構元素 kernel = np.ones((3, 3), np.uint8)

2、圖像修復:

在擴張修復區域的基礎上外加調整像素值圖片處理。

其中腐蝕操作詳細如下:

定義了一個十字形結構元素 其實是一個矩陣,我們知道在圖片的腐蝕過程,對圖片的每個點,使用這個結構掃描每一個點,用結構元素與其覆蓋的二值圖像做「與」操作,如果都為1,結果圖像的該像素為1。否則為0,腐蝕處理的結果是使原來的二值圖像減小一圈。使用的函數:cv2.erode(img,kernel);

膨脹操作詳細如下:

使用同樣的結構,對圖片的每個點,使用這個結構掃描每一個點,用結構元素與其覆蓋的二值圖像做「與」操作,如果出現1,結果圖像的該像素為1。否則為0,腐蝕處理的結果是使原來的二值圖像擴大一圈。使用的函數:cv2.dilate(img,kernel)

詳細代碼如下:

# 擴張待修復區域 hi_mask = cv2.dilate(dilate, kernel, iterations=1) specular = cv2.inpaint(cropped, hi_mask, -5, flags=cv2.INPAINT_NS) #合併 htich = np.vstack((specular, img[479:rows, 0:cols])) ''' blue=[] #獲取mask,調整lower中h控制顏色 lower_blue=np.array([90,10,125]) upper_blue=np.array([135,180,255]) mask = cv2.inRange(hsv, lower_blue, upper_blue) erode=cv2.erode(mask,None,iterations=1) dilate=cv2.dilate(erode,None,iterations=1) #腐蝕膨脹 erode=cv2.erode(mask,None,iterations=1) cv2.imshow('erode',erode) dilate=cv2.dilate(erode,None,iterations=1) cv2.imshow('dilate',dilate) for i in range(rows): for j in range(cols): if dilate[i,j]==255: blue.append([i,j]) for w in blue: x=w[0] y=w[1] img[x,y]=[255,255,255] ''' cv2.imwrite("dels_test/" + str(sta) + ".jpg", htich)''' cv2.imshow('Mask', img) cv2.waitKey(0) cv2.destroyAllWindows()'''

最終效果如圖所示(右邊是修復效果):

怎麼樣?這修復效果還不錯吧?趕緊動手練起來,掌握一門千萬修圖師技能吧!




免責聲明:

本站系本網編輯轉載,會儘可能註明出處,但不排除無法註明來源的情況,轉載目的在於傳遞更多信息,並不代表本網贊同其觀點和對其真實性負責。如涉及作品內容、版權和其它問題,請在30日內與本網聯繫, 來信: liujun@soft6.com 我們將在收到郵件後第一時間刪除內容!

[聲明]本站文章版權歸原作者所有,內容為作者個人觀點,不代表本網站的觀點和對其真實性負責,本站擁有對此聲明的最終解釋權。

相關焦點

  • AI修復港星老照片,林青霞王祖賢的我可以看100遍!
    AI修復港星老照片,林青霞王祖賢的我可以看100遍!咱們經常提及那些容顏不老的藝人,他們因為有錢,所以用更多、更好的保養品對自己進行保養,繼而在同齡人裡面表現多倍的年輕,然而,隨著年齡上升到一定的程度,保養品也會遮不住老態,像趙雅芝遠看還是那麼美麗,近看你就會發現她的皮膚也是衰老了,像脖子和手這些位置是最容易出賣她的。
  • AI修復港星老照片,王祖賢最美,林青霞不輸流量小花
    上世紀的港風女神,是眾多人心中的白月光,成為了真正驚豔了時光的存在。近日,網絡興起了一股AI技術修復老照片的熱潮,通過先進的技術使模糊的老照片清晰起來。這些港風女神如王祖賢、林青霞等的照片就在這場修復熱潮中又火了一把。看著被修復後的高清照片,美貌一覽無遺,網友紛紛感嘆道:女神們下凡辛苦了!
  • 吳博:目標檢測集成框架在醫學圖像 AI 輔助分析中的應用 | AI 研習...
    近日,在雷鋒網 AI 研習社公開課上,深圳市宜遠智能科技有限公司負責人吳博剖析了目標檢測已有的框架,重點分享如何對目標檢測框架進行改造,以便在醫學圖像分析中產生更好的效果。公開課回放視頻網址:http://www.mooc.ai/open/course/559?
  • 中國小夥開發最新舊照片修復技術
    那些我們想要留在心底或未曾經歷過的從前,都可以通過翻看老照片找回來。為了不讓心底的溫暖消逝,也為了能把歷史的真容留住,各種圖像修復工具層出不窮。我們看到了百年前的北京,看到了民國時的摩登女郎,還有被重新修復的母親的老照片。
  • AI入門|人工智慧第2講:圖像識別(Python實現)
    今天,我們一起體驗圖像識別的魅力吧。1.任務發布:使用Python編寫程序代碼,識別圖片中的物品,並將識別的結果輸出到屏幕上。2.編程代碼截圖:代碼中依舊導入大家自己在百度開放平臺免費創建的AI庫3.結果測試視頻:測試一下,目前的程序可以根據任意圖片進行識別,並將識別圖片中的物品結果輸出到屏幕上,我們來看一下效果:編譯程序->
  • 夏日專刊AI產品上新升級集錦,50餘項軟硬能力加速場景落地
    重點概覽:乘風平臺發布,提供端到端一站式人臉通行考勤解決方案,滿足企業智能管理需求;智能招聘3大爆款功能(簡歷解析、人崗匹配、簡歷畫像)邀測進行中;此次接口公測上線,同步優化模型效果,教育場景下的識別準召率提升至85%+,可用於智能閱卷、拍照搜題等場景>>立即試用ai.baidu.com/tech/ocr/doc_analysis 儀器儀錶盤讀數識別全面公測
  • AI也有藝術創造力!B612咔嘰攜手百度大腦打造各式風格圖像
    百度大腦圖像技術「圖像效果增強」功能恰可針對這樣的需求,支持個人及企業快速、大量並高還原地進行圖片修復、上色、風格遷移等。這一刻的百度AI,不僅拉近了「藝術」與大眾的距離,更大大減少了它「被創作」的時間周期。
  • 產業網際網路契機:低代碼開發平臺與AI結合,快速落地智能應用
    其實,已經有服務商將AI集成到了低代碼或無代碼平臺中,比如應用AI解決與半結構化和非結構化數據源集成的複雜挑戰、將AI進一步封裝成可直接調用的業務組件。低代碼開發平臺與AI的結合,確實可以推動AI普及,讓更多用戶體驗到這一技術。
  • 【明星自動大變臉,嬉笑怒罵加變性】最新StarGAN對抗生成網絡實現多領域圖像變換(附代碼)
    通過從RaFD數據集學習轉移知識,從而應用到CelebA圖像轉化的多域的圖像到圖像轉化結果。第一列和第六列顯示輸入圖像,其餘列是產生的StarGAN圖像。注意,圖像是由一個單一模型網絡生成的,面部表情標籤如生氣、高興、恐懼是從RaFD學習的,而不是來自CelebA。給定來自兩個不同域的訓練數據,這些模型學習如何將圖像從一個域轉換到另一個域。
  • 十行代碼就能搞定深度學習?飛槳框架高層API,輕鬆玩轉AI
    相比傳統方法動輒幾十行的代碼量,高層 API 只需要十來行代碼,就能輕鬆完成一個 MNIST 分類器的實現。以極少的代碼就能達到與基礎 API 同樣的效果,大幅降低了深度學習的學習門檻。如果是初次學習深度學習框架,使用飛槳高層 API,可以「凡爾賽」說出「好煩哦,飛槳高層 API 怎麼這麼快就完成開發了,我還想多寫幾行代碼呢!」
  • CB Insights:2017全球AI企業100強(附下載) | 網際網路數據資訊網...
    BonsaiBonsai 是一個讓日常開發者可以搭建、訓練、使用智能模型的軟體開發平臺。不需要複雜的AI算法和技術,Bonsai 人工智慧引擎讓開發人員更高效地編碼,以更好地控制和優化硬體和軟體。15. Cape Analytics該公司使用人工智慧立即自動從地理空間圖像中提取恰當的屬性數據。這些數據可在全國範圍內獲得,並且很容易和保險公司和其他財產持有整合。
  • 圖像拉伸過度如何恢復?用這款手機軟體輕鬆完成!
    工具手機一部【老照片智能修復】拉伸過度待恢復的圖片步驟第一步我們可以使用【老照片智能修復】這款手機軟體恢復過度拉伸的圖片。第二步打開軟體,因為我們需要將圖片恢復拉伸前的狀態,所以選擇拉伸圖像恢復功能。第三步閱讀軟體功能的注意事項,在瀏覽後,點擊一鍵修復。第四步將需要恢復拉伸過度的圖片添加進軟體中。選擇從相冊中選擇,將需要恢復的圖片添加進軟體中。第五步思考是否需要對圖片進行裁剪,如果不需要的話,點擊下一步。第六步點擊開始處理。
  • 使用一行Python代碼從圖像讀取文本
    雖然圖像分類和涉及到一定程度計算機視覺的任務可能需要大量的代碼和紮實的理解,但是從格式良好的圖像中讀取文本在Python中卻是簡單的,並且可以應用於許多現實生活中的問題。在今天的帖子中,我想證明這一點。雖然會安裝一些庫,但不會花很多時間。
  • GitHub2萬星項目,手把手教你從入門到...
    輕量級PPT模板,即插即用快到飛起   這個GitHub的項目由一個叫做 dair.ai 的社區創建和維護,主要是提供了一些機器學習常用到的圖形元素。當你需要寫論文、做演講、可視化的時候,就可以拿來用。
  • 還用人工+機器修復經典老片?百度要用AI助力電影頻道智能升級
    )百度智能雲視頻雲總經理連林江詳細展示了百度智能雲的智感超清技術,其包含智能編碼、感官增強、超解析度、高清晰度四大特性。「智」是百度人工智慧算法,融合了一整套百度AI視覺的技術,包含40多項人工智慧編解碼算法;「感」是感官增強,是解決人臉主觀感知效果的增量能力,以達到更好的觀看體驗;「超」是超解析度,讓視頻質量從720P、1080P實現到4K、8K的畫質跳躍;「清」是視頻超高清升級的目標和目的。
  • 盤點國內排名前十強智能客服ai電銷機器人品牌商家
    智能客服ai電銷機器人的強大功能優勢讓很多企業都讚不絕口,那麼相必很多人都對智能ai電銷機器的排名榜也是非常感興趣的,在這裡就由我來和大家分享下國內排名前十強智能客服ai電銷機器人品牌商家,供大家參考!
  • 【明星自動大變臉】最新StarGAN對抗生成網絡實現多領域圖像變換(附代碼)
    圖像到圖像轉化的任務是將一個給定圖像的特定方面改變到另一個方面,例如,將一個人的面部表情從微笑到皺眉改變(見圖1)。自從生成對抗網絡(GANs)的引入,這個任務經歷了很大的發展,從改變發色,改變邊緣圖以重建照片,到改變風景圖像的季節等。圖1.
  • 用Keras搭建GAN:圖像去模糊中的應用(附代碼)
    這篇文章主要介紹在Keras中搭建GAN實現圖像去模糊。所有的Keras代碼可點擊這裡。可點擊查看原始出版文章和Pytorch實現。快速回憶生成對抗網絡GAN中兩個網絡的訓練相互競爭。我們先把圖像分到 A (模糊)和 B (清晰)兩個文件夾。這個 A&B 結構對應於原始文章pix2pix 。我創建了一個 自定義腳本來執行這個任務。 看看 README 後嘗試一下吧。模型訓練過程還是一樣,首先來看一下神經網絡結構。
  • DeblurGAN 消除運動模糊效果驚人 | 附論文+代碼
    這篇文章中,研究人員提出一種基於條件對抗式生成網絡和內容損失(content loss)的端對端學習法 DeblurGAN,去除圖像上因為物體運動而產生的模糊。效果嘛,可以說好到讓你不太相信自己的眼睛。
  • 零基礎入門深度學習(六):圖像分類任務之LeNet和AlexNet
    圖像分類在許多領域都有著廣泛的應用,如:安防領域的人臉識別和智能視頻分析等,交通領域的交通場景識別,網際網路領域基於內容的圖像檢索和相冊自動歸類,醫學領域的圖像識別等。1998年,Yan LeCun第一次將LeNet卷積神經網絡應用到圖像分類上,在手寫數字識別任務中取得了巨大成功。