<图像处理> 图像插值算法

news2024/11/29 3:51:29

图像插值算法

图像插值在图像处理中常用于调整图像尺寸或变形,其目标是根据给定像素点周围像素点的信息来预测该像素点的值。

常见的图像插值算法可以分为两类:自适应和非自适应。自适应的方法可以根据插值内容的特点来进行调整,而非自适应的方法对所有像素点都进行相同的处理。非自适应算法包括最近邻插值双线性插值双三次插值样条插值sinc插值lanczos插值等。这些算法可以根据需要调整插值的精度和计算复杂度,以实现图像的扭曲和缩放。

最近邻插值

最近邻插值是一种简单的插值方法,它选择离目标点最近的已知点的值作为新插入点的值。当源图像大小为 S r c W i d t h SrcWidth SrcWidth S r c H e i g h t SrcHeight SrcHeight,目标图像大小为 D s t W i d t h DstWidth DstWidth D s t H e i g h t DstHeight DstHeight,或者涨缩比例为 S x S_x Sx S y S_y Sy,则计算目标图像任意像素横纵坐标 d s t x dst_x dstx d s t y dst_y dsty如下:

  1. 如果 S x S_x Sx S y S_y Sy均为0,则先计算 S x S_x Sx S y S_y Sy
    S x = r o u n d ( D s t W i d t h / S r c W i d t h ) S_{x}=round(DstWidth/SrcWidth) Sx=round(DstWidth/SrcWidth) //水平涨缩比例
    S y = r o u n d ( D s t H e i g h t / S r c H e i g h t ) S_{y}=round(DstHeight/SrcHeight) Sy=round(DstHeight/SrcHeight) //竖直涨缩比例
  2. 计算目标图像->源图像的涨缩比例
    S x i n v = 1. / S x S_{xinv}=1./S_x Sxinv=1./Sx //反水平涨缩比例
    S y i n v = 1. / S y S_{yinv}=1./S_y Syinv=1./Sy //反竖直涨缩比例
  3. 计算目标像素在源图像中的坐标,注意边界条件
    d s t x = r o u n d ( s r c x ∗ S x i n v ) dst_x=round(src_x*S_{xinv}) dstx=round(srcxSxinv) //水平坐标
    d s t y = r o u n d ( s r c y ∗ S y i n v ) dst_y=round(src_y*S_{yinv}) dsty=round(srcySyinv) //竖直坐标
  4. 计算目标图像像素值
    I D s t ( x , y ) = I S r c ( d s t x , d s t y ) I_{Dst}(x,y)=I_{Src}(dst_x,dst_y) IDst(x,y)=ISrc(dstx,dsty)

双线性插值

双线性插值则是在两个方向上进行线性插值,通过对四个最近的已知点进行加权平均来确定新插入点的值,如下图所示,点P为目标图像任意像素坐标通过一定的涨缩比例变换至源图像的坐标位置,计算方式如下:

  1. 利用上述最近邻方法,计算目标图像像素坐标在源图像中的坐标位置
  2. 计算坐标偏差
    点P坐标 ( x , y ) (x,y) (x,y) t , u t,u t,u为小数部分坐标, t = x − x 0 , u = y − y 0 t=x-x0,u=y-y0 t=xx0u=yy0
  3. 先计算水平方向
    Q1,Q2线性插值: I Q 11 = I ( x 0 , y 0 ) ∗ ( 1 − t ) + I ( x 1 , y 0 ) ∗ t I_{Q11} = I(x_0,y_0) * (1-t) + I(x_1, y_0) * t IQ11=I(x0,y0)(1t)+I(x1,y0)t
    Q3,Q4线性插值: I Q 22 = I ( x 0 , y 1 ) ∗ ( 1 − t ) + I ( x 1 , y 1 ) ∗ t I_{Q22} = I(x_0, y_1) * (1-t) + I(x_1,y_1) *t IQ22=I(x0,y1)(1t)+I(x1,y1)t
  4. 利用Q11, Q22的值,进行垂直方向权重计算得出计算采样点值
    I D s t ( x , y ) = I Q 11 ∗ ( 1 − u ) + I Q 22 ∗ u I_{Dst}(x,y) = I_{Q11}*(1-u) + I_{Q22} * u IDst(x,y)=IQ11(1u)+IQ22u

在这里插入图片描述

双三次插值

双三次插值则是在两个方向上进行三次插值,通过对16个最近的已知点进行加权平均来确定新插入点的值。待补充算法。

OpenCV函数

void cv::resize(InputArray src, OutputArray dst, Size dsize, double fx = 0, double fy = 0, int interpolation = INTER_LINEAR)	

Parameters
src				输入图像;
dst				输出图像,其大小为dsize(当它非零时)或由src.size()、fx和fy计算得到的大小,类型与src相同;
dsize			输出图像尺寸,如果它等于0(在Python中为None),则计算为:dsize = Size(round(fx*src.cols), round(fy*src.rows)),dsize或者fx和fy都必须非零。
fx				水平轴比例因子,当它等于0时,计算为(double)dsize.width/src.cols
fy				纵轴比例因子,当它等于0时,计算为(double)dsize.height/src.rows
interpolation	插值方式, 见InterpolationFlags

InterpolationFlags

  • INTER_NEAREST :最近邻插值
  • INTER_LINEAR :双线性插值
  • INTER_CUBIC :双立方插值
  • INTER_AREA :利用像素面积关系进行重采样。它可能是图像抽取的首选方法,因为它可以得到与莫尔无关的结果。但当图像被放大时,它类似于INTER_NEAREST方法。
  • INTER_LANCZOS4 :8x8邻域上的LANCZOS4插值
  • INTER_LINEAR_EXACT :位精确双线性插值
  • INTER_NEAREST_EXACT :位精确近邻插值。这将产生与PIL、scikit-image或Matlab中的最近邻方法相同的结果。
  • INTER_MAX :插值掩码
  • WARP_FILL_OUTLIERS :标志,填充目标图像的所有像素。如果其中一些对应于源图像中的异常值,则将其设置为零
  • WARP_INVERSE_MAP :标志,逆变换,例如, linearPolar or logPolar 两种变化:flag is not set: dst(ρ,ϕ)=src(x,y);flag is set: dst(x,y)=src(ρ,ϕ);

参考

  1. https://blog.csdn.net/jia20003/article/details/6907152
  2. https://blog.csdn.net/jia20003/article/details/6915185

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

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

相关文章

港科大提出适用于夜间场景语义分割的无监督域自适应新方法

跟大家分享港科大提出的无监督域自适应夜间场景语义分割方法,该方法对夜间的动态目标和小目标做了针对性的优化。 论文标题:Towards Dynamic and Small Objects Refinement for Unsupervised Domain Adaptative Nighttime Semantic Segmentation机构&…

UGUI交互组件ScrollBar

一.ScrollBar的结构 对象说明Scrollbar挂有Image和Scrollbar组件的主体对象Sliding Area表示滑动范围Handle滑块 二.Scrollbar的属性 属性说明Handle Rect控制柄对象的引用Direction拖动控制柄时滚动条值增加的方向Value滚动条的当前值,范围为 0.0 到 1.0Suze控制柄…

【Python搜索算法】深度优先搜索(DFS)算法原理详解与应用,示例+代码

目录 1 基本原理 2 DFS算法流程 3 时间复杂度 4 空间复杂度 5 DFS算法应用案例: 5.1 解决路径查找问题 5.2 解决图的连通性问题 5.3 拓扑排序 5.4 在树结构中进行深度遍历 深度优先搜索(DFS)是一种重要的图遍历算法,用…

容性耦合和距离的关系

容性耦合和距离的关系 在电路板设计中,耦合是指两个或多个电路元件之间的相互作用,这种相互作用会影响到电路的性能。而容性耦合是指通过电场进行耦合的一种方式,它可以通过电容器的作用使得信号在电路板中传递,但同时也会带来一些…

HBuilder创建uniapp默认项目导入uview(胎教)

1:更新HBuilder 建议更新 2:更新插件 我本人在没有更新插件的情况下报错了,找到了**这个大佬**解决问题,所以建议更新插件 先卸载uni-app(Vue2)编译 再重新安装 uni-app(Vue2)…

RabbitMQ从0到1完整学习笔记二:《高级篇》

目录 1. 发送者的可靠性 1.1.生产者连接重试机制 1.2.生产者确认机制(发布确认) 1.3.实现生产者确认 1.3.1.开启生产者确认 1.3.2.定义ReturnCallback 1.3.3.定义ConfirmCallback 拓展: confirm 模式细节处理 2.MQ的可靠性 2.1.数据持久化 2.…

论文阅读:Seeing in Extra Darkness Using a Deep-Red Flash

论文阅读:Seeing in Extra Darkness Using a Deep-Red Flash 今天介绍的这篇文章是 2021 年 ICCV 的一篇 oral 文章,主要是为了解决极暗光下的成像问题,通过一个深红的闪光灯补光。实现了暗光下很好的成像效果,整篇文章基本没有任…

Hadoop3教程(十一):MapReduce的详细工作流程

文章目录 (94)MR工作流程Map阶段Reduce阶段 参考文献 (94)MR工作流程 本小节将展示一下整个MapReduce的全工作流程。 Map阶段 首先是Map阶段: 首先,我们有一个待处理文本文件的集合; 客户端…

Flash-Attention

这是一篇硬核的优化Transformer的工作。众所周知,Transformer模型的计算量和储存复杂度是 O ( N 2 ) O(N^2) O(N2) 。尽管先前有了大量的优化工作,比如LongFormer、Sparse Transformer、Reformer等等,一定程度上减轻了Transformer的资源消耗…

[Zookeeper:基于容器化]:快速部署安装

文章目录 一:拉取docker zookeeper镜像二:创建zookeeper宿主机data目录三:运行容器四:开放防火墙 一:拉取docker zookeeper镜像 [rootvboxnode3ccccccttttttchenyang bigdata]# docker pull zookeeper Using default …

IDEA Gradle Lombok错误:找不到符号 setter getter方法没有

今天IDEA2022.3.3开个Gradle(7.5版本)项目,加入了Lombok依赖,依赖如下: dependencies {implementation group: org.springframework.boot, name: spring-boot-starter-web, version: 3.1.4compileOnly group: org.pro…

Windows:VS Code IDE安装ESP-IDF【保姆级】

物联网开发学习笔记——目录索引 参考: VS Code官网:Visual Studio Code - Code Editing. Redefined 乐鑫官网:ESP-IDF 编程指南 - ESP32 VSCode ESP-ID Extension Install 一、前提条件 Visual Studio Code IDE安装ESP-IDF扩展&#xf…

基于nodejs+vue水浒鉴赏平台系统

该平台内容丰富,便于操作。 零碎化的信息带给我们的短暂快感,人们沉寂在网络游戏、短视频、网络聊天,沉寂其中无法自拔。脱离现实、胡编乱造、五花八门的网络小说, 优秀的文化传承,学习和借鉴才是当今社会需要的。 …

睡衣内衣服装商城小程序的作用是什么

服装行业一直都是市场很重要的组成部分,每个人都需要,且根据品牌、样式作用等可以细分很多类目,其中睡衣内衣也有不小的市场规模,从业商家多、市场需求度高。 但同时睡衣内衣经营痛点也比较明显。 当今消费者习惯于线上消费&…

【面试经典150 | 区间】汇总区间

文章目录 Tag题目来源题目解读解题思路方法一:一次遍历复杂度分析 其他语言python3C 写在最后 Tag 【一次遍历】【数组】【字符串】 题目来源 228. 汇总区间 题目解读 给定一个无重复的升序数组 nums,需要将这个数组按照以下规则进行汇总&#xff1…

报道 | 2023-2024年1月国际运筹优化会议汇总

2023年10月、11月、12月召开会议汇总: 2023 International Conference on Optimization and Applications (ICOA) Location: Abu Dhabi, United Arab Emirates Important dates: Conference: October 05-06, 2023 Details: https://lct.ac.ae/en/icoa/ 2023 INF…

Kafka:容器安装篇

文章目录 一:拉取 kafka镜像: docker pull bitnami/kafka二:运行 kafka容器: docker run containerId三:开放防火墙 一:拉取 kafka镜像: docker pull bitnami/kafka docker search kafka docke…

Android Framework通信:Handler

文章目录 前言一、Handler源码分析1、创建Handler2、发送消息3、取消息4、消息处理5、线程切换的方法(Handler异步消息处理机制流程)handler.sendMessage()handler.post()View.post()Activity中的runOnUiThread() 二、Handler高频面试题1、为什么要有Han…

SSM - Springboot - MyBatis-Plus 全栈体系(二十八)

第六章 SpringBoot 三、SpringBoot3 整合 SpringMVC 1. 实现过程 1.1 创建程序 1.2 引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001…

单目3D目标检测——MonoDLE 模型训练 | 模型推理

本文分享 MonoDLE 的模型训练、模型推理、可视化3D检测结果。 模型原理&#xff0c;参考我这篇博客&#xff1a;【论文解读】单目3D目标检测 MonoDLE&#xff08;CVPR2021&#xff09;_一颗小树x的博客-CSDN博客 源码地址&#xff1a;https://github.com/xinzhuma/monodle 目…