单应性Homography梳理,概念解释,传统方法,深度学习方法
Homography
这篇博客比较清晰准确的介绍了关于刚性变换,仿射变换,透视投影变换的理解
单应性变换 的 条件和表示
用 [无镜头畸变] 的相机从不同位置拍摄 [同一平面物体] 的图像之间存在单应性,可以用 [透视变换] 表示 。opencv单应性变换求解, 传统方法
cv2.findHomography和cv2.getPerspectiveTransform
两者联系:
都用于计算单应矩阵,即解一个线性方程组。由于单应矩阵有8个未知数(3*3,其中第9个数为1),所以至少需要4个点(每个点-x,y,提供2个约束方程)。两者区别:
计算方法不同:getPerspectiveTransform用的是SVD分解,只需要四个点。
输入参数不同:getPerspectiveTransform只会拿前4个点去计算,findHomography则会拿一堆点(>=4)去计算(其是不断从一堆点中重复拿出4个点去计算出一个结果,再采用一些优化算法RANSAC/LMEDS去筛选出最优解)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的正方形关于传统方法单应性估计的原理code 可以参考 dastratakos:Homography-Estimation
Unsupervised Deep Homography: A Fast and Robust Homography Estimation Model
和无监督光流方法类似,利用warp后的图像建立损失函数,无监督训练
其中 DLT就是 通过4对point 求 H
spatial transformation 就是透视投影 warpdef 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)Content-Aware Unsupervised Deep Homography Estimation 2020
该篇论文和6类似,都是无监督学习,只是6把warp等操作放在网络里,7放在了损失函数里.
另外7引入了mask, 以及在损失函数上的创新。
本篇论文鲁棒性更好,因为更多的考虑到非平面场景。
关于在pytorch如何实现warp等操作:
1)比如 stn, 后面pytorch引入 gridsample采样函数。
2)比如 kornia 库,也是基于stn.最后再介绍一篇 基于深度学习 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
单应性Homography梳理,概念解释,传统方法,深度学习方法相关推荐
- OpenCV用代码解释单应性的基本概念
OpenCV用代码解释单应性的基本概念 用代码解释单应性的基本概念 基础理论 单应矩阵是什么? 单应变换如何有用? 示范代码 从共面点估计姿势 用代码解释单应性的基本概念 基础理论 单应矩阵是什么? ...
- 透视变换 单应性矩阵怎么求 matlab,单应性(homography)变换的推导
矩阵的一个重要作用是将空间中的点变换到另一个空间中.这个作用在国内的<线性代数>教学中基本没有介绍.要能形像地理解这一作用,比较直观的方法就是图像变换,图像变换的方法很多,单应性变换是其中 ...
- 计算机视觉 单应性 Homography
该博客内容发表在泡泡机器人公众号上,请尊重泡泡机器人公众号的版权声明 在ORB-SLAM初始化的时候,作者提到,如果场景是平面,或者近似平面,或者低视差时,我们能应用单应性矩阵(homography) ...
- Homography matrix(单应性矩阵)在广告投放中的实践
原文首发于微信公众号「3D视觉工坊」. 前言 由于近期在研究相机与投影仪的标定程序时,需要将结构光图片与灰点相机拍摄得到的图片中,找出角点之间的对应性,使用了如下一条代码: Mat HomoMatri ...
- OpenCV中的「透视变换 / 投影变换 / 单应性」—cv.warpPerspective、cv.findHomography
文章目录 引言 透视变换(projective transform) 单应性(Homography) opencv代码 仿射变换相关函数 投影变换相关的函数 鸟瞰图代码示例 小结 引言 图像的几何变换 ...
- 单应性Homograph估计:从传统算法到深度学习
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文作者:白裳 https://zhuanlan.zhihu.com/p/74597564 本文已由原 ...
- sift算法_单应性Homograph估计:从传统算法到深度学习
点击上方"CVer",选择加"星标"置顶 重磅干货,第一时间送达 本文作者:白裳 https://zhuanlan.zhihu.com/p/74597564 本 ...
- 单应性矩阵 matlab,单应性矩阵MATLAB程序
单应性(Homography)描述的是同一个平面上的点,在两幅视图上的像点之间存在一一对应的映射关系,本质上是将一个目标点在两幅图像中相互转移.对应关系如图所示. 本文计算单应性矩阵在两个图像平面中都 ...
- 单应性(Homography)变换
我们已经得到了像素坐标系和世界坐标系下的坐标映射关系: 其中,u.v表示像素坐标系中的坐标,s表示尺度因子,fx.fy.u0.v0.γ(由于制造误差产生的两个坐标轴偏斜参数,通常很小)表示5个相机内参 ...
最新文章
- 新建arcgis api for android 项目失败
- SimplifiedHibernate:简化了的Hibernate
- Django中Ajax提交数据的CSRF问题
- pytorch 实现线性回归
- 注解方式实现aop-快速入门
- java序列化_夯实Java基础系列22:一文读懂Java序列化和反序列化
- 论证通过!依托顶尖985大学,争创国家实验室!
- 关于Redis Cluster的几个问题
- LINUX一个正确的mime xml范例
- 基于RRT算法的路径规划
- access无法 dolby_Win10专业版装不了dolby该怎么办?Win10 dolby音效驱动安装教程
- 【墨墨英语单词库免费开源无偿分享】小学、初中、高中、大学四六级专四专八、考研、托福、雅思等词书文本大合集
- PHP实现图片转字符画
- 面试手写代码的经验分享
- 产品部和业务部门是什么关系
- 高级语言程序设计(C语言)----第三章(上) 数据类型、运算符和表达式
- Java中为什么有时候通过指定编码集无法解决乱码
- linux进化树分析的软件,进化树分析及相关软件使用说明
- 太原师范学院计算机考研资料汇总
- python里raise是什么意思_Python中raise与raise...from之间有何区别?