<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實現(xiàn)基于深度學(xué)習(xí)的超分辨率處理

          共 3238字,需瀏覽 7分鐘

           ·

          2021-12-29 09:00



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

          重磅干貨,第一時間送達

          OpenCV是一個非常強大的計算機視覺處理的工具庫。很多小伙伴在入門圖像處理時都需要學(xué)習(xí)OpenCV的使用。但是隨著計算機視覺技術(shù)的發(fā)展,越來越多的算法涌現(xiàn)出來,人們逐漸覺得OpenCV比較落后而放棄了使用OpenCV。


          但是,實際上OpenCV時一個與時俱進的開源代碼庫。正在逐漸的吸收和接納最新的算法。本文我們來介紹如何使用OpenCV實現(xiàn)基于深度學(xué)習(xí)的圖像超分辨率(SR)。使用OpenCV的好處就是,我們不需要知道任何圖像超分辨率的相關(guān)知識,就可以使用這個代碼,并實現(xiàn)圖像超分辨率。


          具體操作步驟


          1. 安裝OpenCV contrib模塊


          OpenCV中的超分辨率功能被集成在了contrib模塊中,因此我們首先需要安裝OpenCV的擴展模塊。安裝過程可以參考【從零學(xué)習(xí)OpenCV 4】opencv_contrib擴展模塊的安裝。超分辨率被集成在dnn_superres模塊中,如果小伙伴們電腦空間有限,可以只編譯這一個模塊。


          近期有小伙伴反饋自己安裝擴展模塊失敗,為了解決這個問題,小白近期在籌劃搭建一個各個版本opencv-contrib編譯完成的數(shù)據(jù)庫。各位小伙伴隨時關(guān)注我們公眾號的動態(tài)。


          2. 下載訓(xùn)練的模型


          由于某些模型比較大,因此OpenCV代碼庫中沒有包含他們,因此我們在使用的時候需要單獨的下載經(jīng)過訓(xùn)練的模型。目前,僅支持4種不同的超分辨率模型,他們可以實現(xiàn)2倍、3倍、4倍甚至8倍的圖像方法。這些模型具體如下:


          EDSR:這個是表現(xiàn)最好的模型。但是這個模型也是最大的,所以運行速度會比較慢。

          ESPCN:這個模型具有速度快,效果好的特點,并且模型較小。它可以進行對視頻進行實時處理(取決于圖像大?。?。

          FSRCNN:這也是具有快速準確推斷功能的小型模型。也可以進行實時視頻升頻。

          LapSRN:這是一個中等大小的模型,它的特點是最大可以將圖像放大8倍。

          公眾號后臺回復(fù)“SR模型”獲取下載這四個模型的方式。

          3. 通過程序?qū)崿F(xiàn)超分辨率

          我們首先給出C++完整程序,之后對程序中每一行代碼進行介紹。完整程序如下:
          #include #include #include 
          using namespace std;using namespace cv;using namespace dnn;using namespace dnn_superres;
          int main(int argc, char *argv[]){ //Create the module's object DnnSuperResImpl sr;
          //Set the image you would like to upscale string img_path = "image.png"; Mat img = cv::imread(img_path);
          //Read the desired model string path = "FSRCNN_x2.pb"; sr.readModel(path);
          //Set the desired model and scale to get correct pre- and post-processing sr.setModel("fsrcnn", 2);
          //Upscale Mat img_new; sr.upsample(img, img_new); cv::imwrite( "upscaled.png", img_new);
          return 0;}

          首先加載我們選擇的模型,并將其輸入到神經(jīng)網(wǎng)絡(luò)的變量中。需要注意的是模型文件所存在的地址,本文放置在了程序的根目錄中。
          //Read the desired modelstring path = "FSRCNN_x2.pb";sr.readModel(path);

          之后設(shè)置模型的種類和放大系數(shù)。本文選擇的模型是fsrcnn,放大系數(shù)選擇的2。
          //Set?the?desired?model?and?scale?to?get?correct?pre-?and?post-processingsr.setModel("fsrcnn", 2);


          可以選擇的模型有“ edsr”,“ fsrcnn”,“ lapsrn”,“ espcn”,這幾個參數(shù)就是我們剛才介紹的4中模型。需要注意的是,每個模型能夠放大的倍數(shù)是不一致的。前三種模型能夠放大2、3、4倍,最后一個模型能夠放大2、3、4、8倍。

          之后通過upsample()函數(shù)進行超分辨率放大。
          //UpscaleMat img_new;sr.upsample(img, img_new);cv::imwrite( "upscaled.png", img_new);

          上述是C++代碼,接下來給出Python實現(xiàn)超分辨率的代碼
          import cv2from cv2 import dnn_superres
          # Create an SR objectsr = dnn_superres.DnnSuperResImpl_create()
          # Read imageimage = cv2.imread('./input.png')
          # Read the desired modelpath = "EDSR_x3.pb"sr.readModel(path)
          # Set the desired model and scale to get correct pre- and post-processingsr.setModel("edsr", 3)
          # Upscale the imageresult = sr.upsample(image)
          # Save the imagecv2.imwrite("./upscaled.png", result)

          不同于C++代碼,在使用python代碼時,需要先通過如下代碼進行聲明。
          # Create an SR objectsr = dnn_superres.DnnSuperResImpl_create()

          4.?處理結(jié)果

          輸入圖像

          雙線性插值放大3倍

          FSRCNN放大3倍

          ESDR放大3倍


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

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

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

          交流群


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


          瀏覽 54
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  做爱视频网站免费看 | 国产激情内射 | 天天日天天干天天舔 | 黄视频在线观看免费 | 日韩成人午夜 |