图像超分辨率重建学习记录(二)----插值法

对于用于超分辨率重建的卷积神经网络SRCNN,唯一的预处理步骤为bicubic(双三次插值),将所给低分辨率图像构建为目标像素大小。

例如我们有一个32*32像素的图片,想将其重建为64*64像素分辨率的图片,则先使用双三次插值法,将32*32像素的图片扩大到64*64,再将所得图像放入SRCNN进行后续步骤。

插值法的理解如下图:

例如将一个2*2像素的图片 放大两倍至4*4

1、插入像素点

2、对插入的像素点填充亮度值,以dest(I,J)为例,具体步骤为:

(1)根据映射关系,找到dest(I,J)在原图origin中最靠近的像素点ori(u,v),此处ori(u,v)=90

(2)以ori(u,v)为中心,向外辐射16个点,这16个点的坐标为ori(i+u,j+v),i,j的取值范围为-1<=i<=2;-1<=j<=2,如果原图没有这些像素点,可以做填充补全。

(3)根据某种关系对这16个点进行运算(类似于卷积),得到dest(I,J)处的亮度值。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
双线性插值是一种常用的图像插值方法,用于图像的放大和缩小。在图像缩小中,双线性插值可以通过“局部均值法”来改进。下面是一个使用双线性插值和局部均值法来缩小图像的示例代码: ```python import cv2 import numpy as np def resize_image_bilinear(img, scale): # 获取原始图像的尺寸 height, width = img.shape[:2] # 计算缩小后的图像尺寸 new_height = int(height / scale) new_width = int(width / scale) # 创建一个新的图像数组 new_img = np.zeros((new_height, new_width, 3), dtype=np.uint8) for i in range(new_height): for j in range(new_width): # 计算原始图像中对应的坐标 x = int(j * scale) y = int(i * scale) # 计算四个最近邻像素的坐标 x1 = min(x, width - 1) x2 = min(x + 1, width - 1) y1 = min(y, height - 1) y2 = min(y + 1, height - 1) # 计算双线性插值的权重 dx = x / scale - x1 dy = y / scale - y1 # 根据双线性插值公式计算新图像的像素值 new_img[i, j] = (1 - dx) * (1 - dy) * img[y1, x1] + dx * (1 - dy) * img[y1, x2] + (1 - dx) * dy * img[y2, x1] + dx * dy * img[y2, x2] return new_img # 读取原始图像 img = cv2.imread('input.jpg') # 缩小图像的比例 scale = 2 # 使用双线性插值和局部均值法缩小图像 new_img = resize_image_bilinear(img, scale) # 显示缩小后的图像 cv2.imshow('Output', new_img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这段代码使用OpenCV库来读取原始图像,并通过双线性插值和局部均值法来缩小图像。你可以将`input.jpg`替换为你自己的图像文件名,并调整`scale`参数来控制缩小的比例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值