RAISR 静态图片超采样算法的理解

本文介绍RAISR图像超分算法,其思想是先双线性插值放大2倍,依据放大图像点周围梯度特征训练不同卷积核,还原时求梯度特征并找到对应卷积核进行卷积运算。还阐述了检测算法步骤,包括预训练模型和超分算法,最后提及工程细节及相关问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RAISR(Rapid and Accurate Super Image Resolution)

 

这个算法看了一些介绍 大概理解 了,觉得比较有意思 ,在此记录一下:

思想是先通过双线性插值 放大2倍, 放大2倍的图像里 每个点 根据矩形 周围 [-5, 5] 范围内的梯度特征 作文章, 梯度特征可以版角度 angle, 强度 strength , 相关性coherence 三个参数,

训练阶段 不同角度 、强度、相关性 的组合 训练 不同的卷积核。

还原阶段先求梯度特征,再找到对应的卷积核 ,卷积运算还原。

注 : 此算法测下来与 espcn 速度和质量上都有很大差距。

以下是 检测算法的步骤:

 

一 假定 2 x 2 放大场景,预训练模型

一个点放大到 2x2 产生4个位置, 每个位置为中心生成一个11x11 的块,计算这个块内 由梯度生成的三个特征:  角度(归一化24份),强度(归一化3份),相关性(归一化3份)。

这样 根据特征: 分成 24 x 3 x 3  x 4 个桶, 每个桶 用神经网络 训练 一个 11 x 11 的卷积核。

二 超分算法

2.1  提取图像YPbPr 中 Y 分量作为处理的输入

这个好理解,人眼通常对亮度比较敏感,很多算法只处理Y

 

以下是每个点逐个处理:

2.2 每个点提取水平,垂直周围 [-5,5] 的 11x11 矩形区域 作为特征提取输入, 跟训练时一样。

2.3 先计算 11x11 mat 的 水平梯度和垂直梯度

    工程细节上有些个人的见解:

    梯度矩阵 gx/gy 可以分别用一个 11x11 的矩阵循环使用, 比如每向右移动一个像素 ,其实梯度矩阵就换了一列的数。

        每向下移动一列,梯度矩阵换了一行的数。

        以前的经验是,使用小的循环矩阵,每次扫描时重新计算一行一列梯度会比计算和存储一个大的梯度积分图还快, 

        原因是 积分图在大图像时不容易命中 cpu mem cache.  cpu cache 的速度可能是内存几十甚至上百倍。

          ^

          |

  x,y右移时,这一列可用来存 x + r + 1 这一列的梯度 (r=2时)

 

   B 新的 gx1,gy1 是理论上 gx,gy 矩阵循环移动后的结果, 当成gx,gy 应该不影响最后的计算,下面再细说

 

2.4    gx,gy 均展开成1x121 的向量dx, dy , 再合到一起组成 2x121 的向量 G

G = 「dx

            dy 」

 

2.5  计算 矩阵 X = G * G.T 的特征向量和特征值

 计算公式忘记了, 这里继续说我的观点, 2.3 里得到 gx1, gy1 当成 gx,gy 的情况下计算出来的 X 结果是一致的

 

X = 「 gx1 *gx1.T ,         gx1 * gy1.T

             gy1 * gx1.T,         gy1 * gy1.T 」

 

X 的结果里每个值都是 gx1, gy1 两两4个组合对应元素乘积之和, 同样也等于 gx,gy 对应元素乘积之和

X 为 2x2 的矩阵, 得到特征向量 (fx, fy),  特征 值(r1, r2)

 

2.6 得到 角度 angle, 强度 strength, 一致性coherence 三个参数:

angle = arctan(fy, fx)   

strength =  max(r1, r2) / (r1 + r2)

conherence =  abs(sqrt(r1) - sqrt(r2) )/  abs(sqrt(r1) + sqrt(r2))

 

angle 和 strength, conherence 归一化到 (0~23), (0~3), (0~3)

以前弄过一个不要求精度的查找表的 arctan(dy,dx) 算法, 原理是 在 0~45度范围内 arctan 函数近似 线性, 当 dy 绝对值>dx时 就算 90度 - artan(dx, dy),  

最后 根据dx,dy 正负确定 象限来变换 > 90的情况。 复杂度 两组分支判断 + 一个除法, 比 math 函数 arctan 高不少。

这里分 24 份精度更没大问题。

 

2.7 从预训练模型里算出 卷积核的索引, 然后把目标图像位置换成与卷积核的 卷积

kernel = pretained_kernels[ angle * 9 + 3 * strength + conherence ] [ pos_idx ]

 

kernel 展成 121个元素的一维与 图像 patch 的 121 个元素两两乘积 再求和 -> 卷积

 

2.8 网上说这样处理完之后还要个做个 CT-Bleng算法来消除阴影

这个是否没必要? 有空再研究

最后有个问题, 很多对于视频的处理算法 都要做 "3D" 的处理, 相临帧之间要做个滤波来避免效果的跳变。 

RAISR没想到可以做类似的处理。当然还是要看效果再说有没必要。以前做去雾算法时不平滑相临帧的参数时效果上会闪烁得很厉害。

 

### ENVI 中的重采样算法介绍 ENVI 是一款广泛应用于遥感图像处理的软件工具,其内置多种重采样算法用于空间分辨率变换、几何校正以及其他图像预处理操作。以下是关于 ENVI 中常用重采样方法的具体描述: #### 常见的空间重采样算法 1. **最近邻法 (Nearest Neighbor)** 这种方法通过选取最接近目标像素位置的原始像素值作为新像素值,具有简单快速的特点。然而,该方法可能会引入锯齿效应或失真现象,适用于不需要平滑效果的应用场景[^1]。 2. **双线性插值法 (Bilinear Interpolation)** 双线性插值基于四个相邻像素点的加权平均来计算新的像素值。这种方法能够有效减少因放大而导致的块状伪影问题,在保持一定精度的同时提供较好的视觉质量[^2]。 3. **三次卷积插值法 (Cubic Convolution)** 此技术采用更多周围像素参与运算以获得更加精确的结果,尤其适合于高精度需求的任务如地形建模等场合。尽管如此,它也增加了额外的时间成本以及复杂度相比前两者更高一些[^3]。 4. **光谱重采样** 对于多/光谱数据而言,除了上述提到的空间域内的尺寸调整外还需要考虑不同传感器间可能存在差异性的波段响应特性曲线情况下的转换过程即所谓的“光谱重采样”。这通常涉及到利用已知的目标带宽信息去匹配源材料特征从而完成整个映射关系构建工作流中的重要环节之一。 #### 应用实例分析 当面对VNIR(可见近红外)、SWIR(短波红外)甚至TIR(热红外)这类跨区域覆盖范围较大的综合性项目时,则需综合考量各部分单独处理后再整体拼接组合起来形成最终成果文件这一整套标准化作业流程标准指南建议如下几点注意事项: - 针对特定类型的子集先做初步矫正比如辐射定量化处理; - 考虑后续是否需要用到高级别的大气影响消除手段像FLAASH或者QUAC这样的模块选项设置合理参数输入框填写相应字段内容项; - 如果涉及多个层次结构堆叠在一起构成复合型产品形式的话记得统一规格化后的输出单元格大小单位应该一致便于后期进一步深入挖掘潜在价值所在之处; ```python import numpy as np from scipy.ndimage import zoom def resample_image(image, scale_factor=2, method='nearest'): """ Resamples an image using specified scaling factor and interpolation method. Parameters: image (numpy.ndarray): Input array representing the original image. scale_factor (float): Scaling ratio applied to both dimensions of the input image. method (str): Type of interpolation used during resizing ('nearest', 'bilinear', or 'cubic'). Returns: numpy.ndarray: The resized version of the given image based on selected parameters. """ methods_map = { 'nearest': 0, 'bilinear': 1, 'cubic': 3 } order = methods_map.get(method.lower(), None) if not isinstance(order, int): raise ValueError(f"Unsupported interpolation method '{method}'.") return zoom(image, zoom=(scale_factor,) * len(image.shape), order=order) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

walletiger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值