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

参考博客: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

相关推荐
Akamai中国7 小时前
AI 边缘计算:决胜未来
人工智能·云计算·边缘计算·云服务
陈增林7 小时前
基于PyQt5的AI文档处理工具
人工智能
BeingACoder7 小时前
【SAA】SpringAI Alibaba学习笔记(二):提示词Prompt
java·人工智能·spring boot·笔记·prompt·saa·springai
Acrelhuang7 小时前
覆盖全场景需求:Acrel-1000 变电站综合自动化系统的技术亮点与应用
大数据·网络·人工智能·笔记·物联网
却道天凉_好个秋7 小时前
OpenCV(十六):椭圆的绘制
opencv·计算机视觉
LHZSMASH!7 小时前
神经流形:大脑功能几何基础的革命性视角
人工智能·深度学习·神经网络·机器学习
Luke Ewin7 小时前
内网私有化分布式集群部署语音识别接口
人工智能·分布式·语音识别·asr·funasr·通话语音质检·区分说话人
萤丰信息7 小时前
智慧园区系统:开启园区管理与运营的新时代
java·大数据·人工智能·安全·智慧城市·智慧园区
Dfreedom.8 小时前
Softmax 函数:深度学习中的概率大师
人工智能·深度学习·神经网络·softmax·激活函数
领航猿1号8 小时前
全参数DeepSeek(671B)企业部署方案
人工智能·ai-native