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

相关推荐
满怀冰雪29 分钟前
19-图像数据处理:PaddleVision Transform 实战
人工智能·深度学习·计算机视觉·paddle
IT_陈寒1 小时前
Vue的响应式让我原地破防,原来问题出在这
前端·人工智能·后端
带娃的IT创业者1 小时前
Kimi-K3 开源背后:2.8 万亿参数的“暴力美学”与智能体的新拐点
人工智能·开源·大模型·智能体·开源模型·kimi-k3·moonshot ai
m0_380743871 小时前
实战看出 LLM API 的隐性消耗
人工智能
安逸Ai2 小时前
Claude Code、Cursor、Copilot 这类工具通常如何理解项目上下文?
人工智能
烟雨江南7852 小时前
2026汽车制造与新能源整车柔性产线Agentic-Workflow白皮书:跨APS_MES_ERP多智能体动态排产与装配容错实战
大数据·网络·人工智能·自动化·ai客服·企业agent
星栈2 小时前
AI 时代,人和 AI 的关系,我的一点思考
人工智能
鲜于言悠9052 小时前
Claude Code重大更新:多会话可互相通信,告别手动复制上下文
人工智能
甲维斯2 小时前
给Claude Code配上DeepSeek,调用kimicu控制电脑
人工智能·agent
geminigoth2 小时前
Spring AI Alibaba 入门开发一(备份)
java·人工智能·spring