# 2D -> 3D 身體骨架資訊 > 非平行照片,高度不同、仰角不同 ## 流程 1. 給定 對應點 ,計算 Fundamental Matrix 2. 給定 對應點 ,計算 Essential Matrix 3. 給定 F / E ,計算 Rotation Matrix ## A. Fundamental Matrix ```python= def Find_Fundamental_matrix(first_input, second_input, img1, img2): # Use The function to gain the fundamental matrix,in order to the next step extracting {R|T} from fundamental matrix Max_length_img1 = max(img1.shape[0],img1.shape[1]) # Extract max length from image sizes,in order to normalize our input getting results more stable Max_length_img2 = max(img2.shape[0],img2.shape[1]) first_img_coordinate = [] # coordinates in first image second_img_coordinate = [] # coordinates in second image # Normalization for i in range(len(first_input)): first_img_coordinate.append([first_input[i][0]/Max_length_img1, first_input[i][1]/Max_length_img1,1/Max_length_img1]) for i in range(len(second_input)): second_img_coordinate.append((second_input[i][0]/Max_length_img2, second_input[i][1]/Max_length_img2,1/Max_length_img2)) # calculate kronecker A = [] for i in range(len(first_img_coordinate)): A.append(np.transpose(np.kron(first_img_coordinate[i], second_img_coordinate[i]))) # singular value decomposition U, D, V = svd(np.array(A)) # approximate F, possibly regular Fa = np.reshape(V[:,8],(3,3)) return Fa ```