超分辨数据集:Set5 Set14 BSD100 Urban100 Manga109

DIV2K数据集官网上很好找到,但是网上流传的Set5 14 BSD100,Urban100 Manga109都是私人进行处理过的版本,各个处理方式都不同,为了统一方式写了这篇文章。

官方的DIV2K x2、x3、x4的LR图片使用下面matlab代码生成(已经经过测试最后输出为0,就是差异为0)文末给出下载地址

DIV2K_hr = '0002.png';
savepath = 'tmp.png';
DIV2K_lr = '0002_x2.png';scale = 2;
hr_img = imread(DIV2K_hr);
%hr_img = im2double(hr_img);
lr_img = imread(DIV2K_lr);crop_img = modcrop(hr_img ,scale);
crop_lr_img = imresize(crop_img ,1/scale,'bicubic');
imwrite(crop_lr_img,savepath);
crop_lr_img = imread(savepath)
disp(max(crop_lr_img(:)-lr_img(:)))

但是x8的LR图片使用下面代码生成

DIV2K_hr = '0002.png';
savepath = 'tmp.png';
DIV2K_lr = '0002_x2.png';scale = 2;
hr_img = imread(DIV2K_hr);
hr_img = im2double(hr_img);
lr_img = imread(DIV2K_lr);crop_img = modcrop(hr_img ,scale);
crop_lr_img = imresize(crop_img ,1/scale,'bicubic');
imwrite(crop_lr_img,savepath);
crop_lr_img = imread(savepath)
disp(max(crop_lr_img(:)-lr_img(:)))

但是经过测试发现网上流传的很多Set5 14 BSD100,Urban100 Manga109并不是经过上面matlab生成的。也就是说你网络训练输入是matlab的LR,但是测试的时候输入的并不是matlab生成的LR。

为了统一,生成了一套和训练集相匹配格式的测试集。matlab代码使用如下(代码参考SRCNN):

运行代码前的数据目录格式:
  •  Set5
    • HR
      • 这里存放高清图片
  • Set14
    • HR
      • 这里存放高清图片
  •  Urban100
    • HR
      • 这里存放高清图片
  • Managa109
    • HR
      • 这里存放高清图片
  • BSD100
    • image_SRF_3
      • HR
        • 这里存放高清图片(由于x2 x4都是从x3的HR裁剪而来的,懒得更改源数据集格式)

最后生成目录:

  • 公共代码
%创建modcrop.m文件放入代码
function imgs = modcrop(imgs, modulo)if size(imgs,3)==1sz = size(imgs);sz = sz - mod(sz, modulo);imgs = imgs(1:sz(1), 1:sz(2));elsetmpsz = size(imgs);sz = tmpsz(1:2);sz = sz - mod(sz, modulo);imgs = imgs(1:sz(1), 1:sz(2),:);end
end
  • Set5,Set14,Urban100,Manga109 对应x2、x3、x4、x8代码
%主文件main.m
%适用Set5,Set14,Urban100,Manga109,更改对应路径就行了input_folder = '/MATLAB Drive/train/data/Urban100/HR';
save_mod_folder = '/MATLAB Drive/train/data/Urban100/image_SRF_';
filepaths = dir(fullfile(input_folder,'*.*'));for i=2:4lr_path = [save_mod_folder,num2str(i),'/LR'];hr_path = [save_mod_folder,num2str(i),'/HR'];check(lr_path)check(hr_path)for j = 1 : length(filepaths)[paths, img_name, ext] = fileparts(filepaths(j).name);if ext == '.png'img_hr = imread(fullfile(input_folder, [img_name, ext]));%img_hr = im2double(img_hr);crop_hr = modcrop(img_hr,i);imwrite(crop_hr,fullfile(hr_path, [img_name, ext]));img_lr = imresize(crop_hr,1/i,'bicubic');imwrite(img_lr,fullfile(lr_path, [img_name, ext]));endend
endfor i=8:8lr_path = [save_mod_folder,num2str(i),'/LR'];hr_path = [save_mod_folder,num2str(i),'/HR'];check(lr_path)check(hr_path)for j = 1 : length(filepaths)[paths, img_name, ext] = fileparts(filepaths(j).name);if ext == '.png'img_hr = imread(fullfile(input_folder, [img_name, ext]));img_hr = im2double(img_hr);crop_hr = modcrop(img_hr,i);imwrite(crop_hr,fullfile(hr_path, [img_name, ext]));img_lr = imresize(crop_hr,1/i,'bicubic');imwrite(img_lr,fullfile(lr_path, [img_name, ext]));endend
endfunction check(path)if exist(path, 'dir')disp(['It will cover ', path]);elsemkdir(path);end
end
  • 由于BSD使用x3的HR作为x2和x4、x8的裁剪之前的图片所以更改main.m中的代码
% BSD100 Function:
save_folder = '/MATLAB Drive/train/data/BSD100/image_SRF_';
for i=2:4input_folder = '/MATLAB Drive/train/data/BSD100/image_SRF_3/HR';hr_path = [save_folder,num2str(i),'/HR'];lr_path = [save_folder,num2str(i),'/LR'];filepaths = dir(fullfile(input_folder,'*.*'));check(lr_path);check(hr_path);for j = 1 : length(filepaths)[paths, img_name, ext] = fileparts(filepaths(j).name);if ext == '.png'img_hr = imread(fullfile(input_folder, [img_name, ext]));%img_hr = im2double(img_hr);crop_hr = modcrop(img_hr,i);imwrite(crop_hr,fullfile(hr_path, [img_name, ext]));img_lr = imresize(crop_hr,1/i,'bicubic');imwrite(img_lr,fullfile(lr_path, [img_name, ext]));endend
endfor i=8:8input_folder = '/MATLAB Drive/train/data/BSD100/image_SRF_3/HR';hr_path = [save_folder,num2str(i),'/HR'];lr_path = [save_folder,num2str(i),'/LR'];filepaths = dir(fullfile(input_folder,'*.*'));check(lr_path);check(hr_path);for j = 1 : length(filepaths)[paths, img_name, ext] = fileparts(filepaths(j).name);if ext == '.png'img_hr = imread(fullfile(input_folder, [img_name, ext]));img_hr = im2double(img_hr);crop_hr = modcrop(img_hr,i);imwrite(crop_hr,fullfile(hr_path, [img_name, ext]));img_lr = imresize(crop_hr,1/i,'bicubic');imwrite(img_lr,fullfile(lr_path, [img_name, ext]));endend
endfunction check(path)if exist(path, 'dir')disp(['It will cover ', path]);elsemkdir(path);end
end
下载链接

链接:https://pan.baidu.com/s/1qeftNHrWSjLxfhJCjfqNyw?pwd=9ag4 
https://drive.google.com/file/d/1Wk_OXbfFkNuWxIz23Ji56Ju4knH4DeFm/view?usp=drive_link

阿里云盘不支持压缩文件分享,而且一次最多分享200个文件,吐了,国产软件各有利弊吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/238351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机设计的指纹锁(读取、录入、验证指纹)

一、前言 指纹识别技术是一种常见的生物识别技术,利用每个人指纹的唯一性进行身份认证。相比于传统的密码锁或者钥匙锁,指纹锁具有更高的安全性和便利性,以及防止钥匙丢失或密码泄露的优势。 基于单片机设计的指纹锁项目是利用STC89C52作为…

ARM GIC(三) gicv2架构

ARM的cpu,特别是cortex-A系列的CPU,目前都是多core的cpu,因此对于多core的cpu的中断管理,就不能像单core那样简单去管理,由此arm定义了GICv2架构,来支持多核cpu的中断管理 一、gicv2架构 GICv2,支持最大8个core。其框图如下图所示: 在gicv2中,gic由两个大模块组成: …

华为OD机试真题-园区参观路径-2023年OD统一考试(C卷)

题目描述:园区某部门举办了Family Day,邀请员工及其家属参加;将公司园区视为一个矩形,起始园区设置在左上角,终点园区设置在右下角;家属参观园区时,只能向右和向下园区前进;求从起始园区到终点园区会有多少条不同的参观路径; 输入描述:第一行为园区长和宽;后面每一行…

集群与分布式的概念及区别

目前在工作中经常接触到集群的概念,通过这篇文章总结一下集群的几种方式以及和分布式对比学习 1.集群(Cluster) 集群是由多个计算机节点组成的网络,旨在共同提供服务,并确保高性能和高可用性。在高可用集群中&#xf…

达梦的SQL脚本转成Oracle的SQL脚本需要注意什么?

达梦数据库SQL脚本转Oracle的SQL脚本: 字段类型 BIT---->NUMBER(1) 字段类型 BIGINT---->NUMBER(19) 字段类型 DATETIME---->TIMESTAMP 字段类型 VARCHAR(4000)---->CLOB Oracle添加字段不需要column关键字,ALTER TABLE FDW_LOG ADD COL…

Spring之事务(2)

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

conda环境下执行conda命令提示无法识别解决方案

1 问题描述 win10环境命令行执行conda命令,报命令无法识别,错误信息如下: PS D:\code\cv> conda activate pt conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径&a…

Redis原理之网络通信协议笔记

目录 1. RESP协议 ​2. 自定义Socket连接Redis 1. RESP协议 2. 自定义Socket连接Redis public class MyRedisClient {static Socket s;static PrintWriter writer;static BufferedReader reader;static Object obj;public static void main(String[] args) {try {// 1.建立连…

Redis(非关系型数据库)

Redis(非关系型数据库) 文章目录 Redis(非关系型数据库)认识Redis(Remote Dictionary Server)1.Redis的基本介绍2.Redis的应用场景2.1 取最新N个数据的操作2.2 排行榜应用,取TOP N操作2.3 需要精准设定过期时间的应用2.4 计数器应用2.5 Uniq 操作,获取某段时间所有数…

threejs中变换相关的知识点总结

一, 前言 在threejs的使用过程中经常会遇到需要移动旋转缩放之类的变换的情况,而可以实现这一目的的方法也有很多,如: translate,scale,rotateX,applyMatrix4,position.set,rotateOnWorldAxis… 等等, 很多方法可供选择。有的是作用在geometry上的, 有的是作用在me…

回归分析笔记

回归分析 回归分析: 寻找两个或多个变量之间的函数关系(相关关系) 一元和线性 y β 0 β 1 x ε \begin{aligned} y&\beta_0\beta_1x\varepsilon\\ \end{aligned} y​β0​β1​xε​ 误差项 ε \varepsilon ε是一个期望值为0的随机变量,即 E ( ε ) 0 …

mysql 23-2day 数据库查询(DQL)

目录 数据库查询(DQL)环境:准备一个表格作为查询环境查看数据根据要求查看数据运算查询as 可以修改字段名字 进行查询查询所有部门拼接两个字段查询 2017年入职的员工一个是空null 一个是空白查询 NULL集合排序查询查看有那些组通配符正则查询函数 数据库查询(DQL) …

如何搭建Web自动化测试框架?

在程序员的世界中,一切重复性的工作,都应该通过程序自动执行。「自动化测试」就是一个最好的例子。 随着互联网应用开发周期越来越短,迭代速度越来越快,只会点点点,不懂开发的手工测试,已经无法满足如今的…

Java---泛型讲解

文章目录 1. 泛型类2. 泛型方法3. 泛型接口4. 类型通配符5. 可变参数6. 可变参数的使用 1. 泛型类 1. 格式&#xff1a;修饰符 class 类名 <类型>{ }。例如&#xff1a;public class Generic <T>{ }。 2. 代码块举例&#xff1a; public class Generic <T>{…

R语言生物群落(生态)数据统计分析与绘图实践技术

R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂&#xff0c;涉及众多统计分析方法。本内容以生物群落数据分析中的最常用的统计方法回归和混合效应模型、多元统计分析技术及结构方程等数量分析方法为主线&#xff0c;通过多个来…

使用arthas排查请求超时问题

现象 客户端调用服务时间出现偶尔超时现象 排查 因为服务已开启arthas&#xff0c;使用trace命令监控 $ trace com.lizz slowfun #cost > 1000 -n 10 监控com.lizz类中的slowfun方法&#xff0c;输出用时超过1000ms的记录&#xff0c;记录10条 Press CtrlC to abort. Aff…

除了增删改查,后端一定要学会这些!

刚工作 3、5 年的 Java 程序猿们&#xff0c;在日常工作中开始得心应手&#xff0c;基本上没有什么问题能难倒我们。 这个时候&#xff0c;我们很容易陷入迷茫当中&#xff0c;不知道怎么继续提升自己&#xff1f;怎么才能进阶资深、专家、总监。 知乎上更是有这么一个问题&a…

防火墙双机热备(HCIA)

目录 一、冗余分类 1、双机热备的产生 2、热备和冷备 二、VRRP VRRP注意事项 VRRP通告报文 三、VGMP 两种VGMP组 VGMP优先级 四、HRP 五、双机热备基本组网与配置 配置步骤 一、冗余分类 物理冗余&#xff1a;单设备改多设备&#xff0c;多线路连接。 网络冗余&a…

ssm420基于JavaEE的企业人事管理信息系统的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本企业人事管理信息系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据…

opencv的ChessboardCorner检测算法

1 findChessboardCorners 功能如下 The function attempts to determine whether the input image is a view of the chessboard pattern and locate the internal chessboard corners. The function returns a non-zero value if all of the corners are found and they are …