python opencv 实现基于深度学习的超分辨率处理

s超分辨率(super-resolution)的通俗解释就是:将低分辨率的图像通过算法转换成高分辨率图像。
通常的超分辨率分两种:SISR和VSR。前者叫做单图像超分辨率,后者叫做视频超分辨率。我们通常理解的超分辨率都是指SISR,我们只需要输入一张低分辨率图像而获得高分辨率图像的输出。 而VSR会利用视频的时间关联性来获得对某一帧的SR。https://muzhan.blog.csdn.net/article/details/85048846

本文讲的是利用OpenCV实现前者,实现步骤和代码基于’小白学视觉’ https://cloud.tencent.com/developer/article/1635759

操作步骤

1、首先安装OpenCV contrib模块

OpenCV中的超分辨率功能被集成在了contrib模块中,因此我们首先需要安装OpenCV的扩展模块。原文提供的安装参考过于复杂,见opencv-contrib模块的安装

实际上只需要用pip安装opencv-contrib-python这个模块就可以,我这里用的是opencv-contrib-python ==4.4.0.44版本的,亲测没有问题。**注意:**如果你已经安装了opencv-python,你需要先卸载掉opencv-python。原因:opencv有4个不同的程序包(https://pypi.org/project/opencv-contrib-python/),我们最好只选择其中一个,不要在同一环境中安装多个不同的软件包,因为没有插件架构:所有软件包都使用相同的名称空间(cv2)。
所以我们选择安装OpenCV contrib模块,它包含了opencv的主要模块和扩展模块。卸载完之前安装的opencv包,然后用pip安装,pip install opencv-contrib-python。

2、下载训练的模型

opencv代码库目前仅支持4种不同的超分辨率模型,他们可以实现2倍、3倍、4倍甚至8倍的图像方法。这些模型具体如下

EDSR:这个是表现最好的模型。但是这个模型也是最大的,所以运行速度会比较慢。

ESPCN:这个模型具有速度快,效果好的特点,并且模型较小。它可以进行对视频进行实时处理(取决于图像大小)。

FSRCNN:这也是具有快速准确推断功能的小型模型。也可以进行实时视频升频。

LapSRN:这是一个中等大小的模型,它的特点是最大可以将图像放大8倍。
模型下载地址:https://github.com/opencv/opencv_contrib/tree/master/modules/dnn_superres
在这里插入图片描述
3、代码实现

import cv2
from cv2 import dnn_superres

Create an SR object

sr = dnn_superres.DnnSuperResImpl_create()

Read image

image = cv2.imread(‘D:/res/test.png’)

Read the desired model

path = ‘D:/res/EDSR_x4.pb’
sr.readModel(path)

Set the desired model and scale to get correct pre- and post-processing

sr.setModel(‘edsr’, 4)

Upscale the image

result = sr.upsample(image)

Save the image

cv2.imwrite(‘D:/res/upscaled.png’, result)

再次提醒,确认只安装了opencv-contrib包,没有安装其他opencv包,不然你导入dnn_superres时会出错。

4、结果

结果就不展示了,网上随便找了个图试了下,效果和我想像的有差距,不是我要的那种效果。做了个总结,把试过的坑和实现过程写了下,大家可以自己去试试,也许是你们需要的呢。如果有自己的研究目的和数据的,可以去查看源码,构建自己的模型,EDSR、WDSR、UDSR分别为17、18、19的 NTIRE超分辨率冠军。
EDSR:
github(pytorch): https://github.com/thstkdgus35/EDSR-PyTorch
WDSR:
github(pytorch):https://github.com/JiahuiYu/wdsr_ntire2018

  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值