Python-彩色图像的最邻近插值法

效果

  • 原图(1920*1080)
    shangri-la
  • 扩大后图片(2560*1440)
    shangri-la_resized

理论部分

  • 最邻近插值The nearest interpolation
    设i+u, j+v (i, j为正整数, u, v为大于零小于1的小数,下同)为待求象素坐标,则待求象素
    灰度的值 f(i+u, j+v) 如下图所示:
    nearest-interp

代码部分

import cv2
import numpy as np

def n_interp(img):
    height,width, channels = img.shape[:3]
    #这里要注意,图片高对应二维数组行数,宽对应二维数组列数,所以先高后宽
    emptyImg = np.zeros((1440,2560,channels),np.uint8)
    expMultH = 1440/height
    expMultW = 2560/width
    print(width,height,expMultW,expMultH)
    #[y,x]是新图片[j,i]位置像素采用最邻近插值后对应的原图中的像素位置
    #对二维数组按行遍历,即对图像按高遍历
    for j in range(1440):
        for i in range(2560):
            y = int(j / expMultH + 0.5)
            x = int(i / expMultW + 0.5)
            emptyImg[j,i] =img[y,x]
    return emptyImg


# cv2.resize(img, (2560,1440,c),near/bin)
img = cv2.imread("shangri-la.jpg")
print(img.shape)
expImg = n_interp(img)
print(expImg)
cv2.imshow("nearest interp",expImg)
cv2.imshow("source image",img)
cv2.waitKey(0)

# 保存处理后的图片到当前目录
cv2.imwrite("shangri-la_resized.jpg", expImg)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hanley_Yeung

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

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

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

打赏作者

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

抵扣说明:

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

余额充值