zoukankan      html  css  js  c++  java
  • 15-matlab矩阵运用

    from scipy.spatial import Delaunay
    from mpl_toolkits.mplot3d import Axes3D
    import numpy as np
    import matplotlib.pyplot as plt
    from numpy import *
    import operator
    from functools import reduce
    
    W = np.loadtxt('data.txt')
    # print(W)
    # print(W.data)
    (m,n) = W.shape
    matchedPoints1 = W[0:int(m/2),:].copy()
    matchedPoints1 = double(matchedPoints1)  #转为double
    matchedPoints2=W[int(m/2 + 1):m,:].copy()#奇数时会丢失一个
    matchedPoints2=double(matchedPoints2)
    matchedPoints1 = mat(matchedPoints1)
    matchedPoints2 = mat(matchedPoints2)
    
    # print(matchedPoints1)
    # print(matchedPoints2)
    k1=[[3483.7,-3.4942, 614.50],
        [0.0000, 3485.2, 488.13],
        [0.0000, 0.0000, 1.0000]
       ]
    k1 = mat(k1)
    
    I=eye(3)
    O=[[0],[0],[0]];
    O = mat(O)
    
    k2=[[3464.6, -1.1771, 680.15],
        [0.0000, 3462.7, 503.73],
        [0.0000, 0.0000, 1.0000]
        ]
    k2 = mat(k2)
    R=[ [0.9989, 0.0002, -0.0476],
        [-0.0008, 0.9999, -0.0120],
        [0.0476, 0.0120, 0.9988]
        ]
    R = mat(R)
    
    T=[ [279.48],
        [-3.7650],
        [1.9500]
        ]
    T = mat(T)
    
    # test = hstack((I,O))
    M1=k1*hstack((I,O))
    M2=k2* hstack((R,T))
    M1 = mat(M1)
    M2 = mat(M2)
    cameraMatrix1=double(M1).copy()
    cameraMatrix2=double(M2).copy()
    
    fl=k1[0,0]
    fr=k2[0,0]
    Xl=matchedPoints1[:,0].copy()
    Yl=matchedPoints1[:,1].copy()
    # Xl=mat(Xl)
    # Yl=mat(Yl)
    Xr=matchedPoints2[:,0].copy()
    Yr=matchedPoints2[:,1].copy()
    
    Tx=T[0]; #矩阵
    Tz=T[2];
    R1=R[0,0]
    R2=R[0,1]
    R3=R[0,2]
    R7=R[2,0]
    R8=R[2,1]
    R9=R[2,2]
    z = []
    x = []
    y = []
    for k in range(0,int(m/2)):
         zz = fl * (fr * Tx - Xr[k] * Tz)/(Xr[k] *(R7 * Xl[k] + R8 * Yl[k]
                    + fl * R9) - fr * (R1 * Xl[k] + R2 * Yl[k] + fl * R3))
         z.append(zz[0,0])
         xx = z[k] * Xl[k] / fl;
         x.append(xx[0,0])
         yy = z[k] * Yl[k] / fl;
         y.append(yy[0,0])
         # print(k)
    # z = mat(z)
    # x = mat(x)
    # y = mat(y)
    # x=x.transpose()
    # y=y.transpose()
    # z=z.transpose()
    # x = x[0,:].copy()
    # y = y[0,:].copy()
    # z = z[0,:].copy()
    # x = [1.64546964617096,3.29082591875077,4.93606803026144]
    # y = [3.29093929234191,3.29082591875077,3.29071202017429]
    # z = [5732.32260636576,5732.12512657603,5731.92673234059]
    print(x)
    
    #画图
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    ax.plot_trisurf(x, y, z, linewidth=1, antialiased=True)
    plt.show()
    

      

  • 相关阅读:
    GLSL 变量属性
    php读取大文件的方法
    php 3种常见设计模式
    php类自动装载、链式操作、魔术方法
    统计文件中关键词出现的次数
    python先序、中序、后序排序
    Nginx缓存、压缩配置
    Ninx虚拟主机的配置
    python爬虫代码
    Nginx在安装过程经常出现的问题
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/10229902.html
Copyright © 2011-2022 走看看