【阅读笔记】基于FPGA的红外图像二阶牛顿插值算法的实现

图像缩放技术在图像显示、传输、分析等多个领域中扮演着重要角色。随着数字图像处理技术的发展,对图像缩放质量的要求也越来越高。二阶牛顿插值因其在处理图像时能够较好地保持边缘特征和减少细节模糊,成为了图像缩放中的一个研究热点。

一、 二阶牛顿插值的基本原理

牛顿插值公式是一种基于商差的插值方法,它通过已知的数据点构造一个多项式函数来推断未知的数据点。牛顿插值多项式公式如下:

N ( x ) = f ( x 0 ) + Δ f ( x 0 ) 1 ! ( x − x 0 ) + Δ 2 f ( x 0 ) 2 ! ( x − x 0 ) 2 + . . . + Δ 2 f ( x 0 ) n ! ( x − x 0 ) n N(x) = f(x_0) + \frac{\Delta f(x_0)}{1!}(x - x_0) + \frac{\Delta^2 f(x_0)}{2!}(x - x_0)^2+...+\frac{\Delta^2 f(x_0)}{n!}(x - x_0)^n N(x)=f(x0)+1!Δf(x0)(xx0)+2!Δ2f(x0)(xx0)2+...+n!Δ2f(x0)(xx0)n

阶数 n n n的取值越大,插值余项就越小,得到的插值就越精确。

但是考虑到算法的复杂度以及 FPGA的资源有限等实际问题 ,通常 n n n值取的比较小,一般取2,对于二阶牛顿插值,其基本形式如下:

N ( x ) = f ( x 0 ) + Δ f ( x 0 ) 1 ! ( x − x 0 ) + Δ 2 f ( x 0 ) 2 ! ( x − x 0 ) 2 N(x) = f(x_0) + \frac{\Delta f(x_0)}{1!}(x - x_0) + \frac{\Delta^2 f(x_0)}{2!}(x - x_0)^2 N(x)=f(x0)+1!Δf(x0)(xx0)+2!Δ2f(x0)(xx0)2

其中, Δ f ( x 0 ) \Delta f(x_0) Δf(x0)表示一阶差分,$ \Delta^2 f(x_0) $表示二阶差分。通过这些差分,牛顿插值能够提供一个多项式,该多项式不仅通过所有已知点,而且能够预测中间值。

二、二阶牛顿插值

在图像缩放中,二阶牛顿插值可以用于计算新像素点的值。具体步骤如下:

2.1 水平方向插值

首先,对原始图像进行水平方向的插值计算,以得到中间图像。对于目标像素点( p(x_0, y_0) ),根据其在水平方向上映射到原始图像中的位置,选择邻域内相关性最大的一组源像素点,通过二阶牛顿插值算法t计算水平方向的目标像素值。

计算f的像素值,可以用f1、f2、f3个原始像素点,或者f2、f3、f4三个原始像素点,两个方式插值公式分别为:

F 1 = f 1 + Δ f 1 t + Δ 2 f 1 2 ! ( t − 1 ) 2 F_1=f_1+\Delta f_1t+\frac{\Delta^2 f_1}{2!}(t-1)^2 F1=f1+Δf1t+2!Δ2f1(t1)2

F 2 = f 2 + Δ f 2 ( t − 1 ) + Δ 2 f 2 2 ! ( t − 1 ) ( t − 2 ) F_2=f_2+\Delta f_2(t-1)+\frac{\Delta^2 f_2}{2!}(t-1)(t-2) F2=f2+Δf2(t1)+2!Δ2f2(t1)(t2)

其中, Δ f 1 \Delta f_1 Δf1表示一阶差分,$ \Delta^2 f_1$ 表示二阶差分。

t = 1 + Δ x t=1+\Delta x t=1+Δx带入上式,公式化简后得到下式:

F 1 = 1 2 ( Δ x 2 − Δ x ) f 1 + ( − Δ x 2 + 1 ) f 2 + 1 2 ( Δ x 2 + Δ x ) f 3 F_1=\frac{1}{2}(\Delta x^2-\Delta x)f_1+(-\Delta x^2+1)f_2+\frac{1}{2}(\Delta x^2+\Delta x)f_3 F1=21(Δx2Δx)f1+(Δx2+1)f2+21(Δx2+Δx)f3

F 2 = 1 2 ( Δ x 2 − Δ x ) f 4 + ( 1 2 Δ x 2 − 3 2 Δ x + 1 ) f 2 + ( − Δ x 2 + 2 Δ x ) f 3 F_2=\frac{1}{2}(\Delta x^2-\Delta x)f_4+(\frac{1}{2}\Delta x^2-\frac{3}{2}\Delta x+1)f_2+(-\Delta x^2+2\Delta x)f_3 F2=21(Δx2Δx)f4+(21Δx223Δx+1)f2+(Δx2+x)f3

当 f点处于边缘位置时,如果接近 f2 ,则希望计算目标像素的像素值更接近 f2 的像素值,如果接近 f3,则希望计算目标像素的像素值更接近f3 的像素值。

对比 F 1 、 F 2 F1、F2 F1F2数值,差值越小表示相似度越大,则用其插值公式

2.2 垂直方向插值

接着,对中间图像进行垂直方向的插值计算,则采用对应方向的源像素插值计算得到目标像素值。

三、结论

该算法在一定程度上可以消除边缘模糊的现象,不会 出现锯齿,而且算法相对 简单,同时还增加了边缘信息的白适应保护功能,使得差值后的图像质量更高。同时没有使用外部存储器进行数据缓存,减少资源,并且缩短了一帧的延迟时间。

四、效果对比

仿真对比bicubic、二阶牛顿插值结果,放大系数1.5。二阶牛顿插值算法可有效改善边缘模糊和锯齿效应

bicubic结果如下:

bicubic结果

二阶牛顿插值结果如下:

二阶牛顿插值结果

测试代码路径:

https://github.com/AomanHao/ISP_Image_Interpolation/tree/master/Interpolation

参考文献

  • 《基于 FPGA的红外图像二阶牛顿插值算法的实现》
  • 牛顿插值法在图像处理中的运用

我的个人博客主页,欢迎访问

我的CSDN主页,欢迎访问

我的GitHub主页,欢迎访问

我的知乎主页,欢迎访问

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言 扫雷程序设计

目录 1.main函数 2.菜单打印menu函数 3.游戏game函数 4.宏定义 5.界面初始化 6.打印界面 7.设置雷 8.统计排查坐标周围雷的个数 9.排查雷 10.总代码 test.c代码 game.h代码 game.c代码 结语: 一个简单的扫雷游戏,通过宏定义可以修改行列的…

如何有效搭建在线培训知识库

在当今快速发展的教育行业,知识的更新速度日益加快,教育机构和企业需要为学员提供持续的学习资源和培训支持。在线培训知识库的搭建成为实现这一目标的重要手段。一个有效的在线培训知识库不仅能够帮助学员系统地学习和掌握知识,还能为教师和…

Android Audio基础(54)——数字音频接口 I2S、PCM(TDM) 、PDM

1. 概述 本文介绍的数字音频接口全部是硬件接口,是实际的物理连线方式,即同一个PCB板上IC芯片和IC芯片之间的通讯协议。 PCM、PDM也可以用于表示音频编码格式,。编码格式是指模拟信号数字化的方式。 I2S和PCM(TDM)接口传输的数据是PCM格式的音频数据。这两种协议是最为常见…

STM32之CAN通讯(十一)

STM32F407 系列文章 - CAN通讯(十一) 目录 前言 一、CAN 二、CAN驱动电路 三、CAN软件设计 1.CAN状态初始化 2.头文件相关定义 3.接收中断服务函数 4.用户层使用 1.用户层相关定义 2.发送数据 3.接收数据 1.查询方式处理 2.中断方式处理 3…

第31天:Web开发-PHP应用TP框架MVC模型路由访问模版渲染安全写法版本漏洞

#知识点 1、安全开发-框架技术-ThinkPHP 2、安全开发-框架安全-版本&写法 3、安全开发-ThinkPHP-代码审计案例 类别 组件/框架 说明 [Web框架] Laravel 现代化、功能全面的框架,适合大多数Web应用。 Symfony 高度模块化、功能强大的框架,适…

量子计算遇上人工智能:突破算力瓶颈的关键?

引言:量子计算遇上人工智能——突破算力瓶颈的关键? 在数字化时代的浪潮中,人工智能(AI)正以前所未有的速度改变着我们的生活,从语音助手到自动驾驶,从医学诊断到金融分析,无不彰显其…

英伟达 RTX 5090 显卡赋能医疗大模型:变革、挑战与展望

一、英伟达 RTX 5090 与 RTX 4090 技术参数对比 1.1 核心架构与制程工艺 在探讨英伟达 RTX 4090 与 RTX 5090 的差异时,核心架构与制程工艺无疑是最为关键的基础要素,它们从根本上决定了两款显卡的性能上限与应用潜力。 1.1.1 核心架构差异 RTX 4090…

Bash Shell的操作环境

目录 1、路径与指令搜寻顺序 2、bash的进站(开机)与欢迎信息:/etc/issue,/etc/motd (1)/etc/issue (2)/etc/motd 3、bash的环境配置文件 (1)login与non-…

homework 2025.01.07 math 6

1选择部分 二填空部分

(六)CAN总线通讯

文章目录 CAN总线回环测试第一种基于板载CAN测试第一步确认板载是否支持第二步关闭 CAN 接口将 CAN 接口置于非活动状态第三步 配置 CAN 接口第一步 设置 CAN 接口比特率第二步 设置 CAN 启用回环模式第三步 启用 CAN 接口 第四步 测试CAN总线回环捕获 CAN 消息发送 CAN 消息 第…

任务调度之Quartz(二):Quartz体系结构

1、Quartz 体系结构 由上一篇的Quartz基本使用可以发现,Quartz 主要包含一下几种角色: 1)Job:也可以认为是JobDtetail,表示具体的调度任务 2)Trigger:触发器,用于定义任务Job出发执行…

基于Springboot + vue实现的小型养老院管理系统

🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…

初学Linux电源管理

学习文档出处: 万字整理 | 深入理解Linux电源管理:万字整理 | 深入理解Linux电源管理-CSDN博客 电源管理 因为设备需要用电,而且设备中的各个硬件所需要的电压是不一样的。故计算机需要对硬件的电源状态管理。但是电能并不是免费的&#x…

React(二)——Admin主页/Orders页面/Category页面

文章目录 项目地址一、侧边栏1.1 具体实现 二、Header2.1 实现 三、Orders页面3.1 分页和搜索3.2 点击箭头显示商家所有订单3.3 页码按钮以及分页 四、Category页面4.1 左侧商品添加栏目4.2 右侧商品上传栏 五、Sellers页面六、Payment Request 页面(百万数据加载&a…

刚体变换矩阵的逆

刚体运动中的变换矩阵为: 求得变换矩阵的逆矩阵为: opencv应用 cv::Mat R; cv::Mat t;R.t(), -R.t()*t

IDEA中Maven依赖包导入失败报红的潜在原因

在上网试了别人的八个问题总结之后依然没有解决&#xff1a; IDEA中Maven依赖包导入失败报红问题总结最有效8种解决方案_idea导入依赖还是报红-CSDN博客https://blog.csdn.net/qq_43705131/article/details/106165960 江郎才尽之后突然想到一个原因&#xff1a;<dep…

UVM:uvm_component methods configure

topic UVM component base class uvm_config_db 建议使用uvm_config_db代替uvm_resource_db uvm factory sv interface 建议&#xff1a;uvm_config_db 以下了解 建议打印error

基于时间维度水平拆分的多 TiDB 集群统一数据路由/联邦查询技术的实践

导读 在大数据时代&#xff0c;金融行业面临着日益增长的数据量和复杂的查询需求&#xff0c;尤其是跨库、跨集群的场景。在这种背景下&#xff0c;如何在保证数据一致性、高可用性的同时&#xff0c;实现业务的快速扩展与高效查询&#xff0c;成为了企业数字化转型的关键挑战…

概率论 期末 笔记

第一章 随机事件及其概率 利用“四大公式”求事件概率 加法公式 减法 条件概率公式 全概率公式与贝叶斯公式 伯努利概型求概率 习题 推导 一维随机变量及其分布 离散型随机变量&#xff08;R.V&#xff09;求分布律 利用常见离散型分布求概率 连续型R.V相关计算 利用常见连续…