超分辨率重建(SR) Python+OpenCV+EDSR模型

文章目录

  • 超分辨率重建(SR) Python+OpenCV+EDSR模型
    • 注意
    • 1、安装OpenCV contrib模块
    • 2、contrib中dnn_superres包的介绍
    • 3、下载训练的模型
    • 4、效果图
      • 测试1
      • 测试2
    • 5、代码
  • 总结

首先 1024节日快乐。

虽然我前面介绍了很多种模型,但是真的要自己实现超分辨率重建,还不是哪个模型网上资料多,实现简单就做哪个模型么…(嘴上很抗拒,身体很诚实)

相关链接:

  • 数字图像处理3 上 超清晰度重建概述
  • 数字图像处理3 中 EDSR模型详解

接下来,我将用EDSR模型,来实现超分辨率重建

注意

  • 在本次实验中,姑且先认为超清晰度重建和图像复原是两个概念。
  • 超清晰度重建是输入一张清晰小图,输出一张清晰大图。而图像复原不改变原有分辨率。
  • 虽然在深度学习角度,我认为二者没有很大的区别,但是要是要明确,我输出的是一张清晰的大图,分辨率会比原来大2~4倍(这个和具体参数相关)

1、安装OpenCV contrib模块

  • OpenCV中的超分辨率功能被集成在了contrib模块中,因此我们首先需要安装OpenCV的扩展模块。
  • 超分辨率被集成在dnn_superres模块中,如果小伙伴们电脑空间有限,可以只编译这一个模块。
  • 我看网上的教程,大多为了安装openCV的comtrib还安装了cmake等工具(这就是用c++的缺点吧…配置困难),但其实,对于python用户来说,只需要切换到cmd,输入以下指令即可:

pip install opencv-contrib-python

  • 本文不介绍c++版本contrib的安装了,试了挺久但是没有成功,编译时一直出现各种奇怪的问题,百度也百度不到。而python版就简单多了,直接PiP即可。人生苦短,我用Python!!!!!!!
  • 我们将使用contrib模块中的dnn_superres子模块进行具体的代码调用。

2、contrib中dnn_superres包的介绍

  • dnn_superres这个包,就是我们最终在代码中使用的包。
  • 但是在深度学习模型中,只有接口包还不够,还需要训练对应的模型(毕竟是深度学习嘛,肯定离不开模型的这个概念)
  • dnn_superres包中并不包含模型,我会在随后放出已经训练好的模型供下载。

dnn_superres包含四种基于深度学习的算法,用于放大图像,这些模型能让图像放大2~4倍。

  • EDSR:这个是表现最好的模型。但是这个模型也是最大的,所以运行速度会比较慢(具体在我的电脑上,平均15s能够将680 * 680的照片输出至原来的4倍)。
  • ESPCN:这个模型具有速度快,效果好的特点,并且模型较小。它可以进行对视频进行实时处理(取决于图像大小)。
  • FSRCNN:这也是具有快速准确推断功能的小型模型。也可以进行实时视频升频。
  • LapSRN:这是一个中等大小的模型,它的特点是最大可以将图像放大8倍。

3、下载训练的模型

在本次实验中我选取了EDSR模型进行实验,注意,模型是需要单独下载的!!它不在openCV的包里。

在这里我提供EDSR的下载地址:

链接:https://pan.baidu.com/s/1I5TmX6vJxqFtCUAG_y47Ig
提取码:k8ss
复制这段内容后打开百度网盘手机App,操作更方便哦

4、效果图

测试1


修复图↑

原图↑

我怎么觉得…不是很明显…算了,我们来看细节吧


上为修复图,下为原图。
感觉,效果,相当一般~明天再看看有没有改进的空间吧

测试2

这次的效果要比昨天测试的效果强了很多,究其原因,是因为昨天的那个woman图片是我直接截图获取的,本身清晰度就不高;而今天的这个pepper图片初始图片是按照图片格式保存在本地再导入工程的,本身就具有很多细节,所以在拉伸之后超清修复的效果就远远超过昨天的效果。(说白了,图的问题…)

在按照这个思路选取其他照片试试:

果然,有很明显的区别。

5、代码

import cv2
import numpy as np
from cv2 import dnn_superres
import time#为了计时而已# 创建SR对象...
sr = dnn_superres.DnnSuperResImpl_create()# 读图
input = cv2.imread('pic/woman1.jpg',1)
# 读取模型
sr.readModel("model/EDSR_x4.pb")
# 设定算法和放大比例
sr.setModel("edsr", 4)
# 将图片加载入模型处理,获得超清晰度图片
print("处理图片中...\n");
t0 = time.perf_counter()upScalePic = sr.upsample(input)
print("处理图片完成\n")
print(time.perf_counter() - t0)#将图片放大
scale = 4
justBigPic = cv2.resize(input, None, fx=scale, fy=scale, interpolation=cv2.INTER_LINEAR)# 输出
cv2.imwrite("pic/justBigPic.jpg", justBigPic)
cv2.imwrite("pic/upScalePic.jpg", upScalePic)
print("输出图片完成\n");

总结

  • 就工程实现来说,能用python就用python吧,自从用了python之后再也没出现过配环境三天,写代码十分钟的现象了。
  • opencv的这个拓展包不包含模型.pb文件,模型是需要单独下载的。
  • 有关于图像超清晰度重建,输入图片的清晰度越高越好,如果输入清晰度就不高,那么拉伸之后的重建效果也不会很好,类似于上图的woman图片。

【数字图像处理3】(下) 使用Python+OpenCV+EDSR模型,实现超分辨率重建(SR)相关推荐

  1. AI数字人:语音驱动面部模型及超分辨率重建Wav2Lip-HD

    1 Wav2Lip-HD项目介绍 数字人打造中语音驱动人脸和超分辨率重建两种必备的模型,它们被用于实现数字人的语音和图像方面的功能.通过Wav2Lip-HD项目可以快速使用这两种模型,完成高清数字人形 ...

  2. 【数字图像处理3 】(上)图像超分辨率重建(SR)概述

    图像超分辨率重建 一.前言(废话时间) 二.扫盲知识 什么是 超分辨率重建? 兴起原因 三.传统超分辨率重建 1.基于插值的超分辨率重建 2.基于退化模型的超分辨率重建 3.基于学习的超分辨率重建 四 ...

  3. 搭建数字图像处理开发环境(Python+pycharm+opencv)

    搭建数字图像处理开发环境(Python+pycharm+opencv) 安装python 安装pycharm 安装包 pycharm安装过程 安装opencv 注: 后续 安装python 可以在这里 ...

  4. 数字图像处理资料集锦(Python、C++、Matlab)

    一.Numpy的基础 python中numpy与matlab的对应关系 二. 基于skimage数字图像处理 python数字图像处理(1):环境安装与配置 python数字图像处理(2):图像的读取 ...

  5. idft重建图像 matlab_你赞成在医疗图像处理领域使用超分辨率重建技术吗?

    前几日读书看到一篇文章<基于超像素重建的多尺度B样条医学图像配准>,其中有这样一段话:"单张图像超分重建问题的解决可以被阐述成:输入低分影像,通过对一系列高低分影响对的学习,生成 ...

  6. python数字图像处理、色彩空间类型转换_Python+OpenCV图像处理—— 色彩空间转换...

    一.色彩空间的转换 代码如下: #色彩空间转换 import cv2 as cv def color_space_demo(img): gray = cv.cvtColor(img, cv.COLOR ...

  7. 【图像超分辨率重建】——EDSR论文精读笔记

    2017-Enhanced Deep Residual Networks for Single Image Super-Resolution(EDSR) 基本信息 作者: Bee Lim Sanghy ...

  8. pilt图像处理_详解python opencv、scikit-image和PIL图像处理库比较

    进行深度学习时,对图像进行预处理的过程是非常重要的,使用pytorch或者TensorFlow时需要对图像进行预处理以及展示来观看处理效果,因此对python中的图像处理框架进行图像的读取和基本变换的 ...

  9. 【图像处理基础知识(python+openCV)】——目标检测

    一.填充轮廓 #_*_ encoding=utf-8 _*_ import numpy as np import cv2img=cv2.imread('leilei.jpg') imggray=cv2 ...

最新文章

  1. 5分钟速通 AI 计算机视觉发展应用
  2. UNIX环境编程学习笔记(25)——信号处理进阶学习之 sigaction 函数
  3. java excel 字体大小_Java将数据按列写入Excel并设置格式(字体、背景色、自动列宽、对齐方式等)...
  4. 小米10预计春节后见 售价超3500元没悬念
  5. 游族网络董事长林奇收监管函 涉嫌违规减持
  6. 32位Linux系统时间截止,linux – 如果系统设置为2038年以后的日期,则ntpdate失败
  7. c语言流水灯循环左移程序,51单片机流水灯左移 右移控制程序
  8. (C语言课程设计)学生选修课程系统设计
  9. jsp登录并实现邮箱激活功能
  10. 逻辑斯谛回归(logistic regression)
  11. 任性安装苹果应用,安装包在手天下我有
  12. 男人,就要对自己下手狠一点
  13. 在冰山一角之下:情绪分析研究的当前挑战和新方向。
  14. allow_url_include和allow_url_fopen 详解
  15. 数据分析 - 单表简单查询
  16. python回归取残差_R/python-回归分析
  17. 软件智能的大致呈现---aaas系统预期
  18. C/C++ 中三块难啃的硬骨头
  19. 张勋说:棒磨机钢棒直径的配置(热处理调质耐磨钢棒)
  20. Tio实现检测客户端是否在线发送钉钉群消息

热门文章

  1. CCNA-CCP考试命令总结
  2. LayBox 3D场景的加载和对里面对象的控制
  3. Android基础篇-多线程下载(一)
  4. 清单文件合并失败问题 Manifest merger failed with multiple errors, see logs
  5. 时间复杂度(详解!!!)
  6. 谈广告很难?友链交换不好找?有神器
  7. 【校内测 10.7】【规律题】巡回的梦魇之神喜欢数列
  8. 【量子计算】量子隐形传态的实现
  9. 调用百度分享api,在微博分享的时候图片地址显示403问题
  10. 推荐10款GitHub中高价值的PHP项目(值得收藏)