【阅读笔记】基于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)(x−x0)+2!Δ2f(x0)(x−x0)2+...+n!Δ2f(x0)(x−x0)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)(x−x0)+2!Δ2f(x0)(x−x0)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(t−1)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(t−1)+2!Δ2f2(t−1)(t−2)

其中, Δ 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Δx2−23Δx+1)f2+(−Δx2+2Δx)f3

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

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

2.2 垂直方向插值

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

三、结论

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

四、效果对比

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

bicubic结果如下:

二阶牛顿插值结果如下:

测试代码路径:

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

参考文献


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

我的CSDN主页,欢迎访问

我的GitHub主页,欢迎访问

我的知乎主页,欢迎访问

相关推荐
黎阳之光1 小时前
视频孪生智护供水生命线:黎阳之光赋能医疗与园区水务高质量升级
运维·物联网·算法·安全·数字孪生
Black蜡笔小新1 小时前
自动化AI算法训练服务器DLTM制造业AI质检工作站助力制造业实现AI智检
人工智能·算法·自动化
嵌入式小能手2 小时前
飞凌嵌入式ElfBoard-进程间的通信之命名管道
linux·服务器·算法
AOwhisky2 小时前
Ceph系列第六期:Ceph 文件系统(CephFS)精讲
linux·运维·网络·笔记·ceph
萤萤七悬2 小时前
【Python笔记】AI帮实现CLI工具-使用argparse.ArgumentParser接收命令参数
开发语言·笔记·python
啦哈拉哈2 小时前
Leetcode题解记录-hot100(81-100)
算法·leetcode·职场和发展
csdn_aspnet2 小时前
Java 霍尔分区算法(Hoare‘s Partition Algorithm)
java·开发语言·算法
诸葛务农2 小时前
道路行驶条件下电动汽车永磁电机的有效使用寿命及永磁体的失效和回收再利用(下)
java·开发语言·算法
snow@li2 小时前
AI:理解 大数据、算法、算力、电力、生成式AI、token 之间的关系
大数据·人工智能·算法
小智老师PMP3 小时前
零基础能不能考PMP?零基础专属学习路径+全套扶持体系
学习·算法·职场和发展·软件工程·求职招聘·敏捷流程