单应性Homography梳理,概念解释,传统方法,深度学习方法

Homography

  1. 这篇博客比较清晰准确的介绍了关于刚性变换,仿射变换,透视投影变换的理解

  2. 单应性变换 的 条件和表示
    用 [无镜头畸变] 的相机从不同位置拍摄 [同一平面物体] 的图像之间存在单应性,可以用 [透视变换] 表示 。

  3. opencv单应性变换求解, 传统方法
    cv2.findHomography和cv2.getPerspectiveTransform
    两者联系:
    都用于计算单应矩阵,即解一个线性方程组。由于单应矩阵有8个未知数(3*3,其中第9个数为1),所以至少需要4个点(每个点-x,y,提供2个约束方程)。

    两者区别:
    计算方法不同:getPerspectiveTransform用的是SVD分解,只需要四个点。
    输入参数不同:getPerspectiveTransform只会拿前4个点去计算,findHomography则会拿一堆点(>=4)去计算(其是不断从一堆点中重复拿出4个点去计算出一个结果,再采用一些优化算法RANSAC/LMEDS去筛选出最优解)

  4. Deep Image Homography Estimation 论文。利用深度学习估计Homography
    4.1 HomographyNet的结构
    4.2 HomographyNet数据集的制作方法,制作ground truth,进行监督训练
    原论文也容易理解github代码有很多, 详细看原论文 或者
    可以参考 基于深度学习(HomographyNet)的图像单应性估计)

    code:https://github.com/breadcake/Deep-homography-estimation-pytorch
    https://github.com/paeccher/Deep-Homography-Estimation-Pytorch
    有一个问题,4对偏移坐标, 不同scale对应相同转换?
    code中四个角选的是长度为128的正方形

  5. 关于传统方法单应性估计的原理code 可以参考 dastratakos:Homography-Estimation

  6. Unsupervised Deep Homography: A Fast and Robust Homography Estimation Model
    和无监督光流方法类似,利用warp后的图像建立损失函数,无监督训练
    在这里插入图片描述

    其中 DLT就是 通过4对point 求 H
    spatial transformation 就是透视投影 warp

    def photometric_loss(delta, img_a, patch_b, corners):
        corners_hat = corners + delta
    
        # in order to apply transform and center crop,
        # subtract points by top-left corner (corners[N, 0])
        corners = corners - corners[:, 0].view(-1, 1, 2)
    
        h = kornia.get_perspective_transform(corners, corners_hat)
    
        h_inv = torch.inverse(h)
        patch_b_hat = kornia.warp_perspective(img_a, h_inv, (128, 128))
    
        return F.l1_loss(patch_b_hat, patch_b)
    

    参考代码
    和 (https://github.com/breadcake/unsupervisedDeepHomography-pytorch)

  7. Content-Aware Unsupervised Deep Homography Estimation 2020
    该篇论文和6类似,都是无监督学习,只是6把warp等操作放在网络里,7放在了损失函数里.
    另外7引入了mask, 以及在损失函数上的创新。
    本篇论文鲁棒性更好,因为更多的考虑到非平面场景。
    在这里插入图片描述

  8. 关于在pytorch如何实现warp等操作:

    1)比如 stn, 后面pytorch引入 gridsample采样函数。
    2)比如 kornia 库,也是基于stn.

  9. 最后再介绍一篇 基于深度学习 homography estimation:

    Motion Basis Learning for Unsupervised Deep Homography Estimation
    with Subspace Projection
    code
    在这里插入图片描述

    特征:
    1)无监督
    2)首先生成8个homography flow, 网络预测8个homo-flow的weight
    homography flow 相比light flow 有更多的约束,homography flow是light flow的一个特殊情况,因为homography flow所有pixel的位移是通过一个转换关系得到的,而light flow是更generatic的情况。
    3)LRR模块引入网络结构
    4)更复杂有效的损失函数

[1]https://blog.csdn.net/abc20002929/article/details/8709902
[2]https://zhuanlan.zhihu.com/p/74597564
[3]https://zhuanlan.zhihu.com/p/37110107

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值