标题&作者团队 本文是延世大学在图像超分方面的颠覆性之作,它首次提出采用LUT进行图像超分,尽管该方法的性能仅比传统插值方法稍好,甚至不如FSRCNN性能高。但是,该方案最大的优势在于推理速度快,比双三次插值还要快。SR-LUT斜眼看到插值方案以及深度学习方案,轻轻的说了句:“论速度,还有谁!” Abstract 从上古时代的“插值方法”到中世纪的“自相似性方案”,再到 前朝时代的“稀疏方案”,最后到当前主流的“深度学习方案”,图像超分领域诞生了数以千计的方案,他们均期望对低分辨率图像遗失的纹理细节进行
标题&作者团队 本文是延世大学在图像超分方面的颠覆性之作,它首次提出采用LUT进行图像超分,尽管该方法的性能仅比传统插值方法稍好,甚至不如FSRCNN性能高。但是,该方案最大的优势在于推理速度快,比双三次插值还要快。SR-LUT斜眼看到插值方案以及深度学习方案,轻轻的说了句:“论速度,还有谁!” Abstract 从上古时代的“插值方法”到中世纪的“自相似性方案”,再到 前朝时代的“稀疏方案”,最后到当前主流的“深度学习方案”,图像超分领域诞生了数以千计的方案,他们均期望对低分辨率图像遗失的纹理细节进行
—— Set5,Set14,B100,Urban100 L2 PSNR,SSIM MemNet--2017(基于DenseNet) 预上采样(双三次插值) 291-images Bicubic 翻转、 旋转 Set5,Set14,BSD100,Urban100 L2 PSNR,SSIM SRGAN--2017(基于GAN) 后上采样(亚像素卷积) ImageNet Bicubic —— Set5,Set14 —— Set5,Set14,BSDS100,Urban100,Manga109 L2 PSNR,SSIM MSRN--2018(基于ResNet) 后上采样(亚像素卷积) DIV2K Bicubic 缩放、旋转、翻转 Set5,Set14,B100,Urban100,Manga109 L1 PSNR,SSIM RCAN--2018(基于AM) 后上采样(亚像素卷积) DIV2K ①Bicubic ② ②下采样+GB ③Bicubic+GN 翻转、旋转 Set5,Set14,B100,Urban100,Manga109 L1 PSNR,SSIM Meta-SR--2019(基于DenseNet) 后上采样
一、研究背景与动机 传统插值(nearest-neighbor、bilinear、bicubic)基于“点像素”模型,把像素当成无面积的点,易产生锯齿、模糊或振铃。 -C3 为原始图像中最多4个相关像素的值 A0 -A3 为滤波窗口与各原始像素的重叠面积 同一公式适用于放大和缩小 2.3 边缘保持机制 • 面积模型天然具有低通滤波特性,但又不像 bicubic 与 bilinear 相比,Winscale 边缘更锐利,阶梯和模糊现象明显降低; 与 bicubic 相比,无振铃,但极细纹理略逊于 bicubic。 3.2 客观指标(文献汇总) • RMSE/PSNR:平均优于 bilinear 0.5–1.2 dB;比 bicubic 低 0.2–0.4 dB。 四、优点与局限性 优点 算法简单,适合低门数、低功耗场景; 边缘保持优于 bilinear,无 bicubic 振铃; 支持 up/down 任意比例,比例实时可变; 结论 Winscale 以“面积像素
本文了一个实时&轻量图像超分方案Bicubic++,它通过下采样模块降低图像分辨率以减少计算量,在网络尾部采用X6上采样进行图像重建,同时还构建了一个三阶段训练方案。 此外,Bicubic++取得了NTRIE2023-RTSR-Track2 X3超分竞赛冠军,也是所有方案中最快的,所提方案与其他轻量化方案的性能对比可参考下图。 值得称道的就是,Bicubic++具有与Bicubic相当快的处理速度,故很有机会成为新的工业标准。 评价标准 由于Bicubic++是面向NTIRE2023-RTSR竞赛而设计,在正式介绍方案之前,我们先介绍了一下该竞赛的评价标准。 很明显,Bicubic++以显著优势超过了第二名方案。
ee.Image.constant(0.009); var cons4=ee.Image.constant(0.0163); var l_rn=gldas.select('Lwnet_tavg').resample('bicubic '); var s_rn=gldas.select('Swnet_tavg').resample('bicubic'); var max_ta=era5.select('maximum_2m_air_temperature ').subtract(ee.Image.constant(273.15)).resample('bicubic'); var min_ta=era5.select('minimum_2m_air_temperature ').subtract(ee.Image.constant(273.15)).resample('bicubic'); var mean_ta=era5.select('mean_2m_air_temperature ').subtract(ee.Image.constant(273.15)).resample('bicubic'); var et_wang=l_rn.add(s_rn).multiply(cons1
然而这些方法都存在一个共同缺点,也就是它们只考虑双三次 (bicubic) 降采样退化模型并且不能灵活的将其模型扩展到同时(非盲)处理其它退化类型。 4.实验 在训练阶段,SRMD 采用了各向同性和各向异性的高斯模糊核、噪声水平在 [0, 75] 之间的高斯白噪声以及 bicubic 降采样算子。 在测试阶段,SRMD 比较了不同方法在同为 bicubic 降采样退化下的 PSNR 和 SSIM 结果(如表 1 所示)。 可以看出虽然 SRMD 是用来处理各种不同的退化类型,但是仍然在 bicubic 降采样退化下取得不错的效果。 表 1:不同方法在 bicubic 降采样退化下的 PSNR 和 SSIM 结果比较(其中 SRMDNF 表示不考虑噪声情况下训练得到的模型)。 ?
类型 说明 BI bicubic-down BD blur-down BN bicubic-down+noise DN blur-down+noise 注:BI表示降质过程仅包含双三次下采样;BD表示通过高斯模糊下采样 做CV的同学对Bicubic应该非常熟悉,可以轻松的采用OpenCV或者PIL等库图像的双三次插值。但是,这里大家需要特别注意:BI一般特指matlab中的imresize。 image_path) image = im2double(image) image = modcrop(image, scale) imgLR = imresize(image, 1/scale, 'bicubic 从上述表中结果来看,如果要进行X4超分,强烈建议各位同学采用bicubic_pytorch中的实现,因为它还可以通过GPU进行加速(就是这么优秀);当然XinTao大佬提供的Pytorch实现更为精确( 参考 KAIR RDN EDVR BasicSR matlab_functions_verification bicubic_pytorch VSR-DUF
imread("C:\\Users\\SPC20-012\\Pictures\\girl.png") plt.imshow(img, cmap = 'gray', interpolation=('bicubic RGBframe = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.imshow(RGBframe, cmap = 'gray', interpolation=('bicubic
---- Abstract 经典的图像缩放(比如bicubic)可以视作一个卷积层+一个上采样滤波器,它在所有显示设备与图像处理软件中是普遍存在的。 上图对比了不同方案的性能-速度,以bicubic作为基准,从中可以看拿到: 在端侧GPU设备上,所提edge-SR成功弥补了经典上采样与深度学习超分之间的空白,同时具有比bicubic上采样更好的速度- 质量均衡; 在树莓派CPU设备上,edge-SR弥补了x2与x3倍率下的空白,但x4任务上bicubic上采样具有更佳的性能。 上表给出了不同方案的性能,可以看到:eSR方案取得了最佳速度、最低功耗 ,同时具有比bicubic上采样更好的图像质量。 京东方的研究员脑洞实在太大了,不去关注性能,转而去关注bicubic插值与深度学习超分方案在性能-速度均衡之间的那块“空白区域”,进而提出了“脑洞”更大的一层超分模型!一层能干啥?
最常见的传统图像处理算法是双三次插值(Bicubic Interpolation),该方法能创造出比双线性插值更平滑的图像边缘,且速度也较快。 但是 Bicubic 算法对于重建高清作品里生动的细节有些力不从心,图像的细节和纹理等信息难以恢复。 反卷积层 相对于大多数超分辨率的深度网络来说,例如 SRCNN 和 TSR 等超分算法,都是通过采用 Bicubic 算法先将图片直接放大到需要的尺寸,然后再进行卷积操作,也就是说这类算法的操作都是为了改善 Bicubic 算法的缺陷,计算量比较大,运行的时间较长,而且效果往往也会局限于 Bicubic 算法的限制,得不到很大的提升。 左边是 Bicubic 处理后的图片,右边是 HiSR 超分辨率算法处理后的图片 对比 Google RAISR 算法 ?
0x6. bicubic 插值 双三次插值是一种更加复杂的插值方式,它能创造出比双线性插值更平滑的图像边缘。 这是实现interpolate这个算子时最复杂的一种插值方式,计算过程如下: bicubic插值公式 其中 的计算方式如下: bicubic插值权重的计算方法 注意这里提到 一般取-0.5或者- 计算W的过程代码实现如下: // Based on // https://en.wikipedia.org/wiki/Bicubic_interpolation#Bicubic_convolution_algorithm 插值被拆成了2次1维的bicubic插值。 bicubic插值支持4维(NCHW)的输入数据,插值后的图形比bilinear更加精细平滑。
img1,200,200,200,200,cv2.BORDER_REPLICATE)#调整绘制尺寸plt.figure(figsize=(5,5))plt.imshow(img2,interpolation='bicubic 肉眼看不出多大区别,但两幅图像作差,可以看出还是不一样的:plt.imshow(img4-img3,interpolation='bicubic')?具体有什么差别,知道的可以告诉我啊。
size if it is a tuple.mode (str) – algorithm used for upsampling: ‘nearest’ | ‘linear’ | ‘bilinear’ | ‘bicubic This only has an effect when mode is ‘linear’, ‘bilinear’, ‘bicubic’ or ‘trilinear’.
php //缩放 function thumb($img){ $im=imagecreatefromjpeg($img); $sim=imagescale($im,200,-1,IMG_BICUBIC_FIXED imagesx($im); $sy=imagesy($im); if($sx>$sy){ $w=$sx*100/$sy; } $sim=imagescale($im,$w,-1,IMG_BICUBIC_FIXED
double(im_gnd)/255;%single 这里换成double Matlab 7.0就可以运行了 %% 双三次插值 im_l = imresize(im_gnd, 1/up_scale, 'bicubic '); %缩小 im_b = imresize(im_l, up_scale, 'bicubic');%再放大 %% SRCNN im_h = SRCNN(model, im_b); %% 删除边框 im_gnd)/255;%single %% 双三次插值 % 先将低分辨率图像使用双三次差值放大至目标尺寸(如放大至2倍、3倍、4倍) im_b = imresize(im_gnd, up_scale, 'bicubic double(im)/255;%single %% 双三次插值 % 先将低分辨率图像使用双三次差值放大至目标尺寸(如放大至2倍、3倍、4倍) im = imresize(im, up_scale, 'bicubic
anaconda3/envs/rasa/lib/python3.8/site-packages/keras_preprocessing/image/utils.py:25: DeprecationWarning: BICUBIC Use Resampling.BICUBIC instead. 'bicubic': pil_image.BICUBIC, /opt/bdp/data01/anaconda3/envs/rasa/lib/python3.8/site-packages/keras_preprocessing Use Resampling.BICUBIC instead. 'bicubic': pil_image.BICUBIC, /opt/bdp/data01/anaconda3/envs/rasa/lib/python3.8/site-packages/keras_preprocessing
AVPixFmtDescriptor结构体 av_pix_fmt_desc_get() //通过AVPixFmtDescriptor获取值 av_get_bits_per_pixel() //获取比特数(bpp) 图像拉伸: SWS_BICUBIC Show AVOption av_opt_show2(img_convert_ctx, stdout, AV_OPT_FLAG_VIDEO_PARAM, 0); //图像拉伸 SWS_BICUBIC //const int rescale_method = SWS_BICUBIC; //5. 设置值 av_opt_set_int(img_convert_ctx, "sws_flags", SWS_BICUBIC | SWS_PRINT_INFO, 0); av_opt_set_int(img_convert_ctx
image_width, image_height,AV_PIX_FMT_RGB24, SWS_BICUBIC video_width, video_height,AV_PIX_FMT_YUV420P, //输出 SWS_BICUBIC image_width, image_height,AV_PIX_FMT_RGB24, SWS_BICUBIC
height, resolution, resampleMethod, amount) { }, ResampleMethod = { //重新采样模式 AUTOMATIC: "自动", BICUBIC { width: 200, height: 200, dpi: 72, ResampleMethod: ResampleMethod.BICUBIC Extension.LOWERCASE); activeDocument.close(SaveOptions.DONOTSAVECHANGES) } 3.省力的for循环 models = [ResampleMethod.BICUBIC ,//重新采样模式 ResampleMethod.AUTOMATIC, ResampleMethod.BICUBIC, ResampleMethod.BICUBICAUTOMATIC 优点: 质量要较邻近法好,计算速度却接近邻近法 缺点: 不够精确 适用: 细节较少,处理简单、纯色的图像 3.BICUBIC: "两次立方" 方式: 以4x4个像素即16个像素的面积来计算一个新的像素