Closed wangwangran closed 6 years ago
Hi, @wangwangran
The code im_l = imresize(im_gt,1/up_scale,'bicubic')
in test/Demo_SR_Conv.m
Line42 -Line58 is necessary and can not be blocked.
Through it obtains the original low-resolution image scaling block, which is necessary in the next super-resolution steps.
不好意思,我现在对这里还不是太懂,你能帮我讲解一下吗?我对这一段的的理解是:将高分辨率图像缩小做成低分辨率图像,然后将该低分辨率图像放入网络,VDSR_Matconvnet(im_l_y,model,up_scale,use_cascade)中的up_scale是期望将低分辨率图像放大的倍数。我想我这一步是不是理解错了。 十分感谢您的帮助。
如果按照以上的步骤我就只能获得与原始图像同样大的重建图像,并且低分辨率图像必须是由相应的高分辨率图像生成的。但是我期望输入一个没有对应高分辨率图像的LR小图像,输出得到一个放大的图像。你能帮我解释一下吗?感激不尽。
SRCNN方法对于一个低分辨率图像,先使用双三次(bicubic)插值将其放大到目标大小,再通过三层卷积网络做非线性映射,得到的结果作为高分辨率图像输出。作者将三层卷积的结构解释成与传统SR方法对应的三个步骤:图像块的提取和特征表示,特征非线性映射和最终的重建。
深度学习在图像超分辨率重建中的应用 - taigw的文章 - 知乎 https://zhuanlan.zhihu.com/p/25532538
类似的代码:
感谢回复。
我明白需要将输入低分辨率图片采取放大操作,该操作在VDSR_Matconvnet()中进行操作如下: for iter = 1:iter_all fprintf('iter:%d\n',iter); %对低分辨率图像双插值 im_y = single(imresize(im_l_y,model_scale,'bicubic')); convfea = vl_nnconv(im_y,weight{1}(:,:,1,:),bias{1},'Pad',1);
%可视化第一个卷积层 64个卷积核与低分辨率的卷积结果
我不明白的是:为什么在demo中用im_gt缩小图片制作的低分辨率图片可以通过网络, im_l = imresize(im_gt,1/up_scale,'bicubic'); im_gt = double(im_gt); im_l = double(im_l) / 255.0;
而我直接输入一个比较小低分辨率图片im_l就会报错。报的错误为: 错误:GPUArray/imresize
非常感激您的解惑
@wangwangran
注意观察你输入图像和demo
测试图像的不同,在matlab中加断点,追踪错误原因
Hi, I found that when I remove these words "im_l = imresize(im_gt,1/up_scale,'bicubic');" to test my LR image ,it goes wrong,how to deal with it ?Hoping for your reply,thank you first.