照相机模型与增强现实

  • kdx
    了解作者
  • Python
    开发工具
  • 1.2MB
    文件大小
  • 7z
    文件格式
  • 0
    收藏次数
  • 6 积分
    下载积分
  • 0
    下载次数
  • 2022-06-28 15:43
    上传日期
对照相机进行建模,并有效地使用这些模型,照相机标定,照相机模型,增强现实等
ch04.7z
  • ch04
  • .idea
  • dictionaries
  • Administrator.xml
    200B
  • inspectionProfiles
  • Project_Default.xml
    1KB
  • profiles_settings.xml
    235B
  • scopes
  • scope_settings.xml
    139B
  • ch04.iml
    286B
  • misc.xml
    1.4KB
  • other.xml
    187B
  • workspace.xml
    19.9KB
  • testrunner.xml
    248B
  • .name
    4B
  • encodings.xml
    166B
  • modules.xml
    262B
  • vcs.xml
    166B
  • im0.sift
    1.3MB
  • im1.sift
    723.1KB
  • ch4_ar_cube.py
    3.3KB
  • siftWin32.exe
    92KB
  • sift
    44KB
  • tmp.pgm
    729.5KB
内容介绍
from pylab import * from PIL import Image # If you have PCV installed, these imports should work from PCV.geometry import homography, camera from PCV.localdescriptors import sift """ This is the augmented reality and pose estimation cube example from Section 4.3. """ def cube_points(c, wid): """ Creates a list of points for plotting a cube with plot. (the first 5 points are the bottom square, some sides repeated). """ p = [] # bottom p.append([c[0]-wid, c[1]-wid, c[2]-wid]) p.append([c[0]-wid, c[1]+wid, c[2]-wid]) p.append([c[0]+wid, c[1]+wid, c[2]-wid]) p.append([c[0]+wid, c[1]-wid, c[2]-wid]) p.append([c[0]-wid, c[1]-wid, c[2]-wid]) #same as first to close plot # top p.append([c[0]-wid, c[1]-wid, c[2]+wid]) p.append([c[0]-wid, c[1]+wid, c[2]+wid]) p.append([c[0]+wid, c[1]+wid, c[2]+wid]) p.append([c[0]+wid, c[1]-wid, c[2]+wid]) p.append([c[0]-wid, c[1]-wid, c[2]+wid]) #same as first to close plot # vertical sides p.append([c[0]-wid, c[1]-wid, c[2]+wid]) p.append([c[0]-wid, c[1]+wid, c[2]+wid]) p.append([c[0]-wid, c[1]+wid, c[2]-wid]) p.append([c[0]+wid, c[1]+wid, c[2]-wid]) p.append([c[0]+wid, c[1]+wid, c[2]+wid]) p.append([c[0]+wid, c[1]-wid, c[2]+wid]) p.append([c[0]+wid, c[1]-wid, c[2]-wid]) return array(p).T def my_calibration(sz): """ Calibration function for the camera (iPhone4) used in this example. """ row, col = sz fx = 2555*col/2592 fy = 2586*row/1936 K = diag([fx, fy, 1]) K[0, 2] = 0.5*col K[1, 2] = 0.5*row return K # compute features sift.process_image('../data/book_frontal.JPG', 'im0.sift') l0, d0 = sift.read_features_from_file('im0.sift') sift.process_image('../data/book_perspective.JPG', 'im1.sift') l1, d1 = sift.read_features_from_file('im1.sift') # match features and estimate homography matches = sift.match_twosided(d0, d1) ndx = matches.nonzero()[0] fp = homography.make_homog(l0[ndx, :2].T) ndx2 = [int(matches[i]) for i in ndx] tp = homography.make_homog(l1[ndx2, :2].T) model = homography.RansacModel() H, inliers = homography.H_from_ransac(fp, tp, model) # camera calibration K = my_calibration((747, 1000)) # 3D points at plane z=0 with sides of length 0.2 box = cube_points([0, 0, 0.1], 0.1) # project bottom square in first image cam1 = camera.Camera(hstack((K, dot(K, array([[0], [0], [-1]]))))) # first points are the bottom square box_cam1 = cam1.project(homography.make_homog(box[:, :5])) # use H to transfer points to the second image box_trans = homography.normalize(dot(H,box_cam1)) # compute second camera matrix from cam1 and H cam2 = camera.Camera(dot(H, cam1.P)) A = dot(linalg.inv(K), cam2.P[:, :3]) A = array([A[:, 0], A[:, 1], cross(A[:, 0], A[:, 1])]).T cam2.P[:, :3] = dot(K, A) # project with the second camera box_cam2 = cam2.project(homography.make_homog(box)) # plotting im0 = array(Image.open('book_frontal.JPG')) im1 = array(Image.open('book_perspective.JPG')) figure() imshow(im0) plot(box_cam1[0, :], box_cam1[1, :], linewidth=3) title('2D projection of bottom square') axis('off') figure() imshow(im1) plot(box_trans[0, :], box_trans[1, :], linewidth=3) title('2D projection transfered with H') axis('off') figure() imshow(im1) plot(box_cam2[0, :], box_cam2[1, :], linewidth=3) title('3D points projected in second image') axis('off') show()
评论
    相关推荐
    • Python
      Python Boto3代码
    • Python
      python程序
    • Python
      Python
    • python
      Python,就在这里。
    • Python
      Python-
    • Python
      完整的python 其中包含用于学习python的代码,注释和微型项目。
    • Python
      项目Python
    • Python
      Pythonpython3中使用乌龟库的简单pong游戏 贡献 拉请求是欢迎的! :) 执照
    • Python
      Python Dit是Mijn储存库van Python
    • python
      Python 基本的python编程