1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        利用OpenCV實(shí)現(xiàn)基于深度學(xué)習(xí)的超分辨率處理

        共 3238字,需瀏覽 7分鐘

         ·

        2021-12-29 09:00



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

        重磅干貨,第一時間送達(dá)

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


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


        具體操作步驟


        1. 安裝OpenCV contrib模塊


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


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


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


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


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

        ESPCN:這個模型具有速度快,效果好的特點(diǎn),并且模型較小。它可以進(jìn)行對視頻進(jìn)行實(shí)時處理(取決于圖像大?。?/span>

        FSRCNN:這也是具有快速準(zhǔn)確推斷功能的小型模型。也可以進(jìn)行實(shí)時視頻升頻。

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

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

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

        我們首先給出C++完整程序,之后對程序中每一行代碼進(jìn)行介紹。完整程序如下:
        #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ù)進(jìn)行超分辨率放大。
        //UpscaleMat img_new;sr.upsample(img, img_new);cv::imwrite( "upscaled.png", img_new);

        上述是C++代碼,接下來給出Python實(shí)現(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代碼時,需要先通過如下代碼進(jìn)行聲明。
        # Create an SR objectsr = dnn_superres.DnnSuperResImpl_create()

        4.?處理結(jié)果

        輸入圖像

        雙線性插值放大3倍

        FSRCNN放大3倍

        ESDR放大3倍


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

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

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

        交流群


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


        瀏覽 54
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产成人精品AV在线观 | 多p混交群体交乱嗯啊 | 欧美精品黄片 | 金瓶双艳之3d潘金莲免费播放 | 国产精品久久久久久久久久久易记 | 美女把尿口扒开让男人爽视频 | 少妇久久久久久久 | 97操逼视频| 美女c逼视频 | 女s女m口舌vk |