【图像处理】图片的前向映射与后向映射

参考博客:https://blog.csdn.net/fengdu78/article/details/106369059

一、前向映射与后向映射

1.1 前向映射

图像的几何变换就是建立一种源图像像素与变换后的图像像素之间的映射关系。也正是通过这种映射关系可以知道原图像任意像素点变换后的坐标,或者是变换后的图像在原图像的坐标位置等。

用简单的数学公式可以表示为:

( x y ) = ( U ( u , v ) V ( u , v ) ) \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} U(u, v) \\ V(u, v) \end{pmatrix} (xy)=(U(u,v)V(u,v))
f ( u , v ) = ( x , y ) f(u, v) = (x, y) f(u,v)=(x,y)

其中,x,y代表输出图像像素的坐标,u,v表示输入图像的像素坐标,而U,V表示的是两种映射关系,f是将点(u,v)映射到(x,y)的映射关系,需要说明的是,映射关系可以是线性关系,也可以是多项式关系。

从上面的映射关系可以看到,只要给出了图像上任意的像素坐标,都能够通过对应的映射关系获得几何变换后的像素坐标。

这种将输入映射到输出的过程我们称之为 "向前映射"。但是在实际应用中,向前映射会出现如下几个问题:

  1. 浮点数坐标,如(1,1)映射为(0.5,0.5),显然这是一个无效的坐标,这时我们需要使用插值算法进行进一步处理。
  2. 可能会有多个像素坐标映射到输出图像的同一位置,也可能输出图像的某些位置完全没有相应的输入图像像素与它匹配,也就是没有被映射到,造成有规律的空洞(黑色的蜂窝状)。

什么是有规律的空洞呢?下面举个例子大家就明白了

  • 可以从下图知道:原图经过前向映射旋转了30度后,输出图像中有规律的空洞(黑色的蜂窝状),那这些空洞是这么来的呢?
  • 可以看到,旋转三十度后,输出图像两个红色的点被映射到同一个坐标,而没有点被映射到绿色问号处,这就造成了间隙和重叠,导致出现蜂窝状空洞。

1.2 向后映射

为了克服前向映射的这些不足,因此引进了"后向映射",它的数学表达式为:

f − 1 ( x , y ) = ( u , v ) f^{-1}(x,y) = (u,v) f−1(x,y)=(u,v)

可以看出,后向映射与前向映射刚好相反,它是由输出图像的像素坐标反过来推算该像素为在源图像中的坐标位置。这样,输出图像的每个像素值都能够通过这个映射关系找到对应的为止。而不会造成上面所提到的映射不完全和映射重叠的现象。

  • 在实际处理中基本上都运用向后映射来进行图像的几何变换。但是反向映射也有一个和前向映射一样的问题, 就是映射后会有小数,需通过插值方法决定输出图像该位置的值,OpenCV默认为双线性插值。

  • 在使用过程中,如果在一些不改变图像大小的几何变换中,向前映射还是十分有效的,向后映射主要运用在图像的旋转的缩放中,因为这些几何变换都会改变图像的大小。

更多资料:https://github.com/0voice

相关推荐
恋猫de小郭7 小时前
AI 正在造就你的「认知卸载」,但是时代如此
前端·人工智能·ai编程
飞哥数智坊15 小时前
我的“龙虾”罢工了!正好对比下GLM、MiniMax、Kimi 3家谁更香
人工智能
风象南16 小时前
很多人说,AI 让技术平权了,小白也能乱杀老师傅 ?
人工智能·后端
董董灿是个攻城狮17 小时前
大模型连载1:了解 Token
人工智能
RoyLin19 小时前
沉睡三十年的标准:HTTP 402、生成式 UI 与智能体原生软件的时代
人工智能
needn21 小时前
TRAE为什么要发布SOLO版本?
人工智能·ai编程
毅航21 小时前
自然语言处理发展史:从规则、统计到深度学习
人工智能·后端
前端付豪1 天前
LangChain链 写一篇完美推文?用SequencialChain链接不同的组件
人工智能·python·langchain
ursazoo1 天前
写了一份 7000字指南,让 AI 帮我消化每天的信息流
人工智能·开源·github
_志哥_1 天前
Superpowers 技术指南:让 AI 编程助手拥有超能力
人工智能·ai编程·测试