【阅读笔记】New Edge Diected Interpolation,NEDI算法,待续
一、概述
由Li等提出的新的边缘指导插值(New Edge—Di-ected Interpolation,NEDI)算法是一种具有良好边缘保持效果的新算法,它利用低分辨率图像与高分辨率图像的局部协方差问的几何对偶性来对高分辨率图像进行自适应插值。
2001年Xin Li和M.T. Orchard提出了一种针对自然图像的边缘定向插值算法(New edge-directed interpolation)。其基本思想是首先根据低分辨率图像估计局部协方差系数,然后根据低分辨率协方差和高分辨率协方差之间的几何对偶性,使用这些协方差估计来以更高分辨率调整内插。仿真结果表明,这种新插值算法大大提高了插值图像的质量。2006年Lei Zhang和Xiaolin Wu通过定向滤波和数据融合提出了一种新的边缘引导非线性插值技术。 对于要内插的像素,在两个正交方向上定义两个观察组,并且每个组产生像素值的估计。 通过线性最小均方误差估计(LMMSE)技术将这些方向的估计值融合为更稳健的估计值,并使用两个观测集的统计量。 他们还提出了基于LMMSE的插值算法的简化版本,以降低计算成本而不牺牲很多插值性能。
NEDI算法与传统线性插值算法相比避免了由于跨越边缘插值而引入的边缘细节退化现象,显著提高了图像的视觉质量,但是由于迭代过程可能出现的错误会导致放大图像边缘噪声仍然比较明显,而且算法具有较高的复杂度,不适合硬件实现和图像实时处理。
二、算法思想
NEDI算法的基本思想是先计算低分辨率图像各像素点的局部协方差系数,再利用低分辨率与高分辨率协方差间的几何对偶性,来计算高分辨率图像中需要插入的像素点的值。
三、算法原理
设放大倍率为2,低分辨率图像X的矩阵大小为H×W,相应的高分辨率图像Y矩阵大小为2H×2W,则 Y 2 i , 2 j = X i , j Y_{2i,2j}=X_{i,j} Y2i,2j=Xi,j。
插值限制在4个方向,即该点在高分辨率栅格中,对角线方向最近的4个像素点,如下图所示,求黑点 Y 2 i + 1 , 2 j + 1 Y_{2i+1,2j+1} Y2i+1,2j+1则有:

Y ^ 2 i + 1 , 2 j + 1 = ∑ k = 0 1 ∑ l = 0 1 α 2 k + l Y 2 ( i + k ) , 2 ( j + l ) \hat Y_{2i+1,2j+1}= \sum_{k=0}^{1} \sum_{l=0}^{1} \alpha_{2k+l}Y_{2(i+k),2(j+l)} Y^2i+1,2j+1=k=0∑1l=0∑1α2k+lY2(i+k),2(j+l)
其中,放大倍数不同,k、l数值不同,步进数值为1/放大倍数。
因为 Y 2 i , 2 j = X i , j Y_{2i,2j}=X_{i,j} Y2i,2j=Xi,j,所以可以通过上公式插值出 Y 2 i + 1 , 2 j + 1 Y_{2i+1,2j+1} Y2i+1,2j+1
现在得到4个对角线的最近像素,假设四个邻像素为一个局部平稳的高斯过程 ,由经典 Wiener滤波理论可知,最优的 MMSE(Minimum MeansSquare Error)线性插值系数计算公式如下:
α = R − 1 r \alpha=R^{-1}r α=R−1r
其中,r表示在高分辨率图像中的局部协方差
R = [ R k l ] ( 0 < = k , l < = 3 ) r = [ R k ] ( 0 < = k < = 3 ) R=[R_{kl}](0<=k,l<=3)\\ r=[R_{k}](0<=k<=3) R=[Rkl](0<=k,l<=3)r=[Rk](0<=k<=3)
高分辨率图像中的 R k l R_{kl} Rkl, r k r_k rk和低分辨率的 R ^ k l \hat R_{kl} R^kl, r ^ k \hat r_k r^k具有几何上的对偶性。即 R k l R_{kl} Rkl, R ^ k l \hat R_{kl} R^kl在不同的分辨率以相同的方向分别链接一对像素,可以用后者估计前者。
低分辨率上协方差系数可采用标准方法在一个局部模板(大小为 MXM)中计算得到:
R ^ = 1 M 2 C C T r ^ = 1 M 2 C y \hat R=\frac{1}{M^2}CC^T \\ \hat r=\frac{1}{M^2}Cy R^=M21CCTr^=M21Cy
其中, y = [ y 1 , . . . y M 2 ] y=[y_1,...y_{M^2}] y=[y1,...yM2]是一个包含MxM个点像素的数值向量,这些像素包含在一个局部模板内;数值矩阵C大小 4 M 2 4M^2 4M2,第k列向量为 y k y_k yk对角线方向的最近邻4点像素值,得到
α = ( C C T ) − 1 ( C y ) \alpha=(CC^T)^{-1}(Cy) α=(CCT)−1(Cy)
于是,计算每一个坐标(2i+1)(2j+1)的像素 Y 2 i + 1 , 2 j + 1 Y_{2i+1,2j+1} Y2i+1,2j+1的最优插值权重 α \alpha α。
于是 Y i , j ( m o d ( i + j , 2 ) = 0 ) Y_{i,j}(mod(i+j,2)=0) Yi,j(mod(i+j,2)=0)的估算公式如下:
Y ^ 2 i + 1 , 2 j + 1 = α 0 Y 2 i , 2 j + α 1 Y 2 i + 1 , 2 j + α 2 Y 2 i + 2 , 2 j + 2 + α 3 Y 2 i , 2 j + 2 \hat Y_{2i+1,2j+1}= \alpha_{0}Y_{2i,2j}+\alpha_{1}Y_{2i+1,2j}+\alpha_{2}Y_{2i+2,2j+2}+\alpha_{3}Y_{2i,2j+2} Y^2i+1,2j+1=α0Y2i,2j+α1Y2i+1,2j+α2Y2i+2,2j+2+α3Y2i,2j+2
于是 Y i , j ( m o d ( i + j , 2 ) = 1 ) Y_{i,j}(mod(i+j,2)=1) Yi,j(mod(i+j,2)=1)可以用 Y i , j ( m o d ( i + j , 2 ) = 1 ) Y_{i,j}(mod(i+j,2)=1) Yi,j(mod(i+j,2)=1)估计,公式如下:
Y ^ 2 i + 1 , 2 j = α 0 Y 2 i , 2 j + α 1 Y 2 i + 1 , 2 j − 1 + α 2 Y 2 i + 2 , 2 j + 2 + α 3 Y 2 i , 2 j + 2 \hat Y_{2i+1,2j}= \alpha_{0}Y_{2i,2j}+\alpha_{1}Y_{2i+1,2j-1}+\alpha_{2}Y_{2i+2,2j+2}+\alpha_{3}Y_{2i,2j+2} Y^2i+1,2j=α0Y2i,2j+α1Y2i+1,2j−1+α2Y2i+2,2j+2+α3Y2i,2j+2
上述的 Y i , j ( m o d ( i + j , 2 ) = 1 ) Y_{i,j}(mod(i+j,2)=1) Yi,j(mod(i+j,2)=1)和 Y i , j ( m o d ( i + j , 2 ) = 0 ) Y_{i,j}(mod(i+j,2)=0) Yi,j(mod(i+j,2)=0)计算相似,二者只相
差一个伸缩系数 2 1 / 2 2^{1/2} 21/2和旋转系数 π / 4 \pi/4 π/4,所以只需少量改动就可以。
以上是算法原理推导,大概理解一下就行,主要看算法步骤。
四、算法步骤
使用经典NEDI算法将图像放大两倍需要两个步骤:
第l步:插出原始四个像素的中心点(2i+1.2j+1),如下图所示。

第2步:原始像素和第一步的插值像素的基础上,再插出水平(和垂直方向上的像素(2i+1,2j)、(2i,2j+1)、(2i+1,2j+2)、(2i+2,2j+1),如下图所示。

而当图像被放大4倍时,还要重复同样的过程,由于这一次所使用的像素数日是之前所需的4倍,所以计算量将成指数增长。另外,由于引入迭代运算,如果某一个环节中产生了误差,这个误差将会传递到下一次插值,从而导致图像的插值错误。
优点:
根据统计信息进行插值,细节保持较好
缺点:
算法复杂,计算量大,运算速度较慢
觉得本文对您有一点帮助,欢迎讨论、点赞、收藏,您的支持激励我多多创作。
我的个人博客主页,欢迎访问
我的CSDN主页,欢迎访问
我的GitHub主页,欢迎访问
我的知乎主页,欢迎访问
相关文章:
【阅读笔记】New Edge Diected Interpolation,NEDI算法,待续
一、概述 由Li等提出的新的边缘指导插值(New Edge—Di-ected Interpolation,NEDI)算法是一种具有良好边缘保持效果的新算法,它利用低分辨率图像与高分辨率图像的局部协方差问的几何对偶性来对高分辨率图像进行自适应插值。 2001年Xin Li和M.T. Orchard…...
编程题-最长的回文子串(中等)
题目: 给你一个字符串 s,找到 s 中最长的回文子串。 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。示例 2: 输入:s &…...
Versal - 基础3(AXI NoC 专题+仿真+QoS)
目录 1. 简介 2. 示例 2.1 示例说明 2.2 创建项目 2.2.1 平台信息 2.2.2 AXI NoC Automation 2.2.3 创建时钟和复位 2.3 配置 NoC 2.4 配置 AXI Traffic 2.5 配置 Memory Size 2.6 Validate BD 2.7 添加观察信号 2.8 运行仿真 2.9 查看结果 2.9.1 整体波形 2.9…...
知识库建设对提升团队协作与创新能力的影响分析
内容概要 在当今快速变革的商业环境中,知识库建设的重要性愈发凸显。它不仅是信息存储的载体,更是推动组织内部沟通与协作的基石。通过系统整理与管理企业知识,团队成员能够便捷地访问相关信息,使得协作过程更为流畅,…...
Java 实现Excel转HTML、或HTML转Excel
Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,以便更好地利用和展示数据。本文将介绍如何通过 Java 实现 E…...
stack 和 queue容器的介绍和使用
1.stack的介绍 1.1stack容器的介绍 stack容器的基本特征和功能我们在数据结构篇就已经详细介绍了,还不了解的uu, 可以移步去看这篇博客哟: 数据结构-栈数据结构-队列 简单回顾一下,重要的概念其实就是后进先出,栈在…...
云计算与虚拟化技术讲解视频分享
互联网各领域资料分享专区(不定期更新): Sheet 前言 由于内容较多,且不便于排版,为避免资源失效,请用手机点击链接进行保存,若链接生效请及时反馈,谢谢~ 正文 链接如下(为避免资源失效&#x…...
python flask 使用 redis写一个例子
下面是一个使用Flask和Redis的简单例子: from flask import Flask from redis import Redisapp Flask(__name__) redis Redis(hostlocalhost, port6379)app.route(/) def hello():# 写入到Redisredis.set(name, Flask Redis Example)# 从Redis中读取数据name re…...
深入解析 Linux 内核内存管理核心:mm/memory.c
在 Linux 内核的众多组件中,内存管理模块是系统性能和稳定性的关键。mm/memory.c 文件作为内存管理的核心实现,承载着页面故障处理、页面表管理、内存区域映射与取消映射等重要功能。本文将深入探讨 mm/memory.c 的设计思想、关键机制以及其在内核中的作用,帮助读者更好地理…...
跟我学C++中级篇——64位的处理
一、计算机的发展 计算机从二进制为基础开始描述整个世界,但正如现实世界一样,十进制为主的世界也会有万千百概念。所以在实际的应用中,会出现32位和64位的计算机系统。当然,前面还有过16位、8位和4位等,以后还可以会…...
指针的介绍2后
1.二级指针 1.1二级指针的介绍 二级指针是指向指针的指针 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>int main() {int a 100;int* pa &a;int** ppa &pa;printf("a %d\n", a);printf("&a(pa) %p\n", pa);prin…...
Linux 学习笔记__Day3
十八、设置虚拟机的静态IP 1、VMware的三种网络模式 安装VMware Workstation Pro之后,会在Windows系统中虚拟出两个虚拟网卡,如下: VMware提供了三种网络模式,分别是:桥接模式(Bridged)、NAT…...
Ubuntu x64下交叉编译ffmpeg、sdl2到目标架构为aarch64架构的系统(生成ffmpeg、ffprobe、ffplay)
一、编译SDL2-2.0.9 (1), ./configure --prefix/home/z/Desktop/sdl2 --enable-sharedyes --enable-nasmno --enable-audiono --enable-ossno --enable-alsano --enable-alsa-sharedno --enable-pulseaudiono --enable-pulseaudio-sharedno …...
【时时三省】(C语言基础)文件的随机读写
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 fseek 根据文件指针的位置和偏移量来定位文件指针 示例: 这个输出的就是ade seek_cur的意思是从当前偏移量 2就是从a往后偏移两个就是d 偏移量 SEEK_CUR…...
HPO3:提升模型性能的高效超参数优化工具
引言 在当今快速发展的数据科学和机器学习领域中,超参数优化(Hyperparameter Optimization, HPO)是构建高性能模型不可或缺的一环。为了简化这一复杂过程,恒通网络科技团队推出了HPO3模块——一个专为Python开发者设计的强大库&a…...
【Docker】Docker入门了解
文章目录 Docker 的核心概念Docker 常用命令示例:构建一个简单的 C 应用容器1. 创建 C 应用2. 创建 Dockerfile3. 构建镜像4. 运行容器 Docker 优势学习 Docker 的下一步 **一、Docker 是什么?****为什么 C 开发者需要 Docker?** **二、核心概…...
AIGC(生成式AI)试用 19 -- AI Agent
AI Agent:自主完成特定目标任务。 AI Agent:以大语言模型为大脑驱动的系统,具备自主理解、感知、规划、记忆和使用工具的能力,能够自动化执行完成复杂任务的系统。AI Agent不同于传统的人工智能,它具备通过独立思考、调…...
LeetCode:70. 爬楼梯
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的…...
《Trustzone/TEE/安全从入门到精通-标准版》
CSDN学院课程连接:https://edu.csdn.net/course/detail/39573 讲师介绍 拥有 12 年手机安全、汽车安全、芯片安全开发经验,擅长 Trustzone/TEE/ 安全的设计与开发,对 ARM 架构的安全领域有着深入的研究和丰富的实践经验,能够将复杂的安全知识和处理器架构知识进行系统整…...
2025神奇的数字—新年快乐
2025年,一个神奇的数字,承载着数学的奥秘与无限可能。它是45的平方(45),上一个这样的年份是1936年(44),下一个则是2116年(46),一生仅此一次。2025…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
