最近邻插值法

news2024/11/17 4:44:37

文章目录

  • 前言
  • 一、最近邻插值法
  • 二、代码实现
  • 总结


  本章节进入图像处理,利用python语言来实现各种图像处理的方法,从软件角度去理解图像处理方法,为后期的FPGA处理图像做准备。

前言


一、最近邻插值法

  最近邻插值就是在目标像素点上插入离对应原像素点最近的点的像素值,而不考虑图像可能的颜色变化。因此,该算法方法较为单一,原理也较为简单,计算量也是最少的。
计算公式如下:
src_x:原图的x坐标
src_y:原图的y坐标
des_x:目标图像的x坐标
des_y:目标图像的y坐标
src_w:原图的width宽度
src_h:原图的height高度
des_w:目标图像的width宽度
des_h:目标图像的height高度

{ s r c _ x = d e s _ x   ∗ s r c _ w   /   d e s _ w s r c _ y = d e s _ y   ∗ s r c _ h   /   d e s _ h \begin{cases} src\_x = des\_x\ * src\_w\ /\ des\_w\\ src\_y = des\_y\ * src\_h\ /\ des\_h \end{cases} {src_x=des_x src_w / des_wsrc_y=des_y src_h / des_h
  图像使用的是三体图像,最近小编沉迷于《三体》电视剧,所以借用三体的一张图片来进行最近邻插值法缩放。

在这里插入图片描述

二、代码实现

"""
author: caigui lin
created by: 2023/2/1
description:
nearest interpolation function
src_img: source image(ndarray)
des_size: reshaped image size(tuple)
return: resized image(ndarray)
"""
import numpy as np
import matplotlib.pyplot as plt
image = cv2.imread("three_body.jpg")
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)#cv2 color mode is BGR, plt color mode is RGB, you need reverse the color mode before implementing the nearest interpolation function.
def nearest_interpolation(src_img, des_shape):
    src_size = src_img.shape[:-1]
    des_size = des_shape[:-1]
    src_w, src_h = src_size
    des_w, des_h = des_size
    des_img = np.zeros(des_shape)
    for i in range(des_w):
        for j in range(des_h):
            des_img[i, j, 0] = src_img[round((i + 0.5) * (src_w / des_w) - 0.5), round((j + 0.5) * (src_w / des_w) - 0.5), 0]
            des_img[i, j, 1] = src_img[round((i + 0.5) * (src_w / des_w) - 0.5), round((j + 0.5) * (src_w / des_w) - 0.5), 1]
            des_img[i, j, 2] = src_img[round((i + 0.5) * (src_w / des_w) - 0.5), round((j + 0.5) * (src_w / des_w) - 0.5), 2]
    des_img = des_img.astype(np.uint8)# display the image(uint8 data type)
    return des_img
new_image = nearest_interpolation(image, (100, 100, 3))
plt.imshow(image)
plt.imshow(new_image)

缩放前

在这里插入图片描述
缩放后

在这里插入图片描述

总结

  秦始皇执剑道:“成计算机队列!”。三千万士兵,三人一组,形成计算机基本单元,与门、非门、同或、异或、三态门等等。不同功能的士兵组成计算机的CPU、总线、外存等等,他们的目的是计算三体世界的规律。看完过后,小编由衷的感叹刘慈欣脑洞之大。小编也在思考,这秦始皇不就是FPGA嘛,拥有这么多的底层资源,想干嘛干嘛。至此,感谢你的观看,后续将继续推出其他插值算法,敬请期待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/192641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

界面控件DevExpress WinForm中文教程 - 如何应用Windows 11 UI?

DevExpress WinForm拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任…

全网最详细的org.springframework.jdbc.UncategorizedSQLException的多种解决方法

文章目录1. 引出问题2. 分析问题3. 解决问题4. 解决该问题的其他方法4.1 方法14.2 方法24.3 方法34.4 方法4如果你遇到的问题不是我所遇到的问题,可以使用最下面的方法解决你遇到的这个错误。 1. 引出问题 今天在写“Mybatis-Plus中分页插件PaginationInterceptor…

利用Python读取外部数据文件

名字:阿玥的小东东 学习:python、c 主页:阿玥的小东东 目录 一、读取文本文件的数据 二、读取电子表格文件 三、读取统计软件生成的数据文件 不论是数据分析,数据可视化,还是数据挖掘,一切的一切全都是以…

java常用类: Arrays类的常用方法

java常用类型: Ineteger等包装类 String类,StringBuffer类和StringBuilder类 Math类及常用方法 System类及常用方法 Arrays类及常用方法 BigInteger类和BigDecimal类及常用方法 日期类Date类,Calender类和LocalDateTime类 文章目录ArraysArrays常用方法Arrays.sort(…

全排列问题的解题思路

假设有这么个正整数n,要求输出1到n的所有排列?   输入:3 输出:123,132,213,231,312,321 一、无脑循环求解? 拿到这个问题,当然我的第一个想法就…

上下文驱动的图上文案生成

✍🏻 本文作者:持信、弈臻、悟放、积流、孟诸1. 摘要为商品图片上特定位置配上装饰性文案来突出重点在广告业务中有着十分广泛的应用前景。然而,现有的图片文案描述生成系统均生成与图片位置关系无关的文案,无法很好地应用到广告业…

66. Python 类的总结

66. 类的总结 文章目录66. 类的总结1. 类2. 对象3. 类的语法4. 属性5. 方法6. 创建对象7. 调用属性8. 调用方法9. 方法的值的传递第1情况:没有值第2种情况:有值10. __init__方法1. __init__写法2. __init__作用3. 重点关注11. 自定义函数和方法的异同1. …

Unity渲染管线(Render Pipeline)笔记

Rendering是什么 渲染Rendering可以理解为将拿到的3D数据生成一副2D图像的过程。 这些3D数据包含:3D模型本身的点的信息,三角形面的描述信息,模型应用的材质以及摆放的虚拟相机的信息等。Rendering过程会使用全部的数据(物体的几何…

摄像头录像大师推荐?如何录制摄像头,图文教程

现如今,很多笔记本电脑上都会携带摄像头,用来录制摄像头画面,方便小伙伴的时候。可很多小伙伴却表示,自己不知道电脑摄像头画面该如何录制。有什么有什么好用的摄像头录制大师?如何录制摄像头画面?本篇文章…

【10w字】超详细【百分百拿offer】的面试教程,接口测试篇

1.请问你是如何做接口测试的? 大体来说,经历以下过程:接口需求调研、接口测试工具选择、接口测试用例编写、接口测试执行、接口测试回归、接口测试自动化持续集成。 具体来说,接口测试流程分成以下九步: 第一步&…

RabbitMq之发布确认(高级)

一.发送消息到交换机失败 正常情况下生产者只发布消息到交换机,无法确定是否成功把消息发送到交换机当中,由此发布确认的回调函数可以通知生产者消息是否发送到了交换机。 代码如下 1.先创建交换机、队列等信息 package jot.jothot.testMq;import or…

OS 学习笔记(6) 操作系统引导

OS 学习笔记(6) 操作系统引导 这篇笔记对应的王道OS 1.5 操作系统引导,同时参考了 《Operating System Concepts, Ninth Edition》和 俗称ostep的《 Operating Systems: Three Easy Pieces》还有 《Operating Systems: Principles and Practice》 文章目录OS 学习笔…

实战还原--从大黄蜂样本到域控管理员技术解析

0 前言实战案例还原《BumbleBee Roasts Its Way To Domain Admin》一文详细的描述了一次渗透案例,但其文章组织架构建立在ATT&CK框架上,而不是按照时间线逻辑来组织,因此对于渗透人员了解学习其前后过程有些困难,特此梳理一番…

发布微信小程序获取收集用户信息权限

前言在发布微信小程序的时候我们经常会遇到审核不通过的情况,其中一种特别让我头疼就是说小程序收集、使用和储存用户信息。不给予通过。但是他们的接口又不能提供这个功能,并且老是改动,真的特别的麻烦加无语。有时候审核偷一下懒&#xff0…

算法刷题-回文数、找出小于平均值的数、旋转图像(C_C++)

文章目录回文数找出小于平均值的数旋转图像回文数 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的…

光电耦合器和MOSFET之间的差异

光电耦合器和MOSFET之间的差异 介绍 光电耦合器/光耦合器和固态继电器(光电MOSFET或光耦MOSFET(OCMOS FET))在保持电隔离的同时传输信号,但存在一些重要差异。 结构差异 下图显示了光电耦合器和OCMOS FET的主要内部…

Vue实战第2章:简单的分配页面布局

缓冲 前言 本篇在讲什么 本篇作为Vue实战的第二章,跟代码逻辑无关,主要是简单的先设计一下个人网站的各个模块内容,明确一下我们想要将网站做出什么样子 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上…

趣味三角——第6章——两个几何定理

第6章 两个几何定理 It is the glory of geometry that from so few principles, fetched from without, it is able to accomplish so much. (几何学的荣耀在于,仅从几个原理出发,外求于无物,但却能够完成如此非凡的壮举。) ——Isaac N…

linux基本功系列-top命令实战

文章目录一. top命令介绍二. 语法格式及常用选项三. 参考案例3.1 显示进程信息3.2 显示完整的进程命令3.3 以批处理的形式展示3.4 设置信息更新频次3.5 显示指定进程号的信息3.6 top面板中常用参数3.7 其他用法四. top的相关说明4.1 交互命令介绍4.2 top面板每行信息的含义4.2.…

MySQL(八):事务的隔离级别、MVCC的原理

目录一、事务的隔离级别1.1 事务的隔离性1.2 事务并发执行引发的一致性问题1.2.1 脏写1.2.2 脏读1.2.3 不可重复读1.2.4 幻读1.3 SQL标准中的四种隔离级别1.4 MySQL中支持的4中隔离级别二、MVCC原理2.1 版本链2.2 ReadView2.3 READ COMMITED 每次读取数据前都生成一个ReadView2…