[OpenCV][Python]使用Dnn_superres提高圖片的解析度,模糊變高清

[OpenCV][Python]使用Dnn_superres提高圖片的解析度,模糊變高清

更新於 發佈於 閱讀時間約 4 分鐘

現在有一推AI網站提供模糊圖片變高清的工具,Google關鍵字一下就一推了,例如MyEditArtguru等等。

Python的OpenCV有提供一個DnnSuperResImpl Class Reference,也可以做到這件事,就讓我們繼續往下看吧。


OpenCV DnnSuperResImpl提供的四個模型可載入使用:

  • edsr
  • espcn
  • fsrcnn
  • lapsrn

其中EDSR是精度最高的,但速度最久檔案最大,我們就利用這個模型來測試一下。

EDSR訓練數據:

  • 數據集:收集大量的高解析度(High-Resolution, HR)圖像作為訓練數據集,並通過下採樣方法(如雙線性插值)生成相應的低分辨率(Low-Resolution, LR)圖像。
  • 配對:每張 HR 圖像與其對應的 LR 圖像形成一對訓練樣本,LR 圖像作為模型的輸入,HR 圖像作為目標輸出。

在由SRRe sNet訓練好的模型,可以用來讓低解析度的圖像縮放成高解析度的圖像。


EDSR(Enhanced Deep Residual Networks for Single Image Super-Resolution)是一種基於深度學習的超分辨率(super-resolution)方法。它由 Bee Lim 等人在 2017 年提出,目的在提高圖像的解析度品質


EDSR結果圖

從111*148大小,已2的倍數不斷放大

raw-image

雙三次插值結果圖

使用cv2.resize一樣2倍的放大,做個比較

raw-image

EDSR與雙三次插值比較圖

EDSR縮放的效果明顯看起來比雙三次插值還來的自然一點。

raw-image

安裝套件

OpenCV 要4.3.0以上
install opencv-contrib-python

測試的套件版本

opencv-contrib-python-headless    4.10.0.84
opencv-python 4.7.0.72
opencv-python-headless 4.10.0.84

程式範例

EDSR Model下載

import cv2
from cv2 import dnn_superres

# 初始化DnnSuperResImpl_create
sr = dnn_superres.DnnSuperResImpl_create()

# 讀取圖片
img = cv2.imread('路徑')

# 讀取預訓練的模型,這裡使用 EDSR_x2模型放大2
sr.readModel("EDSR_x2.pb")

# 設置模型類型和放大倍率
sr.setModel("edsr", 2)

# 放大圖像
img = sr.upsample(img)
# 保存放大的影像
cv2.imwrite('路徑', img)

參考文獻




avatar-img
螃蟹_crab的沙龍
137會員
244內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言
avatar-img
留言分享你的想法!
螃蟹_crab的沙龍 的其他內容
在影像處理或機器學習的應用中,我們常常需要將影片逐幀擷取出來,進一步進行辨識或分析。 本篇教學將示範如何使用 Python + OpenCV 來: ✅ 讀取 MP4 影片 測試影片可由下方超連結下載,從file-examples.com下載 file-examples.com 是一個 免費提
本文將指導你如何修改現有的 OpenCV 程式碼,使其利用 CUDA 加速進行深度神經網絡(DNN)推理,如超分辨率圖像放大任務。這將顯著提升運行速度,特別是在高分辨率圖像處理中。 在CMake上這選項要開,才可支援DNN模組。 CMake編譯OpenCV教學文 連結 [OpenCV][Py
OpenCV 提供了專門針對 CUDA 優化的模組,這些模組使用 cv2.cuda 命名空間,並且可以直接使用 GPU 進行加速。,cv2.cuda 模塊需要在 OpenCV 編譯時啟用 CUDA 支援才能使用。 本文主要比較經過CMAKE重新編譯OpenCV使其支援Cuda,原OpenCV只支援
在影像處理或機器學習的應用中,我們常常需要將影片逐幀擷取出來,進一步進行辨識或分析。 本篇教學將示範如何使用 Python + OpenCV 來: ✅ 讀取 MP4 影片 測試影片可由下方超連結下載,從file-examples.com下載 file-examples.com 是一個 免費提
本文將指導你如何修改現有的 OpenCV 程式碼,使其利用 CUDA 加速進行深度神經網絡(DNN)推理,如超分辨率圖像放大任務。這將顯著提升運行速度,特別是在高分辨率圖像處理中。 在CMake上這選項要開,才可支援DNN模組。 CMake編譯OpenCV教學文 連結 [OpenCV][Py
OpenCV 提供了專門針對 CUDA 優化的模組,這些模組使用 cv2.cuda 命名空間,並且可以直接使用 GPU 進行加速。,cv2.cuda 模塊需要在 OpenCV 編譯時啟用 CUDA 支援才能使用。 本文主要比較經過CMAKE重新編譯OpenCV使其支援Cuda,原OpenCV只支援