【阅读笔记】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=01l=01α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 α=R1r

其中,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,2j1+α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主页,欢迎访问

我的知乎主页,欢迎访问

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows安装Miniconda和PySide6以及配置PyCharm

目录 1. 选择Miniconda 2. 下载Miniconda 3. 安装Miniconda 4. 在base环境下创建pyside6环境 5. 安装pyside6环境 6. 配置PyCharm环境 7. 运行第一个程序效果 1. 选择Miniconda 选择Miniconda而没有选择Anaconda&#xff0c;是因为它是一个更小的Anaconda发行版&#x…

Linux之内存管理前世今生(一)

一个程序&#xff08;如王者荣耀&#xff09;平常是存储在硬盘上的&#xff0c;运行时才把这个程序载入内存&#xff0c;CPU才能执行。 问题&#xff1a; 这个程序载入内存的哪个位置呢&#xff1f;载入内核所在的空间吗&#xff1f;系统直接挂了。 一、虚拟内存 1.1 内存分…

Java基于SSM框架的互助学习平台小程序【附源码、文档】

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

【Rust自学】16.3. 共享状态的并发

喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 16.3.1. 使用共享来实现并发 还记得Go语言有一句名言是这么说的&#xff1a;Do not commun…

Python 数据分析 - Matplotlib 绘图

Python 数据分析 - Matplotlib 绘图 简介绘图折线图单线多线子图 散点图直方图条形图纵置横置多条 饼图 简介 Matplotlib 是 Python 提供的一个绘图库&#xff0c;通过该库我们可以很容易的绘制出折线图、直方图、散点图、饼图等丰富的统计图&#xff0c;安装使用 pip install…

Java进阶(二):Java设计模式

目录 设计模式 一.建模语言 二.类之间的关系 1.依赖关系 2.关联关系 3.聚合关系 4.组合关系 5.继承关系 6.实现关系 三.面向对象设计原则 单一职责原则 开闭原则 里氏替换原则 依赖倒置 接口隔离原则 迪米特原则 组合/聚合(关联关系)复用原则 四.23种设计模式…

双层Git管理项目,github托管显示正常

双层Git管理项目&#xff0c;github托管显示正常 背景 在写React项目时&#xff0c;使用Next.js,该项目默认由git托管。但是我有在项目代码外层记笔记的习惯&#xff0c;我就在外层使用了git托管。 目录如下 code 层内也有.git 文件&#xff0c;对其托管。 我没太在意&…

群晖docker获取私有化镜像http: server gave HTTP response to HTTPS client].

群晖docker获取私有化镜像提示http: server gave HTTP response to HTTPS clien 问题描述 层级时间用户事件Information2023/07/08 12:47:45cxlogeAdd image from xx.xx.31.240:1923/go-gitea/gitea:1.19.3Error2023/07/08 12:47:48cxlogeFailed to pull image [Get "http…

机器学习:支持向量机

支持向量机&#xff08;Support Vector Machine&#xff09;是一种二类分类模型&#xff0c;其基本模型定义为特征空间上的间隔最大的广义线性分类器&#xff0c;其学习策略便是间隔最大化&#xff0c;最终可转化为一个凸二次规划问题的求解。 假设两类数据可以被 H x : w T x…

相互作用感知的蛋白-小分子对接模型 - Interformer 评测

Interformer 是一个应用于分子对接和亲和力预测的深度学习模型&#xff0c;基于 Graph-Transdormer 架构的模型&#xff0c;利用相互作用&#xff08;氢键、疏水&#xff09;感知的混合密度网络&#xff08;interaction-aware mixture den sity network&#xff0c; MDN&#x…

如果我想设计一款复古风格的壁纸,应该选什么颜色?

设计复古风格的壁纸时&#xff0c;选择合适的颜色是营造怀旧和经典氛围的关键。复古风格通常使用一些温暖、柔和且带有岁月痕迹的色调。以下是一些适合复古风格壁纸的颜色选择和搭配建议&#xff1a; 一、复古风格的主色调 棕色系&#xff1a; 特点&#xff1a;棕色是复古风格的…

AI 浪潮席卷中国年,开启科技新春新纪元

在这博主提前祝大家蛇年快乐呀&#xff01;&#xff01;&#xff01; 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;其影响力已经渗透到社会生活的方方面面。在中国传统节日 —— 春节期间&#xff0c;AI 技术也展现出了巨大的潜力&#xff0c;为中国年带…

WPS数据分析000007

目录 一、分列 智能分列 出生日期 数值转换 公式不运算 二、数据对比 离职员工 新入职员工 都在职的员工 三、合并计算 四、拆分表格 合并表格 一、分列 智能分列 出生日期 数据求和 文本型数字左对齐&#xff1b;数值型数字右对齐 数值转换 方式一&#xff1a; 方…

fps一些内容添加

1 增强输入要点记录 输入 &#xff1a;输入值的类型 布尔 1d&#xff0c;2d&#xff0c;3d 映射&#xff1a;就是确定按键输入键位&#xff0c;输入类型&#xff0c;和一些触发器&#xff08;按键方式&#xff09;修改器&#xff08;对输出值进行修改&#xff09; 基本的&am…

深入探讨数据库索引类型:B-tree、Hash、GIN与GiST的对比与应用

title: 深入探讨数据库索引类型:B-tree、Hash、GIN与GiST的对比与应用 date: 2025/1/26 updated: 2025/1/26 author: cmdragon excerpt: 在现代数据库管理系统中,索引技术是提高查询性能的重要手段。当数据量不断增长时,如何快速、有效地访问这些数据成为了数据库设计的核…

【反悔堆】【hard】力扣871. 最低加油次数

汽车从起点出发驶向目的地&#xff0c;该目的地位于出发位置东面 target 英里处。 沿途有加油站&#xff0c;用数组 stations 表示。其中 stations[i] [positioni, fueli] 表示第 i 个加油站位于出发位置东面 positioni 英里处&#xff0c;并且有 fueli 升汽油。 假设汽车油…

知识库建设对提升团队协作与创新能力的影响分析

内容概要 在当今快速变革的商业环境中&#xff0c;知识库建设的重要性愈发凸显。它不仅是信息存储的载体&#xff0c;更是推动组织内部沟通与协作的基石。通过系统整理与管理企业知识&#xff0c;团队成员能够便捷地访问相关信息&#xff0c;使得协作过程更为流畅&#xff0c;…

SpringBoot-Vue整合百度地图

文章目录 一、Spring Boot整合百度地图的步骤1. 申请百度地图的AK值2. 创建实体类3. 创建Controller层4. 前端集成百度地图4.1 在Vue项目中安装百度地图Vue组件库4.2 在Vue项目中引入百度地图API4.3 创建地图组件 二、实现功能说明1. 前端部分&#xff1a;2. 后端部分&#xff…

【Docker】快速部署 Nacos 注册中心

【Docker】快速部署 Nacos 注册中心 引言 Nacos 注册中心是一个用于服务发现和配置管理的开源项目。提供了动态服务发现、服务健康检查、动态配置管理和服务管理等功能&#xff0c;帮助开发者更轻松地构建微服务架构。 步骤 拉取镜像 docker pull nacos/nacos-server启动容器…

RAG技术:通过向量检索增强模型理解与生成能力

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…