zoukankan      html  css  js  c++  java
  • OpenCV仿射变换+投射变换+单应性矩阵

    本来想用单应性求解小规模运动的物体的位移,但是后来发现即使是很微小的位移也会带来超级大的误差甚至错误求解,看起来这个方法各种行不通,还是要匹配知道深度了以后才能从三维仿射变换来入手了,纠结~【转】OpenCV仿射变换+投射变换+单应性矩阵
    • estimateRigidTransform():计算多个二维点对或者图像之间的最优仿射变换矩阵 (2行x3列),H可以是部分自由度,比如各向一致的切变。
    • getAffineTransform():计算3个二维点对之间的仿射变换矩阵H(2行x3列),自由度为6.
    • warpAffine():对输入图像进行仿射变换
    • findHomography: 计算多个二维点对之间的最优单映射变换矩阵 H(3行x3列) ,使用最小均方误差或者RANSAC方法 。
    • getPerspectiveTransform():计算4个二维点对之间的透射变换矩阵 H(3行x3列)
    • warpPerspective(): 对输入图像进行透射变换
    • perspectiveTransform():对二维或者三维矢量进行透射变换,也就是对输入二维坐标点或者三维坐标点进行投射变换。
    • estimateAffine3D:计算多个三维点对之间的最优三维仿射变换矩阵H (3行x4列)
    • transform():对输入的N维矢量进行变换,可用于进行仿射变换、图像色彩变换.
    • findFundamentalMat:计算多个点对之间的基矩阵H。
    快速解决:
    • 问题1:如何计算3个二维点对之间的仿射变换矩阵?
    答:使用getAffineTransform()。
    • 问题2:如何计算多个二维点对之间的仿射变换矩阵(使用误差最小准则 )?
    答:使用estimateRigidTransform()或者findHomography。
    • 问题3:如何计算4个二维点对之间的透射变换?
    答:使用getPerspectiveTransform()。
    • 问题4:如何计算多个三维点对之间的仿射变换?
    答:使用estimateAffine3D。
    • 问题5:如何对输入图像进行仿射变换?
    答:使用warpAffine()。
    • 问题6:如何对输入图像进行透射变换?
    答:使用perspectiveTransform()。
    • 问题7:如何对输入的二维点对进行仿射变换?
    答:使用transform()。
    • 问题8:如何对输入的三维点对进行投射变换?
    答:使用perspectiveTransform()。

  • 相关阅读:
    git 删除远程文件、文件夹
    pod install太慢 可以使用代理的方式
    flutter Container()最小宽度 最小高度
    flutter common init 常用Widget初始化
    xcode 嵌入flutter_module后编译报错 This app could not be installed at this time.
    Spring AOP
    Spring @Value 配置项解析 vs Spring @ConfigurationProperties 配置项解析
    Spring Bean 的实例化过程
    SpringBoot 配置项解析
    Spring IOC 自动注入流程
  • 原文地址:https://www.cnblogs.com/wqj1212/p/3915859.html
Copyright © 2011-2022 走看看