diff --git a/10/3.py b/10/3.py new file mode 100644 index 0000000..cdb6728 --- /dev/null +++ b/10/3.py @@ -0,0 +1,113 @@ +# 利用OpenCV实现两张2D图像的3D重构。 + +import cv2 +import numpy as np +import plotly.express as px +import plotly.io as pio + +# 设置plotly在浏览器中显示 +pio.renderers.default = "browser" + +# 读取图像 +img1 = cv2.imread(r"10\templeRing\templeR0003.png") +img2 = cv2.imread(r"10\templeRing\templeR0005.png") + +# 定义相机内参 +fx = 0.25 * 1520.4 +fy = 0.25 * 1525.9 +cx = 302.32 +cy = 246.87 + +K = np.array([[fx, 0, cx], [0, fy, cy], [0, 0, 1]]) + +# 定义第一个相机的外参矩阵 +R1 = np.array( + [ + [-0.01625331773280620100, 0.98386957700862299000, -0.17814736905031653000], + [0.97668439268305030000, -0.02252259937820530100, -0.21349550254417543000], + [-0.21406407160478280000, -0.17746376518636725000, -0.96056399333613396000], + ] +) +t1 = np.array([[-0.0283090812583], [-0.0366442193256], [0.529139415773]]) + +# 定义第二个相机的外参矩阵 +R2 = np.array( + [ + [-0.05235090589954815400, 0.98479784589115438000, -0.16562785206491965000], + [0.88539496349116698000, -0.03093875352325572600, -0.46380874523331522000], + [-0.46188217250287084000, -0.17092687400923678000, -0.87031538103463302000], + ] +) +t2 = np.array([[-0.0269600886818], [-0.0469344855587], [0.53860946783]]) + +# 转换图像为灰度图 +gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) +gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY) + +# 创建SIFT特征检测器 +sift = cv2.SIFT_create() + +# 检测特征点和计算描述符 +kp1, des1 = sift.detectAndCompute(gray1, None) +kp2, des2 = sift.detectAndCompute(gray2, None) + +# 创建BFMatcher对象 +bf = cv2.BFMatcher(cv2.NORM_L2, crossCheck=True) + +# 进行特征匹配 +matches = bf.match(des1, des2) + +# 按距离排序 +matches = sorted(matches, key=lambda x: x.distance) + +# 选择前N个最佳匹配点(可以调整这个数值) +N_BEST_MATCHES = 100 +matches = matches[:N_BEST_MATCHES] + +# 提取匹配点的坐标 +pts1 = np.float32([kp1[m.queryIdx].pt for m in matches]).reshape(-1, 1, 2) +pts2 = np.float32([kp2[m.trainIdx].pt for m in matches]).reshape(-1, 1, 2) + +# 计算投影矩阵 +P1 = K @ np.hstack((R1, t1)) +P2 = K @ np.hstack((R2, t2)) + +# 三角测量得到3D点 +points_4D = cv2.triangulatePoints(P1, P2, pts1, pts2) +points_3D = points_4D / points_4D[3] +points_3D = points_3D[:3, :].T + +# 可选:移除一些可能的异常点 +# 这里使用简单的距离阈值进行过滤 +distances = np.sqrt(np.sum(points_3D**2, axis=1)) +mask = distances < np.percentile(distances, 95) # 移除最远的5%的点 +points_3D = points_3D[mask] + +# 使用plotly进行3D可视化 +fig = px.scatter_3d( + x=points_3D[:, 0], y=points_3D[:, 1], z=points_3D[:, 2], title="3D Reconstruction" +) + +# 调整点的大小和视角 +fig.update_traces(marker=dict(size=1)) +fig.update_layout(scene=dict(aspectmode="data")) # 保持真实比例 + +# 显示结果 +fig.show() + +# 保存结果 +fig.write_html("10/templeR.html") + +# 可选:显示匹配结果 +img_matches = cv2.drawMatches( + img1, + kp1, + img2, + kp2, + matches, + None, + flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS, +) +cv2.imshow("Matches", img_matches) +cv2.waitKey(0) +cv2.destroyAllWindows() diff --git a/10/extension-1.py b/10/extension-1.py new file mode 100644 index 0000000..44f1e53 --- /dev/null +++ b/10/extension-1.py @@ -0,0 +1,160 @@ +# 利用OpenCV实现多张2D图像的3D重构。每张图片的内外方位元素从templeRing_par.txt文件中读取 + +import cv2 +import numpy as np +import plotly.express as px +import plotly.io as pio + +# 设置plotly在浏览器中显示 +pio.renderers.default = "browser" + + +def read_camera_parameters(file_path): + """读取相机参数文件""" + cameras = [] + with open(file_path, "r") as f: + n_cameras = int(f.readline()) + for _ in range(n_cameras): + line = f.readline().split() + camera = { + "image": line[0], + "K": np.array( + [ + [float(line[1]), 0, float(line[3])], + [0, float(line[5]), float(line[6])], + [0, 0, 1], + ] + ), + "R": np.array( + [ + [float(line[10]), float(line[11]), float(line[12])], + [float(line[13]), float(line[14]), float(line[15])], + [float(line[16]), float(line[17]), float(line[18])], + ] + ), + "t": np.array( + [[float(line[19])], [float(line[20])], [float(line[21])]] + ), + } + cameras.append(camera) + return cameras + + +def reconstruct_3d_points(img1, img2, K, R1, t1, R2, t2): + """从两张图片重构3D点云""" + # 转换为灰度图 + gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) + gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY) + + # 创建SIFT特征检测器 + sift = cv2.SIFT_create() + + # 检测特征点和计算描述符 + kp1, des1 = sift.detectAndCompute(gray1, None) + kp2, des2 = sift.detectAndCompute(gray2, None) + + # 创建BFMatcher对象 + bf = cv2.BFMatcher(cv2.NORM_L2, crossCheck=True) + + # 进行特征匹配 + matches = bf.match(des1, des2) + + # 按距离排序 + matches = sorted(matches, key=lambda x: x.distance) + + # 选择前N个最佳匹配点 + N_BEST_MATCHES = 100 + matches = matches[:N_BEST_MATCHES] + + # 提取匹配点的坐标 + pts1 = np.float32([kp1[m.queryIdx].pt for m in matches]).reshape(-1, 1, 2) + pts2 = np.float32([kp2[m.trainIdx].pt for m in matches]).reshape(-1, 1, 2) + + # 计算投影矩阵 + P1 = K @ np.hstack((R1, t1)) + P2 = K @ np.hstack((R2, t2)) + + # 三角测量得到3D点 + points_4D = cv2.triangulatePoints(P1, P2, pts1, pts2) + points_3D = points_4D / points_4D[3] + points_3D = points_3D[:3].T + + # 可选:显示匹配结果 + img_matches = cv2.drawMatches( + img1, + kp1, + img2, + kp2, + matches, + None, + flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS, + ) + cv2.imshow("Matches", img_matches) + cv2.waitKey(1) # 显示1毫秒 + + return points_3D + + +def main(): + # 读取相机参数 + cameras = read_camera_parameters(r"10\templeRing\templeR_par.txt") + + # 初始化空数组存储所有3D点 + all_points_3D = [] + + # 从连续的图像对重构3D点 + for i in range(len(cameras) - 1): + print(f"Processing image pair {i+1}/{len(cameras)-1}") + + # 读取图像 + img1 = cv2.imread(f"10/templeRing/{cameras[i]['image']}") + img2 = cv2.imread(f"10/templeRing/{cameras[i+1]['image']}") + + if img1 is None or img2 is None: + print(f"Failed to load images {i} and {i+1}") + continue + + points_3D = reconstruct_3d_points( + img1, + img2, + cameras[i]["K"], + cameras[i]["R"], + cameras[i]["t"], + cameras[i + 1]["R"], + cameras[i + 1]["t"], + ) + + # 过滤异常点 + distances = np.sqrt(np.sum(points_3D**2, axis=1)) + mask = distances < np.percentile(distances, 95) # 移除最远的5%的点 + points_3D = points_3D[mask] + + all_points_3D.append(points_3D) + + # 关闭所有窗口 + cv2.destroyAllWindows() + + # 组合所有点 + all_points_3D = np.vstack(all_points_3D) + + # 使用plotly进行3D可视化 + fig = px.scatter_3d( + x=all_points_3D[:, 0], + y=all_points_3D[:, 1], + z=all_points_3D[:, 2], + title="3D Reconstruction from Multiple Views", + ) + + # 调整点的大小和视角 + fig.update_traces(marker=dict(size=1)) + fig.update_layout(scene=dict(aspectmode="data")) # 保持真实比例 + + # 显示结果 + fig.show() + + # 保存结果 + fig.write_html("10/templeR_multi.html") + + +if __name__ == "__main__": + main() diff --git a/10/templeRing/README.txt b/10/templeRing/README.txt new file mode 100644 index 0000000..0458043 --- /dev/null +++ b/10/templeRing/README.txt @@ -0,0 +1,23 @@ +templeRing data set -- 47 views sampled on a ring + +The object is a plaster replica of "Temple of the Dioskouroi" in Agrigento (Sicily) + +The (tight) bounding box for the templeRing model is +(-0.023121 -0.038009 -0.091940) +(0.078626 0.121636 -0.017395) + +-------------------------- +Created by Steve Seitz, James Diebel, Daniel Scharstein, Brian Curless, and Rick Szeliski + +This directory contains images with camera calibration parameters. + +The images were captured using the Stanford spherical light field gantry, and calibrated by the above people. + +*.png: images in png format +*_par.txt: camera parameters. There is one line for each image. The format for each line is: + "imgname.png k11 k12 k13 k21 k22 k23 k31 k32 k33 r11 r12 r13 r21 r22 r23 r31 r32 r33 t1 t2 t3" + The projection matrix for that image is given by K*[R t] + The image origin is top-left, with x increasing horizontally, y vertically +*_ang.txt: latitude, longitude angles for each image. Not needed to compute scene->image mapping, but may be helpful for visualization. + +Note that (lat, lon) corresponds to the same image as (-lat, 180 + lon), rotated 180 degrees in the image plane. While it would therefore be sufficient in principle to capture only positive latitude images, in practice some images are not useable because of shadows where the gantry occludes the light source. Because the gantry is in a different configuration for positive vs. negative latitude images, this gives us two chances to capture each viewpoint without shadows. It is for this reason that some images may have positive and others negative latitudes. This also explains why some images may appear to be "upside-down" (in fact they're rotated 180 degrees). diff --git a/10/templeRing/templeR0001.png b/10/templeRing/templeR0001.png new file mode 100644 index 0000000..4df7216 Binary files /dev/null and b/10/templeRing/templeR0001.png differ diff --git a/10/templeRing/templeR0002.png b/10/templeRing/templeR0002.png new file mode 100644 index 0000000..27ba8ff Binary files /dev/null and b/10/templeRing/templeR0002.png differ diff --git a/10/templeRing/templeR0003.png b/10/templeRing/templeR0003.png new file mode 100644 index 0000000..1ef8aa0 Binary files /dev/null and b/10/templeRing/templeR0003.png differ diff --git a/10/templeRing/templeR0004.png b/10/templeRing/templeR0004.png new file mode 100644 index 0000000..96ac3f6 Binary files /dev/null and b/10/templeRing/templeR0004.png differ diff --git a/10/templeRing/templeR0005.png b/10/templeRing/templeR0005.png new file mode 100644 index 0000000..e7906cd Binary files /dev/null and b/10/templeRing/templeR0005.png differ diff --git a/10/templeRing/templeR0006.png b/10/templeRing/templeR0006.png new file mode 100644 index 0000000..ff3a9c0 Binary files /dev/null and b/10/templeRing/templeR0006.png differ diff --git a/10/templeRing/templeR0007.png b/10/templeRing/templeR0007.png new file mode 100644 index 0000000..7190589 Binary files /dev/null and b/10/templeRing/templeR0007.png differ diff --git a/10/templeRing/templeR0008.png b/10/templeRing/templeR0008.png new file mode 100644 index 0000000..7c7812f Binary files /dev/null and b/10/templeRing/templeR0008.png differ diff --git a/10/templeRing/templeR0009.png b/10/templeRing/templeR0009.png new file mode 100644 index 0000000..486d4d7 Binary files /dev/null and b/10/templeRing/templeR0009.png differ diff --git a/10/templeRing/templeR0010.png b/10/templeRing/templeR0010.png new file mode 100644 index 0000000..eff328f Binary files /dev/null and b/10/templeRing/templeR0010.png differ diff --git a/10/templeRing/templeR0011.png b/10/templeRing/templeR0011.png new file mode 100644 index 0000000..f94cb42 Binary files /dev/null and b/10/templeRing/templeR0011.png differ diff --git a/10/templeRing/templeR0012.png b/10/templeRing/templeR0012.png new file mode 100644 index 0000000..8de2a69 Binary files /dev/null and b/10/templeRing/templeR0012.png differ diff --git a/10/templeRing/templeR0013.png b/10/templeRing/templeR0013.png new file mode 100644 index 0000000..ae113a7 Binary files /dev/null and b/10/templeRing/templeR0013.png differ diff --git a/10/templeRing/templeR0014.png b/10/templeRing/templeR0014.png new file mode 100644 index 0000000..7270c3b Binary files /dev/null and b/10/templeRing/templeR0014.png differ diff --git a/10/templeRing/templeR0015.png b/10/templeRing/templeR0015.png new file mode 100644 index 0000000..d06e3af Binary files /dev/null and b/10/templeRing/templeR0015.png differ diff --git a/10/templeRing/templeR0016.png b/10/templeRing/templeR0016.png new file mode 100644 index 0000000..1ffc99c Binary files /dev/null and b/10/templeRing/templeR0016.png differ diff --git a/10/templeRing/templeR0017.png b/10/templeRing/templeR0017.png new file mode 100644 index 0000000..1c1cbc8 Binary files /dev/null and b/10/templeRing/templeR0017.png differ diff --git a/10/templeRing/templeR0018.png b/10/templeRing/templeR0018.png new file mode 100644 index 0000000..24826aa Binary files /dev/null and b/10/templeRing/templeR0018.png differ diff --git a/10/templeRing/templeR0019.png b/10/templeRing/templeR0019.png new file mode 100644 index 0000000..1a2f927 Binary files /dev/null and b/10/templeRing/templeR0019.png differ diff --git a/10/templeRing/templeR0020.png b/10/templeRing/templeR0020.png new file mode 100644 index 0000000..8ac8a0a Binary files /dev/null and b/10/templeRing/templeR0020.png differ diff --git a/10/templeRing/templeR0021.png b/10/templeRing/templeR0021.png new file mode 100644 index 0000000..042e585 Binary files /dev/null and b/10/templeRing/templeR0021.png differ diff --git a/10/templeRing/templeR0022.png b/10/templeRing/templeR0022.png new file mode 100644 index 0000000..e4de149 Binary files /dev/null and b/10/templeRing/templeR0022.png differ diff --git a/10/templeRing/templeR0023.png b/10/templeRing/templeR0023.png new file mode 100644 index 0000000..a95a654 Binary files /dev/null and b/10/templeRing/templeR0023.png differ diff --git a/10/templeRing/templeR0024.png b/10/templeRing/templeR0024.png new file mode 100644 index 0000000..1353eba Binary files /dev/null and b/10/templeRing/templeR0024.png differ diff --git a/10/templeRing/templeR0025.png b/10/templeRing/templeR0025.png new file mode 100644 index 0000000..91f7500 Binary files /dev/null and b/10/templeRing/templeR0025.png differ diff --git a/10/templeRing/templeR0026.png b/10/templeRing/templeR0026.png new file mode 100644 index 0000000..86ae06e Binary files /dev/null and b/10/templeRing/templeR0026.png differ diff --git a/10/templeRing/templeR0027.png b/10/templeRing/templeR0027.png new file mode 100644 index 0000000..4fec4d9 Binary files /dev/null and b/10/templeRing/templeR0027.png differ diff --git a/10/templeRing/templeR0028.png b/10/templeRing/templeR0028.png new file mode 100644 index 0000000..3837aef Binary files /dev/null and b/10/templeRing/templeR0028.png differ diff --git a/10/templeRing/templeR0029.png b/10/templeRing/templeR0029.png new file mode 100644 index 0000000..3fb3bd0 Binary files /dev/null and b/10/templeRing/templeR0029.png differ diff --git a/10/templeRing/templeR0030.png b/10/templeRing/templeR0030.png new file mode 100644 index 0000000..fdcfd24 Binary files /dev/null and b/10/templeRing/templeR0030.png differ diff --git a/10/templeRing/templeR0031.png b/10/templeRing/templeR0031.png new file mode 100644 index 0000000..834ed76 Binary files /dev/null and b/10/templeRing/templeR0031.png differ diff --git a/10/templeRing/templeR0032.png b/10/templeRing/templeR0032.png new file mode 100644 index 0000000..02a1ae7 Binary files /dev/null and b/10/templeRing/templeR0032.png differ diff --git a/10/templeRing/templeR0033.png b/10/templeRing/templeR0033.png new file mode 100644 index 0000000..5879c0f Binary files /dev/null and b/10/templeRing/templeR0033.png differ diff --git a/10/templeRing/templeR0034.png b/10/templeRing/templeR0034.png new file mode 100644 index 0000000..35a1880 Binary files /dev/null and b/10/templeRing/templeR0034.png differ diff --git a/10/templeRing/templeR0035.png b/10/templeRing/templeR0035.png new file mode 100644 index 0000000..00211f9 Binary files /dev/null and b/10/templeRing/templeR0035.png differ diff --git a/10/templeRing/templeR0036.png b/10/templeRing/templeR0036.png new file mode 100644 index 0000000..319efa9 Binary files /dev/null and b/10/templeRing/templeR0036.png differ diff --git a/10/templeRing/templeR0037.png b/10/templeRing/templeR0037.png new file mode 100644 index 0000000..badf7ae Binary files /dev/null and b/10/templeRing/templeR0037.png differ diff --git a/10/templeRing/templeR0038.png b/10/templeRing/templeR0038.png new file mode 100644 index 0000000..7a09b35 Binary files /dev/null and b/10/templeRing/templeR0038.png differ diff --git a/10/templeRing/templeR0039.png b/10/templeRing/templeR0039.png new file mode 100644 index 0000000..809aa88 Binary files /dev/null and b/10/templeRing/templeR0039.png differ diff --git a/10/templeRing/templeR0040.png b/10/templeRing/templeR0040.png new file mode 100644 index 0000000..401c514 Binary files /dev/null and b/10/templeRing/templeR0040.png differ diff --git a/10/templeRing/templeR0041.png b/10/templeRing/templeR0041.png new file mode 100644 index 0000000..fa81e99 Binary files /dev/null and b/10/templeRing/templeR0041.png differ diff --git a/10/templeRing/templeR0042.png b/10/templeRing/templeR0042.png new file mode 100644 index 0000000..7e0a487 Binary files /dev/null and b/10/templeRing/templeR0042.png differ diff --git a/10/templeRing/templeR0043.png b/10/templeRing/templeR0043.png new file mode 100644 index 0000000..9ddf4ae Binary files /dev/null and b/10/templeRing/templeR0043.png differ diff --git a/10/templeRing/templeR0044.png b/10/templeRing/templeR0044.png new file mode 100644 index 0000000..ed366ad Binary files /dev/null and b/10/templeRing/templeR0044.png differ diff --git a/10/templeRing/templeR0045.png b/10/templeRing/templeR0045.png new file mode 100644 index 0000000..c094040 Binary files /dev/null and b/10/templeRing/templeR0045.png differ diff --git a/10/templeRing/templeR0046.png b/10/templeRing/templeR0046.png new file mode 100644 index 0000000..0d18585 Binary files /dev/null and b/10/templeRing/templeR0046.png differ diff --git a/10/templeRing/templeR0047.png b/10/templeRing/templeR0047.png new file mode 100644 index 0000000..e163d98 Binary files /dev/null and b/10/templeRing/templeR0047.png differ diff --git a/10/templeRing/templeR_ang.txt b/10/templeRing/templeR_ang.txt new file mode 100644 index 0000000..1f3d4ae --- /dev/null +++ b/10/templeRing/templeR_ang.txt @@ -0,0 +1,47 @@ +-82.173913 -180.0 templeR0001.png +-82.173913 -172.340426 templeR0002.png +-82.173913 -164.680851 templeR0003.png +-82.173913 -157.021277 templeR0004.png +-82.173913 -149.361702 templeR0005.png +-82.173913 -103.404255 templeR0006.png +-82.173913 -95.744681 templeR0007.png +-82.173913 -88.085106 templeR0008.png +-82.173913 -80.425532 templeR0009.png +-82.173913 -72.765957 templeR0010.png +-82.173913 -65.106383 templeR0011.png +-82.173913 -57.446809 templeR0012.png +-82.173913 49.787234 templeR0013.png +-82.173913 57.446809 templeR0014.png +-82.173913 65.106383 templeR0015.png +-82.173913 72.765957 templeR0016.png +-82.173913 80.425532 templeR0017.png +-82.173913 88.085106 templeR0018.png +-82.173913 95.744681 templeR0019.png +-82.173913 103.404255 templeR0020.png +-82.173913 111.06383 templeR0021.png +-82.173913 118.723404 templeR0022.png +-82.173913 126.382979 templeR0023.png +-82.173913 134.042553 templeR0024.png +-82.173913 141.702128 templeR0025.png +-82.173913 149.361702 templeR0026.png +-82.173913 157.021277 templeR0027.png +-82.173913 164.680851 templeR0028.png +-82.173913 172.340426 templeR0029.png +-82.173913 180.0 templeR0030.png +-82.173913 185.0 templeR0031.png +82.173913 185.0 templeR0032.png +82.173913 180.0 templeR0033.png +82.173913 172.340426 templeR0034.png +82.173913 164.680851 templeR0035.png +82.173913 157.021277 templeR0036.png +82.173913 149.361702 templeR0037.png +82.173913 141.702128 templeR0038.png +82.173913 134.042553 templeR0039.png +82.173913 72.765957 templeR0040.png +82.173913 65.106383 templeR0041.png +82.173913 -134.042553 templeR0042.png +82.173913 -141.702128 templeR0043.png +82.173913 -149.361702 templeR0044.png +82.173913 -157.021277 templeR0045.png +82.173913 -164.680851 templeR0046.png +82.173913 -172.340426 templeR0047.png diff --git a/10/templeRing/templeR_par.txt b/10/templeRing/templeR_par.txt new file mode 100644 index 0000000..efcf9ad --- /dev/null +++ b/10/templeRing/templeR_par.txt @@ -0,0 +1,48 @@ +47 +templeR0001.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.02187598221295043000 0.98329680886213122000 -0.18068986436368856000 0.99856708067455469000 -0.01266114646423925600 0.05199500709979997700 0.04883878372068499500 -0.18156839221560722000 -0.98216479887691122000 -0.0292149526928 -0.0241923869131 0.52269561933 +templeR0002.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.00272557078828676410 0.98353557606148900000 -0.18069405603193772000 0.99651741905514424000 -0.01773058775937118300 -0.08147797111723514800 -0.08334029507718225500 -0.17984270037758626000 -0.98015865977776562000 -0.0288222339759 -0.0306361018019 0.525505113107 +templeR0003.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.01625331773280620100 0.98386957700862299000 -0.17814736905031653000 0.97668439268305030000 -0.02252259937820530100 -0.21349550254417543000 -0.21406407160478280000 -0.17746376518636725000 -0.96056399333613396000 -0.0283090812583 -0.0366442193256 0.529139415773 +templeR0004.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.03472199972816788400 0.98429285136236500000 -0.17309524976677537000 0.93942192751145170000 -0.02695166652093134900 -0.34170169707277304000 -0.34099974317519038000 -0.17447403941185566000 -0.92373047190496216000 -0.0276846518951 -0.0421095229316 0.533533672172 +templeR0005.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.05235090589954815400 0.98479784589115438000 -0.16562785206491965000 0.88539496349116698000 -0.03093875352325572600 -0.46380874523331522000 -0.46188217250287084000 -0.17092687400923678000 -0.87031538103463302000 -0.0269600886818 -0.0469344855587 0.53860946783 +templeR0006.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.12459423323539082000 0.98895928871004091000 -0.08022345242268591500 0.28153512590579682000 -0.04229297064421112100 -0.95861842122676455000 -0.95142748011905343000 -0.14202404693648824000 -0.27315731761402628000 -0.0213278189953 -0.0585886486063 0.577671141223 +templeR0007.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.12902889964175443000 0.98972522526380413000 -0.06160780416270468500 0.15113946088460242000 -0.04177353409104934300 -0.98762940175607139000 -0.98005530783764949000 -0.13674410526986550000 -0.14419654383234767000 -0.0203322512475 -0.0573229419388 0.584525028903 +templeR0008.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.13094087941651120000 0.99047594118902094000 -0.04256637197781731200 0.01804620524972981900 -0.04054762015799551900 -0.99901462700783672000 -0.99122591802964632000 -0.13158001529581215000 -0.01256499108788178600 -0.0193677533749 -0.0551454095765 0.591150514125 +templeR0009.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.13029605274095349000 0.99119803974812748000 -0.02343895559951655200 -0.11536955428847780000 -0.03863710562518051000 -0.99257092442413708000 -0.98473996800343433000 -0.12662393165740077000 0.11938833840965069000 -0.0184515371141 -0.052094910199 0.597429363235 +templeR0010.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.12710592639585813000 0.99187863526170994000 -0.00456687928660556850 -0.24672704479464908000 -0.03607608317631801800 -0.96841328036616370000 -0.96071319801590616000 -0.12196429450467509000 0.24930876844593125000 -0.0175999521295 -0.0482258792521 0.603249531644 +templeR0011.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.12142742908621770000 0.99250558231074071000 0.01371307943275649300 -0.37368215477705607000 -0.03291025497981744900 -0.92697279481025718000 -0.91957437255867858000 -0.11768425637773697000 0.37487783227890548000 -0.0168281951954 -0.0436073606852 0.608507156804 +templeR0012.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.11336189346759781000 0.99306769310348053000 0.03107471678989884300 -0.49396938490232206000 -0.02919611501518744300 -0.86898897210910642000 -0.86205761285929272000 -0.11386019401947006000 0.49385476440871356000 -0.0161500382152 -0.0383217716083 0.613108417072 +templeR0013.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.11541167827420966000 0.99138900083137627000 0.06187078105613172400 -0.68405289691836879000 0.03416081723372646500 0.72863205583031487000 0.72024424935956100000 -0.12641553542381334000 0.68210507523987296000 -0.0193474918165 0.04321050765 0.589790751867 +templeR0014.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.12777196254899612000 0.99067700959105598000 0.04725873733079036200 -0.58073706790091917000 0.03610343749372974000 0.81329023095508723000 0.80400173106295025000 -0.13136058948124074000 0.57993586885009962000 -0.020311130356 0.0452044463785 0.583107596409 +templeR0015.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.13807231488914926000 0.98993281310425651000 0.03112975105337044400 -0.46705847237686349000 0.03736281839816532600 0.88343670015589459000 0.87337988254947896000 -0.13651756422101491000 0.46751527827122269000 -0.0213062156734 0.0462806066905 0.576221332616 +templeR0016.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.14612892702451932000 0.98916969148300282000 0.01377164253398251200 -0.34504569459932793000 0.03791648656454157900 0.93781971011760457000 0.92714066102459869000 -0.14179443394584298000 0.34684943877257168000 -0.022314990573 0.046419784801 0.569254845159 +templeR0017.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.15179802911763335000 0.98840126254897120000 -0.00450583483961328880 -0.21687603817600701000 0.03775456170465282800 0.97546879864789560000 0.96432470798019132000 -0.14709703349180536000 0.22009161800675056000 -0.023319453575 0.0456194969081 0.56233245026 +templeR0018.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.15497845444162242000 0.98764123913336677000 -0.02337651432514656000 -0.08483672679970129200 0.03687993341332458700 0.99571210713606428000 0.98426846360370535000 -0.15233073647342665000 0.08950384506078289100 -0.0243016797537 0.0438940243752 0.555577680012 +templeR0019.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.15561344905257055000 0.98690318367577234000 -0.04250365307344607100 0.04871602898881084000 0.03530820922726550500 0.99818839849034746000 0.98661603625398486000 -0.15740214868860103000 -0.04258357188737407100 -0.0252441415132 0.0412741578549 0.549111071704 +templeR0020.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.15369168129242777000 0.98620026698413343000 -0.06154592189520560800 0.18139894256925762000 0.03306743700817096200 0.98285348259263228000 0.97132553283451883000 -0.16222076935502000000 -0.17381349560262413000 -0.0261300203575 0.0378066496047 0.543048023786 +templeR0021.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.14924744465611009000 0.98554503244193847000 -0.08016351596979645600 0.31084431847048910000 0.03019760281070211000 0.94998100742020297000 0.93866980879233486000 -0.16670061131713207000 -0.30184415887715305000 -0.0269435079864 0.033553376496 0.537496729928 +templeR0022.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.14236004780071046000 0.98494917289452277000 -0.09802419907642616300 0.43474216742556909000 0.02674991963607963000 0.90015759157026587000 0.88923161473954448000 -0.17076173053075644000 -0.42439081839012904000 -0.0276700874835 0.0285902393879 0.532556254534 +templeR0023.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.13315239470762694000 0.98442332131574717000 -0.11480925151440334000 0.55088156138098920000 0.02278591058187676500 0.83427232221223668000 0.82389316365295051000 -0.17433165727608951000 -0.53926665774670712000 -0.0282967932082 0.0230058042978 0.528314759229 +templeR0024.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.12178879854502510000 0.98397686167544829000 -0.13021913928564777000 0.65718996007304553000 0.01837631450844677200 0.75350094057292005000 0.74382043863297265000 -0.17734668520280353000 -0.64442168517161924000 -0.02881244142 0.0168997270462 0.524847934694 +templeR0025.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.10847204002101654000 0.98361776094118725000 -0.14397887655737707000 0.75177031506244740000 0.01359981962341879100 0.65928479301218457000 0.65044231867598168000 -0.17975301184474191000 -0.73797943386530540000 -0.0292078304973 0.0103809691492 0.522217645599 +templeR0026.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.09343976044991392200 0.98335242736691753000 -0.15584291693450159000 0.83293481322054796000 0.00854166382610888240 0.55330519327431971000 0.54542516268715846000 -0.18150769562383026000 -0.81827033939708060000 -0.0294759046107 0.00356585968151 0.520470830197 +templeR0027.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.07696020733473872600 0.98318559576803610000 -0.16559954939928406000 0.89923509311540939000 0.00329210872029469690 0.43745332245840185000 0.43064297718262490000 -0.18257942461960402000 -0.88386162939051693000 -0.0296118800403 -0.00342398732706 0.519638659997 +templeR0028.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.05932746295193329400 0.98312024330151082000 -0.17307466409173006000 0.94948800754006690000 -0.00205516590155378630 0.31379658989656145000 0.30814408265822768000 -0.18294907352565445000 -0.93358280876354183000 -0.0296133302663 -0.0104638360839 0.519735985312 +templeR0029.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.04085617948912668300 0.98315753616677781000 -0.17813486934349265000 0.98279680502378086000 -0.00740473917804992600 0.18454162097682264000 0.18011444315379183000 -0.18261004604395678000 -0.96654661473268999000 -0.0294802294097 -0.017428062139 0.520761069394 +templeR0030.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.02187598221295046500 0.98329680886213122000 -0.18068986436368856000 0.99856708067455469000 -0.01266114646423924800 0.05199500709980022000 0.04883878372068523700 -0.18156839221560722000 -0.98216479887691122000 -0.0292149526928 -0.0241923869131 0.52269561933 +templeR0031.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.00937296764199993530 0.98344162453868444000 -0.18098264724082042000 0.99925305205489368000 -0.01599729078633601100 -0.03517704715403165800 -0.03748980443482706500 -0.18051774929964823000 -0.98285698692700341000 -0.0289726466043 -0.0284423587627 0.524433248357 +templeR0032.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.01469342934183854600 -0.99573306146750762000 -0.09110309234444970200 0.99863024345655671000 -0.01003794245248637200 -0.05135052643564889200 0.05021692929753969500 -0.09173281861943144400 0.99451664138920282000 0.0253214159027 -0.0293792487736 0.618360066 +templeR0033.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.00344069629113946850 -0.99586227407284378000 -0.09081020145059000300 0.99933561911064872000 -0.00671916164933668900 0.03582140761425173200 -0.03628335687017435900 -0.09062661830386635500 0.99522376080409014000 0.0251047679644 -0.0251578300064 0.620169213551 +templeR0034.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.01363654728930748000 -0.99598585067933787000 -0.08846598117119695800 0.98568300171389711000 -0.00148022139463806730 0.16860257731394196000 -0.16805673063078255000 -0.08949857088903123700 0.98170613785313243000 0.0248682934353 -0.0184255570846 0.6222160467 +templeR0035.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.03024984704142087700 -0.99601761198976480000 -0.08386813077789044600 0.95444181867062872000 0.00386319621827520880 0.29837206720415643000 -0.29685983481547856000 -0.08907296066251421700 0.95075772211018139000 0.02475084721 -0.0114787519258 0.6233549331 +templeR0036.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.04610273394227399500 -0.99595699121457582000 -0.07709870020861223100 0.90616957770959716000 0.00921573639400264520 0.42281410411234677000 -0.42039414167737649000 -0.08935738275892947400 0.90293079678888799000 0.0247545251495 -0.00444138222871 0.623565549002 +templeR0037.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.06091231694352535600 -0.99580507011728536000 -0.06827848836405432700 0.84172768564816447000 0.01448188430858370400 0.53970804907862679000 -0.53645521048635192000 -0.09034676173267966500 0.83907882215347451000 0.0248792616217 0.00256097179509 0.622844136013 +templeR0038.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.07441431485673913300 -0.99556455977275171000 -0.05756489441395285000 0.76226612623790635000 0.01956766406619288600 0.64696789666354271000 -0.64297189871304494000 -0.09202344183674107700 0.76034125471255454000 0.0251228306692 0.00940335116174 0.621203567953 +templeR0039.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.08636778769614070200 -0.99523975203165982000 -0.04514909992939995800 0.66920287236824150000 0.02438232111996040500 0.74267962004547960000 -0.73804344104027464000 -0.09435750310793368500 0.66812314788867089000 0.0254808858594 0.0159636552164 0.618673120373 +templeR0040.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.10793659924390045000 -0.99055951509200579000 0.08450761861721302300 -0.32994878599451571000 0.04449292035991074500 0.94294972223262863000 -0.93780781035583538000 -0.12966197244580752000 -0.32203149494584499000 0.0313386715547 0.0461955496235 0.574657858455 +templeR0041.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 0.10064436337366003000 -0.98987287691280146000 0.10011193571939807000 -0.45281218231871551000 0.04402436503296685400 0.89051837871388495000 -0.88590735388350439000 -0.13495755938745446000 -0.44379569342131825000 0.0322465423181 0.0461686603603 0.567676168654 +templeR0042.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.09868778720769125200 -0.99342356952296929000 -0.05805456202825097500 0.72029150408413001000 -0.03105781339599184000 -0.69297587358527946000 0.68661551817612676000 -0.11020446335472237000 0.71861958396388448000 0.028650693588 -0.0548464785114 0.59189613682 +templeR0043.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.08513547925382919400 -0.99399869748797920000 -0.06869162659612815200 0.80631333030563868000 -0.02823128526067348500 -0.59081452919165756000 0.58532961956802643000 -0.10568625229769273000 0.80387788409161853000 0.0278557511485 -0.0516471860246 0.598117193954 +templeR0044.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.07028452998918902100 -0.99451747087193221000 -0.07742793407223566600 0.87794743962593247000 -0.02482290748598041700 -0.47811307921684382000 0.47356982388922148000 -0.10158160952868461000 0.87487873360088786000 0.0271265258805 -0.0476405218956 0.603860347957 +templeR0045.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.05439995112000559800 -0.99497063228547356000 -0.08410758709882369700 0.93391553816646533000 -0.02089350177384347000 -0.35688265460073498000 0.35333045847956862000 -0.09796378143513864700 0.93035513898593913000 0.0264760306379 -0.042897984106 0.609023113594 +templeR0046.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.03776520743937929200 -0.99535009493528070000 -0.08861138538240269400 0.97321885941264064000 -0.01651318947821050300 -0.22928664648604202000 0.22675722875052765000 -0.09489732918046089900 0.96931710813530791000 0.0259158736918 -0.0375042045812 0.613513359853 +templeR0047.png 1520.400000 0.000000 302.320000 0.000000 1525.900000 246.870000 0.000000 0.000000 1.000000 -0.02067714204649669800 -0.99564908739937330000 -0.09085895969899916700 0.99515604481568609000 -0.01176013624456452200 -0.09760197570904494100 0.09610880429798678000 -0.09243697288587854300 0.99106937384832272000 0.0254560509115 -0.0315554340517 0.617250959345