<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          利用OpenCV實現圖像修復(含源碼鏈接)

          共 2621字,需瀏覽 6分鐘

           ·

          2021-10-02 20:22

          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

          前一段時間小白分享過關于圖像修復技術介紹的推文(點擊可以跳轉,有小伙伴后臺咨詢能不能分享一下關于圖像修復的項目或者程序。今天小白帶著滿滿的誠意,帶來了通過OpenCV實現圖像修復的C++代碼與Python代碼。

          ?

          圖像修復技術應用在什么地方呢?

          ?

          想想一下,我們有一張非常棒的相片,但是由于時間比較久遠,沒有電子版留底,而紙質版的又十分不便于保存。因此長采用掃描的方式獲得電子版。但是非常不幸,掃描過程中落入了一根頭發(fā),或者是機器出現故障,對相片造成了影響,這個時候就可以通過圖像修復技術解決這個問題。

          ?

          強大的OpenCV庫里集成了兩種用與圖像修復的方法

          ?

          INPAINT_NS: 基于Navier-Stokes的圖像修復

          該方法在2001年提出,其神奇之處竟然是基于流體力學理論提出的方法。根據其作者提出,我們需要解決的問題可以抽象成在一個鞋子圖片上有一個黑色的區(qū)域,通過填充黑色區(qū)域,使得最佳的恢復鞋子的樣子。

          對于如何填補這個黑色區(qū)域,可以抽象成存在一條曲線,使得由A到B將黑色區(qū)域分開,并且保證在曲線的一側是藍色,另一側是白色。這個曲線應具有如下的約束:

          1. 保持邊緣特征

          2. 在平滑區(qū)域中保持顏色信息


          通過構建一個偏微分方程來更新具有上訴約束的區(qū)域內的圖像強度,同時利用拉普拉斯算子估計圖像平滑度信息,并沿著等照度傳播。

          ?

          由于這些方程與Navier-Stokes方程(流體力學中的方程,感興趣的小伙伴可以自行百度)相關且類似,因此可以通過流體力學中的方法進行求解。


          由于小白對流體力學不是很了解,具體就不詳細解釋了,感興趣的小伙伴可以閱讀該論文了解詳情。

          論文地址:http://www.math.ucla.edu/~bertozzi/papers/cvpr01.pdf

          ?

          INPAINT_TELEA:基于快速行進方法的圖像修復

          該方法中沒有使用拉普拉斯算子作為平滑度的估計,而是使用像素的已知圖像鄰域上的加權平均值來描述。同時利用鄰域像素和梯度恢復填充區(qū)域像素的顏色。

          當像素被修復之后,通過快速行進方法更新邊界。


          論文地址:

          https://pdfs.semanticscholar.org/622d/5f432e515da69f8f220fb92b17c8426d0427.pdf

          ?

          相關API介紹

          C++:

          void inpaint(
          ????Mat&src,
          ????Mat& inpaintMask,
          ????Mat& dst,
          ????double inpaintRadius,
          ????int flags)


          Python:

          dst =cv2.inpaint(
          ????src,
          ????inpaintMask,
          ????inpaintRadius,
          ????flags)

          ?

          其中各參數的含義如下:

          src?=源圖像

          inpaintMask?=二進制掩碼,指示要修復的像素。

          DST?=目標圖像

          inpaintRadius?=像素周圍的鄰域補繪。通常,如果要修復的區(qū)域很薄,使用較小的值會產生較少的模糊。

          flags:INPAINT_NS(基于Navier-Stokes的方法)或INPAINT_TELEA(基于快速行進的方法)

          ?

          示例

          左邊的第一個圖像是輸入圖像,第二個圖像是掩模,第三個圖像是INPAINT_TELEA的結果,最終結果是INPAINT_NS

          ?

          關于這個圖片有一個小小的故事,1865年2月5日星期日,在華盛頓特區(qū)的加德納畫廊,亞歷山大·加德納拍攝了幾張總統(tǒng)的多鏡頭照片。在本屆會議結束之前,加德納請求為總統(tǒng)拍攝最后一個姿勢。他把相機拉得更近,拍了一張林肯頭部、肩膀和胸部的照片。但是玻璃板在這個時候突然破裂,對拍攝圖像產生影響。加德納小心翼翼地將它帶到了他的黑暗房間,制作一張相片,發(fā)現在林肯的臉上有一個不祥的裂縫。這張相片,即O-118,至今仍然存在。多年來,許多人認為這一裂縫是10周后林肯中彈的預言。

          ?

          讓我們看一個更復雜的例子,在圖片上寫上英文單詞,之后通過opencv函數去修復該單詞。

          左:帶有Scribbles的原始圖像。中:使用快速行進方法修復,右:使用Navier-Stokes方法修復。

          ?

          該程序的源碼和使用的圖片鏈接為:

          https://github.com/spmallick/learnopencv/tree/master/Image-Inpainting


          好消息,小白學視覺團隊的知識星球開通啦,為了感謝大家的支持與厚愛,團隊決定將價值149元的知識星球現時免費加入。各位小伙伴們要抓住機會哦!


          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學視覺」公眾號后臺回復:擴展模塊中文教程即可下載全網第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數、添加眼線、車牌識別、字符識別、情緒檢測、文本內容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現20個實戰(zhàn)項目,實現OpenCV學習進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 124
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  伊人网影院 | 大鸡吧操逼逼 | 五月婷婷在线观看 | 亚洲日本在线观看 | 无码日韩人妻精品久久蜜桃 |