Pythonは for文処理が遅く、numpyを利用して早くしたいと思います。
2枚の画像データ(img_kido_dx, img_kido_dy)と
照明の勾配データ(Rpg_grad_p, Rpg_grad_q)を利用し、
各画素の何らかの情報を持つ行列(2x2) Hを計算したいと思います。
アルゴリズム:下記の処理を各画素で行い、各画素に対応する(2x2) Hを求める
matE = [[E_x1,E_x2,...E_xn], [E_y1,E_y2,...E_yn]]
matR = [[R_p1,R_p2,...R_pn], [R_q1,R_q2,...R_qn]]
matM = inv(matR)
matH = matE x matM
普段の場合、下記のfor文で書きますが、やはり遅いです。(約30秒~)
これをnumpyで早くしたい場合、どうすればいいか教えていただけますでしょうか。
python
1 2import numpy as np 3 4N_ROW = 1080 5N_COL = 1920 6N_light = 20 7 8img_kido_dx = np.empty((N_ROW * N_COL, N_light)) 9img_kido_dy = np.empty((N_ROW * N_COL,N_light)) 10Rpg_grad_p = np.empty((N_ROW * N_COL,N_light)) 11Rpg_grad_q = np.empty((N_ROW * N_COL,N_light)) 12 13for i in range(N_ROW * N_COL): 14 15 mat_E = np.array([img_kido_dx[i, :], img_kido_dy[i, :]]) 16 mat_R = np.array([Rpq_grad_p[i, :], Rpq_grad_q[i, :]]) 17 18 mat_M = np.linalg.pinv(mat_R) 19 20 mat_H = np.matmul(mat_E, mat_M) 21 22
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/03 03:27