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

最近邻域内插法(Nearest Neighbor interpolation)

双向性内插法(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/

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

  1. 数字图像处理(二)灰度、量化、采样

    转自https://blog.csdn.net/eastmount/article/details/46010637 本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程 ...

  2. 数字图像处理笔记-02(图像空域增强技术及联合运用)

    数字图像处理笔记-02(图像空域增强技术及联合运用) (一) 图像增强 1.1 基本概念 由于图像在传输或者处理过程中会引入噪声或使图像变模糊,从而降低了图像质量,甚至淹没了特 征,给分析带来了困难. ...

  3. 数字图像处理笔记2-nbsp;边沿检…

    原文地址:数字图像处理笔记2- 边沿检测与提取,轮廓跟踪(转)作者:小草帽 7.1 边沿检测 我们给出一个模板 和一幅图象 .不难发现原图中左边暗,右边亮,中间存在着一条明显的边界.进行模板操作后的结 ...

  4. 数字图像处理笔记(一)——图像存储空间,分辨率,图像内插

    数字图像处理笔记(一)--图像存储空间,分辨率,图像内插 本系列笔记是笔者在学习冈萨雷斯<数字图像处理>第三版时做的总结,日后看的时候方便点,如果有幸得到大家的讨论,喜上眉梢. 本节参考书 ...

  5. 【计算机视觉】数字图像处理(二)—— 图像数字化特征介绍

    数字图像处理(二)-- 图像数字化特征介绍 前言 一.图像的数字化 数字图像的表示 图像数字化过程 1. 采样 2. 量化 3. 采样与量化的作用效果 图像数字化设备 二.数字图像处理算法的形式 基本 ...

  6. 什么叫做形态学图像处理_数字图像处理在二值形态学及其灰度形态学方面的应用.ppt...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp图形图像 数字图像处理在二值形态学及其灰度形态学方面的应用.pp ...

  7. 最近邻分类器(Nearest Neighbor Classifier)

    先从简单的方法开始说,先提一提最近邻分类器/Nearest Neighbor Classifier,不过事先申明,它和深度学习中的卷积神经网/Convolutional Neural Networks ...

  8. 【数字图像处理】 二.MFC单文档分割窗口显示图片

    本文是讲述<数字图像处理>系列文章,继上篇讲述BMP格式图片和显示后,该篇讲述如何对单文档进行分割.主要是采用CSplitterWnd静态分割窗口显示图片等相关知识.本文主要结合自己的课程 ...

  9. 数字图像处理笔记(一)基础内容

    基础内容 数字图像是什么,和模拟图像又有什么区别 数字图像处理 数字图像处理研究内容 数字图像处理有哪些方法 计算机图形学和数字图像处理的区别 常用的数字图像处理开发工具 数字图像 图像的数学表达 数 ...

最新文章

  1. 消费升级背景下零食行业发展报告_趋势丨零食行业进入4.0时代
  2. Mysql循环查询结果并设置排序编号
  3. 文本检测算法新思路:基于区域重组的文本检测
  4. 虚拟资源拳王公社:小白从0到1搭建个人私域流量池的实操方法,6招玩转流量裂变法
  5. 微软 Azure App Service 漏洞 NotLegit已存在4年,客户源代码被暴露
  6. DNS欺骗的艺术 | 域名劫持和网页挂马
  7. centos7阿里yum源报问题
  8. 令人吃惊,这个短信平台在这些方面居然完胜阿里云
  9. PS学习笔记(88天和我一起学会PS)(8/88)
  10. cannot set options after executing query
  11. 【Python 最全版(一)】—加解密、编码解码、进制转换、字符串转换
  12. 【python学习小案例】提高兴趣之BMI计算器
  13. 苹果手机浏览器下拉会闪动的解决办法
  14. nop sled 空操作雪橇
  15. 程序员--经典10道脑力题
  16. 【Spring】一文带你吃透基于XML的DI技术
  17. 〖编程初学者的自我修养 - 职业规划篇⑥〗- 好公司不等于是适合自己的公司
  18. Cron表达式与CronTrigger
  19. 一维数据中位值平均滤波法MATLAB代码
  20. linux内核netfilter,linux内核netfilter实现url重定向

热门文章

  1. Single-Shot Calibration:基于全景基础设施的多相机和多激光雷达之间的外参标定(IROS2021)...
  2. android小程序案例_小程序案例赏析:高质量的小程序怎么做
  3. OpenCv java 颜色空间(9)
  4. oracle创建索引---如何创建所以
  5. python实现获取文件列表中每个文件关键字
  6. NAR:查询未培养病毒基因组的综合生态和进化框架IMG/VR v3
  7. Microbiome:微生物所刘双江组建立人肠道微生物资源库(hGMB)
  8. Cell:一种用基因流定义微生物种群的反向生态学方法
  9. Microbiome:植物发育和氮肥共同作用下的小麦根系微生物组
  10. NRM: 地球上细菌和古菌的生物膜丰度