当前位置: 首页 > article >正文

【阅读笔记】基于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主页,欢迎访问

我的知乎主页,欢迎访问


http://www.kler.cn/a/467883.html

相关文章:

  • mongodb==安装prisma连接
  • 0基础跟德姆(dom)一起学AI 自然语言处理10-LSTM模型
  • 云原生监控与日志管理:确保云原生应用的可靠性与性能
  • 【LeetCode Hot100 二分查找】搜索插入位置、搜索二维矩阵、搜索旋转排序数组、寻找两个正序数组的中位数
  • django vue3实现大文件分段续传(断点续传)
  • ros常用命令记录
  • CSS——1.优缺点
  • 权限管理的方法
  • 微信小程序页面传参传对象
  • 特种作业操作证考试题库及答案(登高架设作业)
  • 功能篇:vue中的vuex使用例子
  • windows11(或centos7)安装nvidia显卡驱动、CUDA、cuDNN
  • Lucas-Kanade光流法详解
  • vue路由模式面试题
  • ffmpeg filter 滤镜命令
  • yolo目标检测之摄像头检测
  • vulkan从小白到专家——VulkanSwapChain
  • 《Rust权威指南》学习笔记(一)
  • Linux一些问题
  • Android 系统 `android.app.Application` 类的深度定制
  • Jellyfin播放卡顿,占CPU的解决方法
  • 数学常用术语作用reminder
  • 供应链系统设计-供应链中台系统设计(七)- 商品中心设计篇
  • 大白话拆解——多线程中关于死锁的一切(七)(已完结)
  • SpringBoot中常用的 Redis 命令实现
  • Linux Red Hat 7.9 Server安装GitLab