關於多視覺幾何中,仿射變換的SVD分解問題的程序驗證

import numpy as np
np.set_printoptions(suppress=True)

A=np.matrix([[3,0],[5,4]])
print("A:\n",A)
U,D,V_t = np.linalg.svd(A)

print("U:\n",U)
D_=np.array([[D[0],0],[0,D[1]]])
print("D_:\n",D_)
print("V_t:\n",V_t)

C=U*D_*V_t
print("C:\n",C)

F=(U*V_t)*(V_t.T*D_*V_t)
print("F:\n",F)
A:
 [[3 0]
 [5 4]]
U:
 [[-0.36773822 -0.92992935]
 [-0.92992935  0.36773822]]
D_:
 [[6.85067239 0.        ]
 [0.         1.75165288]]
V_t:
 [[-0.83975136 -0.54297114]
 [-0.54297114  0.83975136]]
C:
 [[3. 0.]
 [5. 4.]]
F:
 [[3. 0.]
 [5. 4.]]

 

(U*V_t):
 [[ 0.81373347 -0.58123819]
 [ 0.58123819  0.81373347]]
V_t.T:
 [[-0.83975136 -0.54297114]
 [-0.54297114  0.83975136]]
D_:
 [[6.85067239 0.        ]
 [0.         1.75165288]]
V_t:
 [[-0.83975136 -0.54297114]
 [-0.54297114  0.83975136]]

或者三維整體:

import numpy as np
np.set_printoptions(suppress=True)

A=np.matrix([[3,0,3],[5,4,0],[1,2,4]])
print("A:\n",A)
U,D,V_t = np.linalg.svd(A)

print("U:\n",U)
D_=np.array([[D[0],0,0],[0,D[1],0],[0,0,D[2]]])
print("D_:\n",D_)
print("V_t:\n",V_t)

C=U*D_*V_t
print("C:\n",C)

F=(U*V_t)*(V_t.T*D_*V_t)
print("F:\n",F)
A:
 [[3 0 3]
 [5 4 0]
 [1 2 4]]
U:
 [[-0.4590819  -0.42640143  0.77937515]
 [-0.76229288  0.63960215 -0.09908912]
 [-0.45623828 -0.63960215 -0.61867255]]
D_:
 [[7.60356333 0.         0.        ]
 [0.         4.24264069 0.        ]
 [0.         0.         2.0459288 ]]
V_t:
 [[-0.74240828 -0.5210252  -0.42114449]
 [ 0.30151134  0.30151134 -0.90453403]
 [ 0.59826487 -0.7985134  -0.06674951]]
C:
 [[ 3. -0.  3.]
 [ 5.  4. -0.]
 [ 1.  2.  4.]]
F:
 [[ 3.  0.  3.]
 [ 5.  4. -0.]
 [ 1.  2.  4.]]
(U*V_t):
 [[ 0.67853411 -0.51171313  0.52701151]
 [ 0.69949832  0.66914509 -0.25089231]
 [-0.22426228  0.53888266  0.81198024]]
V_t.T:
 [[-0.74240828  0.30151134  0.59826487]
 [-0.5210252   0.30151134 -0.7985134 ]
 [-0.42114449 -0.90453403 -0.06674951]]
D_:
 [[7.60356333 0.         0.        ]
 [0.         4.24264069 0.        ]
 [0.         0.         2.0459288 ]]
V_t:
 [[-0.74240828 -0.5210252  -0.42114449]
 [ 0.30151134  0.30151134 -0.90453403]
 [ 0.59826487 -0.7985134  -0.06674951]]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章