图像修复与重建——几何失真(畸变)的概念

一 几何失真(畸变)的概念

在实际的成像系统中,图像捕捉介质平面和物体平面之间不可避免地存在有一定的转角和倾斜角。转角对图像的影响是产生图像旋转,倾斜角的影响表现为图像发生投影变形。另外一种情况是由于摄像机系统本身的原因导致的镜头畸变。此外,还有由于物体本身平面不平整导致的曲面畸变如柱形畸变等。这些畸变统称为几何畸变。
光学系统、电子扫描系统失真而引起的斜视畸变、投影畸变、枕形、桶形畸变、混合畸变、柱面畸变等,都可能使图像产生几何特性失真,这些系统失真导致的常见的图像几何畸变如图所示:

在这里插入图片描述
几何畸变又可分为线性几何畸变和非线性几何畸变。通常情况下,线性几何畸变指缩放、平移、旋转等畸变。而非线性几何畸变是由成像面和物平面的倾斜、物平面本身的弯曲、光学系统的像差造成的畸变,表现为物体与实际的成像各部分比例失衡。
常见几何畸变退化问题的复原大多是基于成像系统,如模拟鱼眼和针孔系统进行摄像机标定,通过确定摄像机畸变参数对所获取图像进行后续校正和复原处理。其优点是一旦确立成像模型,便可以快速有效地根据模型参数对基本图像进行几何变换,从而实现复原。但通常情况下我们面临的图像其成像系统未知且多样化,因此,这种方法不适合于解决一般性无法预知模型的畸变退化。
比如由成像面不平整造成的曲面畸变。因此,另外一种常见的解决方法是多项式变换技术,其实质是利用数值分析的方法求解几何变换方程。其优点是不需要预先知道成像模型,对复杂曲面畸变能够进行校正和复原。缺点是运算量大,不适宜实时性较高系统,对多项式次数和控制点的选取要求严格,发生复原失控的概率很大,不适用于一些只存在投影变换和镜头畸变的图像。这里我们重点介绍基于多项式变换的几何校正方法,其基本流程是先建立几何校正的数学模型,比如针对畸变特点选择一次多项式或者二次多项式作为几何校正的数学模型;其次利用已知条件确定模型参数,通常以标准未畸变影像为参考,由用户在参考影像与畸变影像上选择控制点(同名点),从而解算出多项式系数,即确定出模型参数;最后根据模型对图像进行几何校正。通常由如下两步来完成:
(1)图像空间坐标变换(确定校正后图像中每个像素的空间坐标);首先建立图像像点坐标(行、列号)和物方(或参考图)对应点坐标间的映射关系,解求映射关系中的未知参数,然后根据映射关系对图像各个像素坐标进行校正;

(2)灰度内插(确定校正影像中每个像素的灰度值)
几何校正的坐标变换
实际工作中常以一幅图像为基准,去校正另一幅几何失真图像。通常设基准图像f(x,y)是利用没畸变或畸变较小的摄像系统获得的,而有较大几何畸变的图像用g(x´,y´)表示,下图是一种畸变情形。

在这里插入图片描述
设两幅图像几何畸变的关系能用解析式描述为
在这里插入图片描述
通常h1(x,y)和h2(x,y)可用多项式来近似
在这里插入图片描述
包含12 个未知数,至少需要6 个已知点来建立关系式,解求未知数。
几何校正方法可分为直接法和间接法两种。

(1) 直接法
利用若干已知点(就是通常所说的控制点)坐标,根据参考图像中像素坐标与校正后影像的像素坐标的对应关系,如下式所示,(x, y)为参考图像坐标,(x’, y’)为(x, y)对应的校正后影像坐标:

在这里插入图片描述
通过解求未知参数得到二者的对应关系;然后如上图实线箭头所示,从畸变图像出发,根据上述关系依次计算每个像素的校正坐标,同时把像素灰度值赋予对应像素,这样生成一幅校正图像。
该方法存在的一个问题是图像像素分布是不规则的,会出现像素挤压、疏密不均等现象,不能满足原始未畸变影像的要求,因此最后还需对不规则图像通过灰度内插生成规则的栅格图像。
(2) 间接法
先根据下式

在这里插入图片描述
在这里插入图片描述
对如图所示的畸变图像的四个角点a、b、c、d 进行坐标变换,获得a´、b´、c´、d´。由此确定校正图像的范围。再按下式
在这里插入图片描述
反求像点(x, y)在已知畸变图像上的坐标(x’, y’)。由于计算所得的 (x’, y’)坐标值一般不为整数,不会位于畸变图像像素中心,因而不能直接确定该点的灰度值,而只能在畸变图像上,由该像点周围的像素灰度值通过内插,求出该像素的灰度值,作为(x, y)点的灰度。按上述步骤获得校正图像。由于间接法内插灰度容易,所以一般采用间接法进行几何纠正。

二 灰度内插方法及其特点

常用的像素灰度内插法有最近邻元法、双线性内插法和三次内插法三种。
1.最近邻元法
在待求点的四邻像素中,将距离这点最近的相邻像素灰度赋给该待求点,如下图所示,十字点为计算所得坐标位置,其距离左上角给予红色标记的像素最近,因此,将该红色像素的灰度值赋给纠正后对应的像素。该方法最简单,效果尚佳,但校正后的图像有明显锯齿状,即存在灰度不连续性。

在这里插入图片描述
2.双线性内插法
双线性内插法是利用待求点四个邻像素的灰度在两个方向上作线性内插。如图,下面推导待求像素灰度值的计算式。

在这里插入图片描述
结合前面两个计算结果,得到上式,校正点像素灰度值为相邻四个像素的线性加权和,因此,称为线性内插该方法要比最近邻元法复杂,计算量大。但没有灰度不连续性的缺点,结果令人满意。它具有低通滤波性质,使高频分量受损,图像轮廓有一定模糊。

3.三次内插法
该方法利用三次多项式S(x)来逼近理论上的最佳插值函数sin(x)/x。其数学表达式为:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
红色像素为(x,y)像素坐标邻近原图像坐标(i,j),以该(i,j)为参考,取(x,y)周围16 个像素,它们的坐标以此为左上角(i-1,j-1),右上角(i-1,j+2),左下角(i+2,j-1),右下角(i+2,j+2).待求像素(x,y)的灰度值由其周围十六个点的灰度值加权内插得到。可推导出待求像素的灰度计算式如下:f(x,y)=A‧B ‧ C其中
在这里插入图片描述
u,v 为内插点距离其最邻近像素f (i,j) 的距离该算法计算量最大,但内插效果最好,精度最高。下图给出了三种不同像素灰度内插方法的效果,可以看出,三次内插法效果最好,最平滑
在这里插入图片描述

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

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

相关文章

Spark的集群环境部署

一、Standalone集群 1.1、架构 架构:普通分布式主从架构 主:Master:管理节点:管理从节点、接客、资源管理和任务 调度,等同于YARN中的ResourceManager 从:Worker:计算节点:负责利…

使用 Python 的 BeautifulSoup 与 Flask/Flask-RESTful 集成进行数据爬取和 API 构建

使用 Python 的 BeautifulSoup 与 Flask/Flask-RESTful 集成进行数据爬取和 API 构建 在现代 Web 开发中,许多应用需要从其他网页提取数据并将其呈现为 API 服务。Python 的 BeautifulSoup 是一个流行的 HTML 解析库,用于从网页抓取和解析数据&#xff…

江协科技STM32学习- P28 USART串口数据包

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

Verilog实现的莫尔斯电码发生器

莫尔斯或者摩尔斯电码(Morse Code),发明于1837年(另有一说是1836年),通过不同的排列顺序来表达不同的英文字母、数字和标点符号,在这里作一简单处理,仅产生点(Dit)和划(Dah),时长在0.25秒之内为点,超过为划…

PFC前端电路 -- EMI电路

一、EMI(Electromagnetic Interference)抗干扰电路 在PFC(功率因数校正)电路中,EMI(电磁干扰)滤波电路是至关重要的组成部分。EMI滤波电路的主要功能是抑制电磁干扰,以确保电源的电磁兼容性(EM…

网关三问:为什么微服务需要网关?什么是微服务网关?网关怎么选型?

文章整体介绍 本文旨在解答关于微服务网关的三个核心问题: 1)为什么需要网关?也即在何种场景下应采用微服务网关以优化系统架构; 2)什么是微服务网关?主要讲构成微服务网关的关键能力,包括但…

【深度学习】实验 — 动手实现 GPT【三】:LLM架构、LayerNorm、GELU激活函数

【深度学习】实验 — 动手实现 GPT【三】:LLM架构、LayerNorm、GELU激活函数 模型定义编码一个大型语言模型(LLM)架构 使用层归一化对激活值进行归一化LayerNorm代码实现scale和shift 实现带有 GELU 激活的前馈网络测试 模型定义 编码一个大…

基于vue框架的的考研网上辅导系统ao9z7(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:学生,公告信息,课程分类,考研资料,考研视频,课程信息,院校建议,教师 开题报告内容 基于Vue框架的考研网上辅导系统开题报告 一、研究背景与意义 随着高等教育的普及和就业竞争的加剧,考研已成为众多大学生提升学历、增强就…

GPU 学习笔记二:GPU单机多卡组网和拓扑结构分析(基于A100的单机多卡拓扑结构分析)

文章目录 一、物理拓扑结构A100讲解1.1 单机多卡拓扑结构 二、术语和基础技术介绍2.1 带宽单位2.2 PCIe及PCIe Switch2.3 NVLink2.4 网卡2.5 带宽瓶颈分析2.6 HBM2.7 CPU/GPU 三、其他典型物理拓扑3.1 H100/H800拓扑分析 防止遗忘和后续翻找的麻烦,记录下平时学到和…

Webserver(2.6)有名管道

目录 有名管道有名管道使用有名管道的注意事项读写特性有名管道实现简单版聊天功能拓展:如何解决聊天过程的阻塞 有名管道 可以用在没有关系的进程之间,进行通信 有名管道使用 通过命令创建有名管道 mkfifo 名字 通过函数创建有名管道 int mkfifo …

超分子水凝胶与细胞的互动:现状、难题与未来蓝图

大家好!今天来了解超分子水凝胶文章——《Using Chemistry To Recreate the Complexity of the Extracellular Matrix: Guidelines for Supramolecular Hydrogel–Cell Interactions》发表于《Journal of the American Chemical Society》。在再生医学的舞台上&…

逗号运算符应用举例

在main.cpp里输入程序如下&#xff1a; #include <iostream> //使能cin(),cout(); #include <iomanip> //使能setbase(),setfill(),setw(),setprecision(),setiosflags()和resetiosflags(); //setbase( char x )是设置输出数字的基数,如输出进制数则用set…

分类算法——决策树 详解

决策树的底层原理 决策树是一种常用的分类和回归算法&#xff0c;其基本原理是通过一系列的简单决策&#xff0c;将数据集划分为多个子集&#xff0c;从而实现分类。决策树的核心思想是通过树形结构表示决策过程&#xff0c;节点代表特征&#xff0c;边代表决策&#xff0c;叶子…

openGauss开源数据库实战十二

文章目录 任务十二 openGauss逻辑结构:表管理任务目标实施步骤一、准备工作二、创建表1.新建表默认保存在public模式中2.在一个数据库的不同模式下创建表3.创建表的时候定义约束4.创建表时使用自增数据类型5.使用现有的表创建新表 三、查看表的信息1.在gsql中查看表的定义2.查看…

一文详解精细化工行业持续增长的策略与路径解析

随着全球经济的快速发展和科技的不断进步&#xff0c;精细化工行业正面临着前所未有的挑战和机遇。在这个过程中&#xff0c;数字化转型已成为推动行业持续增长的关键因素。精细化工行业&#xff0c;作为化学工业的一个重要分支&#xff0c;其产品广泛应用于医药、农药、涂料、…

医疗器械设备语音ic芯片方案-选型大全

在医疗设备领域&#xff0c;深圳唯创知音提供了多款适用的语音IC产品&#xff0c;以下是其中几款较为常见的推荐&#xff1a; 一、WT588F02X-8S 特点&#xff1a; 1&#xff1a;低成本人机交互语音方案&#xff0c;仅需嵌入在产品中&#xff0c;提升医疗设备智能化水平。 2&…

微服务实战系列之玩转Docker(十七)

导览 前言Q&#xff1a;如何实现etcd数据的可视化管理一、创建etcd集群1. 节点定义2. 集群成员2.1 docker ps2.2 docker exec2.3 etcdctl member list 二、发布数据1. 添加数据2. 数据共享 三、可视化管理1. ETCD Keeper入门1.1 简介1.2 安装1.2.1 定义compose.yml1.2.2 启动ke…

Spring Cloud +UniApp智慧工地源码,智慧工地综合解决方案,建筑工程云平台源码

Spring Cloud UniApp智慧工地源码&#xff0c;智慧工地全套源代码包含&#xff1a;PC端大屏端移动端 智慧工地解决方案以工程建设现场管理需求为主线&#xff0c;以AI、物联网、BIM技术为手段&#xff0c;对施工现场进行立体化、全方位、全时段管理&#xff0c;实现规范施工管…

Python 从入门到实战43(Pandas数据结构)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;可以熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们学习了NumPy数组操作的相关基础知识。今天学习一下pa…

数字信号处理Python示例(1)使用Python生成正弦信号

文章目录 前言一、连续时间周期信号二、正弦波三、使用Python生成正弦信号的步骤内置库说明 四、完整的python代码与运行结果1.完整的python代码2、运行结果 五、总结 前言 介绍如何使用python生成正弦信号&#xff0c;给出详细步骤和完整的python代码和运行结果。 一、连续时…