AI超分辨率
超分辨率技術(shù)指的是將低分辨率的圖像或視頻通過(guò)算法轉(zhuǎn)換成高分辨率的圖像或視頻的操作。
超分辨率可以分為兩種:?jiǎn)螆D像超分辨率(Single Image Super Resolution,SISR)和視頻超分辨率(Video Super Resolution,VSR)。
OpenCV中的超分辨率功能被集中在了contrib模塊中,因此我們首先需要安裝該模塊,可以使用以下代碼進(jìn)行安裝:
pip install opencv-contrib-python==4.4.0.44 -i https://pypi.tuna.tsinghua.edu.cn/simple/
如果原來(lái)就存在opencv-python庫(kù),再安裝opencv-contrib-python庫(kù),在運(yùn)行代碼時(shí)可能會(huì)導(dǎo)致錯(cuò)誤;解決辦法是先將所有的opencv庫(kù)卸載,然后安裝opencv-contrib-python庫(kù)。
OpenCV視覺(jué)庫(kù)目前僅支持四種不同的圖像超分辨率模型,它們可以實(shí)現(xiàn)2倍、3倍、4倍甚至8倍的圖像超分辨率。這些模型的具體描述如下:
- EDSR(CVPR2017):模型大小為~38.5MB,Batch Size=16訓(xùn)練了3天,優(yōu)點(diǎn)是精確度高,缺點(diǎn)是模型大、速度慢,提供x2、x3、x4訓(xùn)練模型。
- ESPCN(CVPR2016):模型大小為~100KB,Batch Size=32訓(xùn)練了大約100次迭代,優(yōu)點(diǎn)是體積小、速度快、性能依然很好,缺點(diǎn)是在視覺(jué)上的表現(xiàn)不如更新、更穩(wěn)健的模型,提供x2、x3、x4訓(xùn)練模型。
- FSRCNN(ECCV2016):模型大小為~40KB,Batch Size=1訓(xùn)練了大約30次迭代,優(yōu)點(diǎn)是快速、小巧、準(zhǔn)確,缺點(diǎn)是精度不夠高。
- LapSRN(CVPR2017):模型大小為1-5MB,Batch Size=32訓(xùn)練了大約50次迭代,優(yōu)點(diǎn)是模型一次順傳就可以做多尺度超分辨率,它現(xiàn)在可以支持2x、4x、8x以及[2x、4x]和[2x、4x、8x]超分辨率,缺點(diǎn)是速度比ESPCN和FSRCNN慢,精度比EDSR差,提供x2、x4、x8訓(xùn)練模型。
以上四個(gè)模型的下載地址為:https://github.com/opencv/opencv_contrib/tree/master/modules/dnn_superres文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-538640.html
實(shí)現(xiàn)代碼如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-538640.html
import cv2
from cv2 import dnn_superres
img = cv2.imread(r'F:/SuperResolution/test_image_720p.jpg') # 讀取720p的圖像
trained_model_path = r'F:/SuperResolution/TF-ESPCN/export/ESPCN_x2.pb' # 訓(xùn)練好的ESPCN_x2模型的存儲(chǔ)路徑
sr = dnn_superres.DnnSuperResImpl_create() # 實(shí)例化對(duì)象
sr.readModel(trained_model_path) # 讀取ESPCN_x2模型
sr.setModel('espcn', 2) # 設(shè)置超分圖像放大比例(與訓(xùn)練模型的超分倍數(shù)一致),放大圖像
result = sr.upsample(img) # 上采樣,超分
cv2.imwrite(r'F:/SuperResolution/result_image_2k.jpg', result) # 保存2k圖像
到了這里,關(guān)于使用OpenCV實(shí)現(xiàn)圖像超分辨率(Python)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!