数字图像处理笔记二 - 图片缩放(最近邻插值(Nearest Neighbor interpolation))

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/details/80918147

图片缩放的两种常见算法:

  1. 最近邻域内插法(Nearest Neighbor interpolation)
  2. 双向性内插法(bilinear interpolation)

本文主要讲述最近邻插值(Nearest Neighbor interpolation算法的原理以及python实现


基本原理

最简单的图像缩放算法就是最近邻插值。顾名思义,就是将目标图像各点的像素值设为源图像中与其最近的点。算法优点在与简单、速度快。

如下图所示,一个4*4的图片缩放为8*8的图片。步骤:

  1. 生成一张空白的8*8的图片,然后在缩放位置填充原始图片值(可以这么理解)
  2. 在图片的未填充区域(黑色部分),填充为原有图片最近的位置的像素值。

实现代码如下:

def nearest_neighbor_resize(img, new_w, new_h):
    # height and width of the input img
    h, w = img.shape[0], img.shape[1]
    # new image with rgb channel
    ret_img = np.zeros(shape=(new_h, new_w, 3), dtype='uint8')
    # scale factor
    s_h, s_c = (h * 1.0) / new_h, (w * 1.0) / new_w

    # insert pixel to the new img
    for i in xrange(new_h):
        for j in xrange(new_w):
            p_x = int(j * s_c)
            p_y = int(i * s_h)

            ret_img[i, j] = img[p_y, p_x]

    return ret_img

测试代码如下:

def test():
    img_path = 'F:/nearest_neighbor.jpg'
    img = cv2.imread(img_path)

    ret_img = nearest_neighbor_resize(img, 222, 220)

    cv2.imshow("source image", img)
    cv2.imshow("after bilinear image", ret_img)
    cv2.waitKey()
    cv2.destroyAllWindows()

运行结果如下:

主要参考:

http://tech-algorithm.com/articles/nearest-neighbor-image-scaling/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏wOw的Android小站

[Tensorflow] Tensorflow卷积理解

CNN对于学习深度学习的人来说应该是比较耳熟的名词了.但很多人只是听过,但不知道是什么.

8442
来自专栏CVer

风格迁移三部曲(二)之固定风格任意内容的快速风格迁移

上篇介绍了风格迁移三部曲(一)之普通风格迁移,本文将继续介绍第二种风格迁移方式:固定风格任意内容的快速风格迁移。

1780
来自专栏书山有路勤为径

Creating a Filter, Edge Detection

Below, you've been given one common type of edge detection filter: a Sobel opera...

961
来自专栏Coding迪斯尼

用python实现数字图片识别神经网络--实现网络训练功能

1883
来自专栏用户2442861的专栏

Torch深度学习入门

lua和torch的安装官网都有,lua的语法基础知识网上有很多。请看本文前自行学习。本文简单介绍了torch做深度学习模型的简单用法,并给出了CIFAR-10...

1272
来自专栏数据派THU

从零开始用Python构造决策树(附公式、代码)

? 来源:Python中文社区 作者:weapon 本文长度为700字,建议阅读5分钟 本文介绍如何不利用第三方库,仅用python自带的标准库来构造一个决策...

3508
来自专栏AILearning

TF图层指南:构建卷积神经网络

TensorFlow layers模块提供了一个高级API,可以轻松构建神经网络。它提供了便于创建密集(完全连接)层和卷积层,添加激活函数以及应用缺陷正则化的方...

7475
来自专栏赵俊的Java专栏

矩阵覆盖

1743
来自专栏量子位

如何利用卷积自编码器对图片进行降噪?

作者:天雨粟 量子位 已获授权编辑发布 前言 这周工作太忙,本来想更把Attention tranlsation写出来,但一直抽不出时间,等后面有时间再来写,先...

3606
来自专栏WOLFRAM

如何使用DensityHistogram加入直方图元素

1992

扫码关注云+社区

领取腾讯云代金券