求解图像之间的基础矩阵

1.原理

1.1

在这里插入图片描述
对极平面:任何包含基线的平面都称为对极平面,或者说是对极平面束中的平面,如上图中的π
对极点:摄像机的基线与每幅图像的交点;即上图中的点e和e’
对极线:对极平面与图像的交线;例如,上图中的直线l和l’
基本矩阵F:对应点对之间的约束
m′TFm=0
所有的极线都通过其极点

1.2基本矩阵

观测点P在相机1坐标系的坐标就可以通过转换变成相机2坐标系下
在这里插入图片描述
其中R和T分别表示旋转和平移,将其左叉乘一个T
在这里插入图片描述
再左点乘一个P’得到
在这里插入图片描述
所以
在这里插入图片描述
在这里插入图片描述

2.代码

2.1 8点算法

from PIL import Image
from numpy import *
from pylab import *
import numpy as np

import PCV.geometry.camera as camera
import PCV.geometry.homography as homography
import PCV.geometry.sfm as sfm
import PCV.localdescriptors.sift as sift

im1 = array(Image.open('D:/Study/untitled1/222/91.jpg'))
sift.process_image('D:/Study/untitled1/222/91.jpg', 'im1.sift')

im2 = array(Image.open('D:/Study/untitled1/222/92.jpg'))
sift.process_image('D:/Study/untitled1/222/92.jpg', 'im2.sift')

l1, d1 = sift.read_features_from_file('im1.sift')
l2, d2 = sift.read_features_from_file('im2.sift')

matches = sift.match_twosided(d1, d2)

ndx = matches.nonzero()[0]
x1 = homography.make_homog(l1[ndx, :2].T)
ndx2 = [int(matches[i]) for i in ndx]
x2 = homography.make_homog(l2[ndx2, :2].T)

d1n = d1[ndx]
d2n = d2[ndx2]
x1n = x1.copy()
x2n = x2.copy()

figure(figsize=(16,16))
sift.plot_matches(im1, im2, l1, l2, matches, True)
show
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值