最近邻插值(nearest neighbor)-----python

图像内插是在诸如放大、收缩、旋转和几何校正等任务中广泛应用的基本工具。从根本上来看,内插是用已知数据来估计未知位置的数值的处理。

最近邻内插法(nearest neighbor):假设一幅大小为500×500像素的图像要放大到750×750像素。一种简单的放大方法是创建一个假想的750×750网格,它与原始图像有相同的间隔。然后将其收缩,使它准确地与原图像匹配。显然收缩后的750×750网格的像素间隔要小于原图像的像素间隔。为了对覆盖的每一个点赋以灰度值,我们在原图像中寻找最接近的像素,并把该像素的灰度赋给750×750网格中的新像素。当我们完成对网格中覆盖的所有点的灰度赋值之后,就把图像扩展到原来规定的大小,得到放大后的图像。

代码展示:

import cv2
import numpy as np

#dstH,dstW表示新图的Size,scrH,scrW表示旧图的Size
def NN_interpolation(img,dstH,dstW):
    scrH,scrW,_=img.shape
    retimg=np.zeros((dstH,dstW,3),dtype=np.uint8)
    for i in range(dstH-1):
        for j in range(dstW-1):
            #计算出新图坐标(i,j)坐标用旧图中的那个坐标来填充
            scrx=round(i*(scrH/dstH))
            scry=round(j*(scrW/dstW))
            retimg[i,j]=img[scrx,scry]
    return retimg


img = cv2.imread("E:/pythontupian/1.jpg")
zoom = NN_interpolation(img,img.shape[0]*2,img.shape[1]*2)
cv2.imshow("nearest neighbor", zoom)
cv2.imshow("image", img)
cv2.waitKey(0)

结果展示:
原图
在这里插入图片描述
插值后

在这里插入图片描述
原图和插值图对比结果
在这里插入图片描述


版权声明:本文为yuansiming0920原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。