超分辨率效果改善方案记录(1)

在图像处理和计算机视觉中, 上采样(upsampling)是一种常见的操作, 用于将图像从低分辨率扩大到高分辨率. 两种常见的上采样方法是最近邻上采样(Nearest-neighbor Upsampling)和双线性上采样(Bilinear Upsampling). 它们各自具有不同的特点:

  1. 最近邻上采样: 这种方法在上采样过程中选择与原始像素最接近的像素值, 以填充新像素. 它会导致锯齿状的边缘, 因为它不考虑像素之间的平滑过渡, 导致锐利的边缘.

  2. 双线性上采样: 双线性上采样考虑了周围像素的权重, 以计算新像素的值. 这使得边缘更加平滑, 因为它会对周围像素的值进行线性插值. 这种方法在上采样过程中产生更平滑的图像, 但可能会导致边缘相对于最近邻上采样来说不够锐利.

将两种上采样方法结合以获得同时锐利和平滑的结果其实有是可能的, 我们称为混合上采样或自适应上采样. 一种常见的方法是使用权重混合两种方法, 以在不同部分的图像上应用它们. 以下是一种简单的方法:

  1. 定义混合权重: 为了结合最近邻上采样和双线性上采样, 您可以定义一个混合权重图像. 这个权重图像决定了每个像素处应该使用哪种上采样方法的权重.

  2. 应用混合权重: 使用混合权重图像, 对每个像素应用最近邻上采样和双线性上采样. 具体地, 对于每个像素, 根据混合权重来决定最近邻和双线性上采样两者的权重. 然后, 将两种上采样结果加权相加以生成混合上采样结果.

这种方法允许您在图像中的不同区域使用不同的上采样方法, 以获得锐利的边缘和平滑的纹理.

当然, 以下是对您描述的过程的更具技术性的表述:

步骤1: 首先, 将从2x超分辨率模型获得的Y通道图像分别应用nearest upsample(Y_nn)和bilinear upsample(Y_bi).

步骤2: 接下来, 通过在Y_nn和Y_bi上执行卷积操作, 生成图像的垂直和水平边缘. 这个步骤有助于增强图像的边缘信息.

步骤3: 利用OpenCV库的cv::cartToPolar()函数, 计算垂直和水平边缘的tan角度和幅度. 这一步有助于了解边缘的方向和强度.

步骤4: 创建一个融合mask, 将角度接近0、90和180度的像素设置为1, 同时将幅度小于5的像素设置为0. 这个mask有助于确定需要特定上采样结果的区域.

步骤5: 对融合mask进行膨胀(dilate)操作, 扩展需要混合结果的区域. 这个膨胀操作确保了最近邻上采样和双线性上采样区域之间的平滑过渡.

步骤6: 最后, 将融合mask应用于Y_nn和Y_bi的结果, 得到融合的输出Y_out. 融合结果的计算公式为: Y_out = Y_nn * mask + (1.0 - mask) * Y_bi. 这个过程产生了最终图像, 根据融合mask的区域, 综合了最近邻上采样的锐利度和双线性上采样的平滑度.

这种方法通过考虑边缘细节和不同上采样区域之间的平滑过渡, 确保了改进和平衡的超分辨率结果.