最近邻插值法(nearest_neighbor)
1、原理与应用
最近邻插值法nearest_neighbor是最简单的灰度值插值。也称作零阶插值,就是令变换后像素的灰度值等于距它最近的输入像素的灰度值。最近邻插值法可应用于图像的缩放,因为简单的变换与计算,效果一般不好。
先假设一个2X2像素的图片采用最近邻插值法需要放大到4X4像素的图片,右边?该为多少。
2、公式及计算
最近邻插值法坐标变换计算公式(这个更简洁一点):
AX=BX*(AW/BW)
AY=BY*(AH/BH)
- BX与BY为目标图像的某个像素的横纵坐标
- BW与BH为目标图像的长与宽
- AW与AH为原图像的宽度与高度
- AX,AY为目标图像在该点(BX,BY)对应的原图像的坐标
如果是放大图像,(AW/BW)值小于1,同样将BX同比例映射到原图像的AX中,如果AW/BW=1,就相当于复制了图片。
右图为经过放大后的目标图像,?处的坐标为(3,2),根据公式计算得到
AX=3*(2/4)=1.5, AY=2*(2/4)=1
故?处的像素应该为原图像中的(1.5,1)像素的值,但是像素坐标没有小数,一般采用四舍五入取最邻,所以最终的结果为(2,1),对应原图像的橙色。其他类比得到放大后的图像:
3、代码实现
"""
@author: 绯雨千叶最邻近插值法
AX=BX*(AW/BW)
AY=BY*(AH/BH)
A为原图,B为目标图
"""
import cv2
import numpy as npdef nearest_1(img1): # 手动版,需要自己设置目标图宽和高h1, w1, channels = img1.shape # 取彩色图片的长、宽、通道h2 = 550 # 手动设置目标图像的高和宽w2 = 570img_n = np.zeros((h2, w2, channels), np.uint8) for i in range(h2):for j in range(w2):AX = int(i * (h1 / h2))AY = int(j * (w1 / w2))img_n[i, j] = img1[AX, AY]return img_ndef nearest_2(img1): # 自动倍数版,可以直接设置放大缩小的倍数h1, w1, channels = img1.shape # 取彩色图片的长、宽、通道scale = 1.5 # 直接设置倍率,>1为放大,<1为缩小,暂不考虑负数h2= int(h1 * scale)w2= int(w1 * scale)img_n = np.zeros((h2, w2, channels), np.uint8)for i in range(h2):for j in range(w2):AX = int(i / scale)AY = int(j / scale)img_n[i, j] = img1[AX, AY]return img_nimg1 = cv2.imread("../img/lrn.jpg") # 输入原图
img2 = nearest_1(img1)
img3 = nearest_2(img1)
cv2.imshow("img1", img1)
cv2.imshow("nearest_1", img2) # 手动设置高宽版
cv2.imshow("nearest_2", img3) # 自动写倍率版
cv2.waitKey(0)
效果展示 :
最近邻插值法(nearest_neighbor)相关推荐
- 图像插值(最近邻插值法 和 双线性插值法)
所谓近朱者赤近墨者黑,无论什么插值方法根本思想都是一样的. 先讲一下最近邻插值法,就是找到未知像素点相邻的4个已知像素点,然后判断哪一个像素离着未知像素点近,就让那个点同化未知像素点,赋予未知点同样的 ...
- 图像插值算法:最近邻插值、双线性插值
插值算法:最近邻插值.双线性插值 文章目录 插值算法:最近邻插值.双线性插值 最近邻插值法(nearest_neighbor) 线性插值 单线性插值法 双线性插值 插值算法有很多种,这里列出关联比较密 ...
- Tensorflow2.0图像预处理
实验步骤 1.载入库 import matplotlib.pyplot as plt import tensorflow as tf import numpy as np 2.读取照片 image_d ...
- 本科课程【数字图像处理】实验3 - 图像的几何变换
大家好,我是[1+1=王], 热爱java的计算机(人工智能)渣硕研究生在读. 如果你也对java.人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!! Good better best, never ...
- 第2章 Python 数字图像处理(DIP) --数字图像基础3 - 图像内插 - 最近邻内插 - 双线性插值 - 双三次内插 - 图像放大
目录 图像内插 放大图像 图像内插 内插通常在图像放大.缩小.旋转和几何校正等任务中使用.内插并用它来调整图像的大小(缩小和放大),缩小和放大基本上采用图像重取样方法 最近邻内插,这种方法将原图像中最 ...
- 最近邻插值算法 python实现
一. 最近邻插值法放大图像: 最近邻插值法在放大图像时补充的像素是最近邻的像素的值.由于方法简单,所以处理速度很快,但是放大图像画质劣化明显,常常含有锯齿边缘. 最近邻插值法算法原理 ↑ 二. 最近邻 ...
- 最近邻插值与双线性插值
最近邻插值 顾名思义,最近邻插值法在放大图像时补充的像素是最近邻的像素的值.由于方法简单,所以处理速度很快,但是得到的图像常常含有锯齿边缘.如下图所示: import cv2 import numpy ...
- 立方卷积插值 matlab,matlab旋转实现(最近邻值,双线性,三次卷积插值实现插值)
数字图像处理,使用matlab实现旋转(最近邻值,双线性,三次卷积插值实现插值) 对图像进行旋转,使用最近邻插值法,双线性插值,三次卷积插值三种方法进行插值. 源码: clc;clear all;cl ...
- 【Halcon】插值算法通俗讲解
目录 一.灰度值插值的概念 二.最近邻插值法 三.双线性插值法 四.等权双线性插值法 五.高斯加权双线性插值法 六.双三次插值法 七.五种插值算比较 一.灰度值插值的概念 回到目录 灰度值插值是图像变 ...
最新文章
- 黑马程序员--数组与集合互相转变
- 如何使用计算机中的导出,如何将iPhone手机中的音乐导出至电脑
- 在SAP API hub自动生成使用ABAP调用API的胶水代码
- java即时编译器_Java即时编译:不仅仅是一个流行词
- 力扣724.寻找数组的中心索引
- NAT对语音业务的影响(网络控制方案…
- javascript小实例,阻止浏览器默认行为,真的能阻止吗?支持IE和标准浏览器的阻止默认行为的方法...
- 干货 | 机器学习在web攻击检测中的应用实践
- 使用Fiddler4抓取微信小程序请求
- R语言4.04安装教程
- QNX 7.1 交叉编译 cron
- 【sv】 assign force区别
- 特斯拉神器TeslaMate一键安装,终于来了
- 在线html网页编辑器ckeditor的使用与配置
- 今天心情好,给各位免费呈上200兆SVN代码服务器一枚,不谢!
- 黑马Redis学习——实战篇(4)
- 11 个最佳免费安全网站
- Python程序完成根据视频起始时间剪辑视频
- [NL系列] RNN LSTM 网络结构及应用
- Swiper4.3.3 制作轮播图
热门文章
- Lombok will not run during this compilation
- html中js隐藏div的高度,jQuery实现获取隐藏div高度的方法示例
- 服务器物理机使用ESXI虚拟化并划分虚拟机
- 【读书笔记】游戏开发原理
- VL53L0X 底层思路整理 (2)
- DDR2内存参数设置
- 来可电子串口RS232/485/UART转CANbus总线转换器网关CANUART-100T
- ABAP-面试中的奇葩问题
- 纺织业如何选择适合企业自身发展的ERP?
- react-native 之Debug JS Remotely模式下不能打断点?