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 类型的图像。

相关推荐
学电子她就能回来吗4 分钟前
深度学习速成:损失函数与反向传播
人工智能·深度学习·学习·计算机视觉·github
The Straggling Crow4 分钟前
model training platform
人工智能
爱吃泡芙的小白白5 分钟前
突破传统:CNN卷积层(普通/空洞)核心技术演进与实战指南
人工智能·神经网络·cnn·卷积层·空洞卷积·普通卷积
人道领域12 分钟前
AI抢人大战:谁在收割你的红包
大数据·人工智能·算法
初恋叫萱萱16 分钟前
CANN 系列深度篇:基于 ge 图引擎构建高效 AI 执行图
人工智能
qq_124987075334 分钟前
基于Hadoop的信贷风险评估的数据可视化分析与预测系统的设计与实现(源码+论文+部署+安装)
大数据·人工智能·hadoop·分布式·信息可视化·毕业设计·计算机毕业设计
Coder_Boy_36 分钟前
TensorFlow小白科普
人工智能·深度学习·tensorflow·neo4j
L、21838 分钟前
CANN 中的图优化技术详解:如何让 AI 模型跑得更快、更省
人工智能
大模型玩家七七39 分钟前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
新缸中之脑41 分钟前
像画家一样编程
人工智能