单应矩阵H,求解及图像透射变换warpPerspective

1.代数求解

在这里插入图片描述K为内参,R为旋转矩阵

2.函数求解

getPerspectiveTransform()和findHomography()

都用于计算单应性矩阵,即解一个线性方程组。由于单应矩阵有8个未知数(3*3,其中第9个数为1),所以至少需要4个点(每个点-x,y,提供2个约束方程)。

getPerspectiveTransform用的是SVD分解,getPerspectiveTransform只会拿前4个点去计算,getPerspectiveTransform()比较简单粗暴。
findHomography则会拿一堆点(>=4)去计算(其是不断从一堆点中重复拿出4个点去计算出一个结果,再采用一些优化算法RANSAC/LMEDS去筛选出最优解)。

3.图像透射变换warpPerspective

import sys
import math
ros_path = '/opt/ros/kinetic/lib/python2.7/dist-packages'
if ros_path in sys.path:
    sys.path.remove(ros_path)
import cv2
sys.path.append('/opt/ros/kinetic/lib/python2.7/dist-packages')
import numpy as np
K1=np.matrix([[1504.72958809729,0,965.092514870106],
[0,1407.38572229267,569.748552278095],
[0,0,1]])
K3=np.matrix([[1501.83680551596,0,813.810666146807],
[0,1398.24220677846,560.287775632716],
[0,0,1]])
R1=np.matrix([[1,0,0],
[0,1,0],
[0,0,1]])

R3=np.matrix([[0.8560 ,   0.0170 ,  -0.5167],
   [-0.0351   , 0.9991   ,-0.0253],
    [0.5158  ,  0.0398  ,  0.8558]])
img=cv2.imread("/home/XXX/F/image/3/3.jpg")
H=K3*R1*R3.I*K1.I
res = cv2.warpPerspective(img,H,(4000,2000))
cv2.namedWindow("1",0)
cv2.imshow("1",res)
cv2.waitKey(0)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值