OpenCV几何图像变换

简介

接下来的时间我将继续学习几何图像变换部分,几何图像变换是指一系列用于图像处理和计算机视觉中的操作,用于改变图像的空间特性。这些变换包括缩放、旋转、平移、错切以及透视变换等。它们常用于诸如图像对齐、校正、视角转换等任务。

几何图像变换的基本概念和工作原理

本节中的函数执行各种二维图像的几何变换。它们不改变图像的内容,而是变形像素网格并将此变形网格映射到目标图像。事实上,为了避免采样伪影,映射是按相反顺序进行的,即从目标图像到源图像。也就是说,对于目标图像中的每个像素 (x, y),函数计算出相应"捐赠"像素在源图像中的坐标,并复制该像素值:
dst ( x , y ) = src ( f x ( x , y ) , f y ( x , y ) ) \texttt{dst} (x,y)= \texttt{src} (f_x(x,y), f_y(x,y)) dst(x,y)=src(fx(x,y),fy(x,y))

在您指定前向映射 < g x , g y > : src → dst \left<g_x, g_y\right>: \texttt{src} \rightarrow \texttt{dst} ⟨gx,gy⟩:src→dst的情况下,OpenCV 函数首先计算对应的逆向映射 < f x , f y > : dst → src \left<f_x, f_y\right>: \texttt{dst} \rightarrow \texttt{src} ⟨fx,fy⟩:dst→src, 然后使用上述公式

实际实现从最通用的 remap 到最简单最快的 resize 的几何变换,需要解决上述公式的两个主要问题:

  • 不存在像素的外推 :与上一节中描述的过滤函数类似,对于某些 ( x , y ) (x,y) (x,y), f x ( x , y ) f_x(x,y) fx(x,y)或 f y ( x , y ) f_y(x,y) fy(x,y)或两者都可能落在图像之外。在这种情况下,需要使用一种外推方法。OpenCV 提供了与过滤函数中相同的外推方法选择。此外,它还提供了 BORDER_TRANSPARENT 方法。这意味着目标图像中对应的像素根本不会被修改。
  • 像素值插值 :通常, f x ( x , y ) f_x(x,y) fx(x,y)或 f y ( x , y ) f_y(x,y) fy(x,y)是浮点数。这意味着 < f x , f y > \left<f_x, f_y\right> ⟨fx,fy⟩可以是仿射变换、透视变换或径向镜头失真校正等。因此,需要从分数坐标中检索像素值。最简单的情况下,坐标可以四舍五入到最近的整数坐标,并使用相应的像素。这被称为最近邻插值。然而,通过使用更复杂的插值方法可以获得更好的结果,其中在计算像素 ( f x ( x , y ) , f y ( x , y ) ) (f_x(x,y), f_y(x,y)) (fx(x,y),fy(x,y)),的某个邻域内拟合多项式函数,然后取该多项式在 ( f x ( x , y ) , f y ( x , y ) ) (f_x(x,y), f_y(x,y)) (fx(x,y),fy(x,y)) 处的值作为插值像素值。在 OpenCV 中,您可以选择几种插值方法。有关详情,请参阅 resize 函数。

注: 几何变换不适用于 CV_8S 或 CV_32S 类型的图像。

相关推荐
卓_尔_不_凡20 分钟前
Pytorch学习---基于经典网络架构ResNet训练花卉图像分类模型
人工智能·分类·数据挖掘
神奇夜光杯29 分钟前
Python酷库之旅-第三方库Pandas(123)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
SEU-WYL32 分钟前
基于神经网络的光线追踪
人工智能·神经网络·计算机视觉
Bill6634 分钟前
OpenCV GUI常用函数详解
人工智能·opencv·计算机视觉
DisonTangor34 分钟前
OpenAI面向开发者继续提高o1系列模型的调用速率 最高每分钟可调用1000次
人工智能
zhangbin_23735 分钟前
【Python机器学习】NLP信息提取——提取人物/事物关系
开发语言·人工智能·python·机器学习·自然语言处理
王豫翔36 分钟前
OpenAl o1论文:Let’s Verify Step by Step 快速解读
人工智能·深度学习·机器学习·chatgpt
xuehaikj41 分钟前
婴儿接触危险物品检测系统源码分享
人工智能·计算机视觉·目标跟踪
用户572449561561 小时前
51CTO-2024全新Langchain大模型AI应用与多智能体实战开发
人工智能
crownyouyou1 小时前
第一次安装Pytorch
人工智能·pytorch·python