OpenCV 变换矩阵:仿射与透视扭曲

2024-03-23

您好,我目前正在研究图像转换,但有一件关于扭曲的事情我不明白。即有什么区别warpAffine() http://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#warpaffine and warpPerspective() http://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#warpperspective?

我的意思根本不是说转型有什么区别。我的问题是为什么我可以在上述两个函数中使用相同的变换矩阵(3x3)?输出是否相同(如果使用相同的变换矩阵运行)

或者何时使用其中一种,何时使用另一种?


仿射变换 https://en.wikipedia.org/wiki/Affine_transformation可以被认为是所有可能的透视变换的子集,又名同形异义词 https://en.wikipedia.org/wiki/Homography.

它们之间的主要功能区别是仿射变换always将平行线映射到平行线,而单应性can将平行线映射到相交线,反之亦然。

从规则的正方形开始,您可以看到平移和欧几里得变换(旋转、均匀缩放和平移)保持了纵横比;应用的结果仍然是一个正方形。然而,仿射变换可以将正方形在任一方向上压缩成矩形,并且还可以为正方形提供剪切/倾斜。但请注意,应用仿射变换后的形状是平行四边形——边仍然平行。对于单应性,情况不必如此。平行线可以扭曲以使它们相交。因此,矩形经单应性变换的结果是一般四边形,而矩形经仿射变换变换的结果始终是平行四边形。


功能warpAffine() and warpPerspective()不一定需要是两个不同的函数。任何写为 3x3 矩阵的仿射变换都可以传递到warpPerspective()并同样改变了;换句话说,像这样的函数warpPerspective可以采用 2x3 和 3x3 矩阵。但是,由于存在额外的行,透视转换会应用额外的步骤,因此这样做的效率不高。还,warpPerspective执行除法,因此运算中可能会引入较大的浮点误差,而这对于仿射变换来说是不必要的。最后,可以在不创建 3x3 方阵并将其反转的情况下完成仿射扭曲的反转。总而言之,将它们保留为单独的功能是有意义的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV 变换矩阵:仿射与透视扭曲 的相关文章

  • 如何在 OpenCV 中获取单独的轮廓(并填充它们)?

    我试图分离图像的轮廓 为了找到均匀的区域 所以我应用了 cvCanny 然后应用了 cvFindContours 然后每次按下一个键时 我使用以下代码绘制 1 个轮廓 for contours2 0 contours2 contours2
  • OpenCV 无法从网络摄像头捕获帧

    我在 VS2010 中使用 OpenCV 2 4 6 我认为我的网络摄像头无法捕获该帧 当我执行代码时 它构建成功 但我没有得到输出 我想 当我检查时if bSuccess 它已执行并且无法从网络摄像头捕获帧 我该如何解决这个问题 我的代码
  • 在SURF中使用欧几里德距离

    在我的代码中 我根据最近邻距离比过滤好图像 如下所示 for int i 0 i lt min des image rows 1 int matches size i if matches i 0 distance lt 0 6 match
  • 如何忽略 OpenCV python 中的内部黑色轮廓?

    在上图中 我只需要以下轮廓 8 7 0 2 4 里面每隔一个轮廓都是黑色的空盒子 有没有办法使用 cv2 RETR TREE 自动提取此类轮廓 cv2 RETR EXTERNAL 将忽略我实际需要的 2 和 4 gt gt heirarch
  • 如何计算EMGU中两幅图像之间的相关性?

    我有两个图像 假设它们具有相同的大小 我想使用 EMGU 和 C 计算两个图像之间的相关性 我没有找到任何函数可以做到这一点 并自己实现了相关性计算 但我宁愿使用内置函数 有这样的功能吗 Thanks I think 图像 MatchTem
  • 检索从扭曲图像中获取的像素的原始坐标

    我有四个角从源图像 src vertices 0 corners upperLeft src vertices 1 corners upperRight src vertices 2 corners downLeft src vertice
  • OpenCV 对白色像素进行分组

    我已经完成了艰苦的工作 将 MacBook 上的 iSight 摄像头变成了红外摄像头 对其进行了转换 设置了阈值等 现在得到的图像如下所示 alt text http www tommed co uk images opencv ir e
  • OpenCV 中的随机顺序洗牌 cv::Mat

    里面没有函数吗OpenCV随机打乱矩阵 按行排序 Input 1 2 3 4 5 6 7 8 9 Output 4 5 6 7 8 9 1 2 3 cv randShuffle 函数似乎只是对整个数组中的元素进行随机排序 我正在使用较新的
  • 使用额外模块构建 opencv 错误 ocv_download

    我尝试使用 Extramodules 构建 openCV 如果我尝试使用 cmake 配置项目文件 Windows 10 上的 vc14 x32 则会出现错误 opencv contrib master modules xfeatures2
  • ORB 演示代码出现 cv2.error 错误:来自 OpenCV 代码的未知 C++ 异常

    ORB 演示代码位于https opencv python tutroals readthedocs io en latest py tutorials py feature2d py orb py orb html https openc
  • 如何用一种纯色填充 OpenCV 图像?

    如何用一种纯色填充 OpenCV 图像 使用 OpenCV C APIIplImage img Use cvSet http opencv willowgarage com documentation operations on array
  • 筛选提取-opencv

    我正在尝试开始使用 C OpenCv 进行筛选特征提取 我需要使用 SIFT 提取特征 将它们在原始图像 例如一本书 和场景之间进行匹配 然后计算相机姿势 到目前为止我已经找到了这个算法 http opencv itseez com doc
  • 在 Python 中将视频源从 Javascript 传递到 OpenCV

    我正在尝试创建一个网络应用程序来检测实时视频源中的面孔 我已经用 Javascript 编写了网络摄像头源代码 因为我想稍后托管该应用程序 使用 Javascript 获取 feed 的代码 var video document query
  • 如何对使用 SimpleITK 读取的 DICOM 图像进行直方图均衡化

    我正在尝试对从 nii gz 文件读取的所有图像进行直方图均衡 我试过这段代码 import SimpleITK as sitk flair file content gdrive My Drive Colab Notebooks FLAI
  • OpenCV的calcOpticalFlowPyrLK抛出异常

    一段时间以来 我一直在尝试使用 OpenCV 构建一个小型光流示例 除了函数调用 calcOpticalFlowPyrLK 之外 一切正常 该函数在控制台窗口中打印以下失败的断言 OpenCV错误 断言失败 mytype typ0 CV M
  • 如何在Python中删除图像的背景

    我有一个包含全角人类图像的数据集 我想删除这些图像中的所有背景 只留下全角人物 我的问题 有没有Python代码可以做到这一点 我是否需要每次都指定人员对象的坐标 这是使用 Python OpenCV 的一种方法 读取输入 转换为灰色 阈值
  • 在白色背景上将透明 PNG 保存为 JPEG

    假设我有一张 BGRA 图像numpy数组看起来非常像这样 233 228 230 128 233 228 230 128 233 228 230 0 164 160 159 65 199 197 196 65 255 255 254 12
  • 霍夫变换的累加器填充

    我写了一段需要优化的代码 只是想与社区核实一下该代码是否确实是最佳的 它填充霍夫变换的累加器 实际上 我只是复制粘贴了 OpenCV 库中的大部分代码 谢谢 int i j n index for i 0 i
  • Android Camera2 API - 实时显示处理后的帧

    我正在尝试创建一个实时处理相机图像并将其显示在屏幕上的应用程序 我正在使用camera2 API 我创建了一个本机库来使用 OpenCV 处理图像 到目前为止 我已经成功设置了一个 ImageReader 来接收 YUV 420 888 格
  • 正方形检测找不到正方形

    我正在使用该程序方块 c在 OpenCV 库的示例中可用 它适用于每个图像 但我真的不明白为什么它不能识别该图像中绘制的正方形 After CANNY After DILATE The RESULT图像 红色 http img267 ima

随机推荐

  • 如何使用 iPhone 相机检查光线强度

    有什么方法可以使用 iPhone 检查光线强度吗 API 允许这样做吗 从 iOS 相机获取亮度 https www transpire com insights blog obtaining luminosity ios camera
  • 如何在 Swift 中获取 UIScrollView 垂直方向?

    如何在 VC 中获得向上 向下滚动 滑动方向 我想在我的 VC 中添加 UIScrollView 或其他内容 可以查看用户是否向上或向下滑动 滚动 然后隐藏 显示UIView取决于它是否是向上 向下手势 如果您使用UIScrollView那
  • 使用 python/bcrypt 将密码保存为用户集合中 mongodb 中的加盐哈希

    我想生成一个加盐密码哈希并将其存储在名为 users 的 MongoDB 集合中 如下所示 users doc username James password
  • 汇编编码 strdup. Malloc 在共享库中调用

    我有一个问题 调用 malloc 时无法编译 strdup 当我不调用 malloc 时 它会完美地编译我的共享库 所以如果有人可以帮助我 那就太好了 这是我的代码 BITS 64 DEFAULT REL global my strdup
  • 如何修复 Chunk.modulesIterable 的弃用警告?

    我是的维护者外部 svg sprite loader https github com karify external svg sprite loader我注意到 当将它与 webpack 5 一起使用时 我收到以下警告 DEP WEBPA
  • 如何编写将所有参数转发给委托命令的包装器 powershell 命令?

    wrapper应该只是打电话delegate 转发传递给包装器的参数 Given wrapper ps1 1 2 Whendelegate ps1 内容 param one two write host one one and two tw
  • 通过连接池发出 http 请求时 Akka Flow 挂起

    我正在使用 Akka 2 4 4 并尝试从 Apache HttpAsyncClient 迁移 未成功 下面是我在项目中使用的代码的简化版本 问题是 如果我向流程发送超过 1 3 个请求 它就会挂起 到目前为止 经过6个小时的调试 我什至找
  • 基于模板的主题观察者模式 - 我应该使用 static_cast 还是dynamic_cast

    我指的是这篇文章使用模板实现主题 观察者模式 http www codeproject com KB architecture observer with templates aspx 我做了一些修改 代码如下 template
  • 找到 O(n) 中所有成员都在列表中的最大区间 [重复]

    这个问题在这里已经有答案了 我在一次采访中被问到这个问题 给定一个整数列表 我们如何找到其所有成员都在给定列表中的最大区间 例如 给定列表 1 3 5 7 4 6 10 那么答案将是 3 7 因为它具有 3 到 7 之间的所有元素 我试图回
  • 使用多个 websocket 连接

    我有一个网站 每月有几千次访问 而且还在不断增长 我正在向我的网站添加新的交互式功能 现在我正在处理一个问题 我应该为所有功能使用一个 websocket 连接 还是应该为我的应用程序的每个交互功能创建新的 websocket 连接 我正在
  • 移动名称中带有空格的文件

    我在 unix 中有一个文件 名称为 这是我的文件 xls 我想将它从一个文件夹移动到另一个文件夹 我写了以下几行 fileName this is my file myDate 20121125 mv FIRST DIR fileName
  • 使用ajax将Flash视频加载到div中

    我有一个客户希望能够从视频缩略图播放列表中进行选择 并且它会替换页面上已有的视频 我还需要观察加载时间 因此认为如果使用 ajax 单击每个视频 则请求该视频会更好吗 我是 ajax 新手 所以不确定这是否是最好的选择 我的页面如下 div
  • /arm64/Image 到 zImage 或 boot.img

    大家好 我一直在试图弄清楚如何使我的 android 内核成为 zImage 或 boot img 我试图弄清楚但没有运气 有人告诉我 zImage 不适用于我的设备 因为它是 arm64 内核 但我想我会再问一次 如果是这种情况 我会尝试
  • 在 MongoDB Spring Data 中使用多个方面

    我想在一个聚合中运行多个方面以节省数据库往返次数 这是我的弹簧数据代码 final BalancesDTO total this mongoTemplate aggregate newAggregation Get all fund tra
  • 对 ole db 提供程序“microsoft.ace.oledb.12.0”的临时访问已被拒绝。您必须通过链接服务器访问该提供商

    当尝试在sql server中导入excel文件时 出现上述错误 转到链接服务器 gt 提供程序 然后双击您在 OPENROWSET 查询中使用的提供程序 然后检查是否 禁止临时访问 是否启用如下所示 您还可以在注册表中的 HKEY LOC
  • 了解递归函数的工作原理

    正如标题所解释的 我有一个非常基本的编程问题 但我还无法理解 过滤掉所有 极其聪明的 为了理解递归 必须先理解递归 网上各种帖子的回复我还是不太明白 了解当面对不知道我们不知道的事情时 我们可能会倾向于提出错误的问题或错误地提出正确的问题我
  • Nodejs为Redis请求设置超时

    我编写了一个简单的服务 使用 redis 将数据存储在内存中或从磁盘中获取数据 然后存储在内存中 并希望为慢速请求设置超时 我希望找到一种方法发出带有超时的获取请求 以防止该请求挂起 任何帮助表示赞赏 因此 您可以在这里做一些事情 但是 首
  • MonoDroid 的 MVVM 框架?

    MonoDroid 已经有 MVVM 框架了吗 或者 MonoDroid 是否能够自行绑定属性和命令 例如用于 WPF Silverlight WP7 的 MVVM Light Toolkit 还没有 MVVM 但是有 MonoCross
  • 带 POST 参数的 FacesContext 重定向

    我需要使用 POST 参数将页面重定向到外部站点 但我无法使用普通 HTML
  • OpenCV 变换矩阵:仿射与透视扭曲

    您好 我目前正在研究图像转换 但有一件关于扭曲的事情我不明白 即有什么区别warpAffine http docs opencv org 2 4 modules imgproc doc geometric transformations h