@@ -48,6 +48,24 @@ def sort_coord2d_y(crd: np.ndarray) -> np.ndarray:
4848 return np .sort (crd , order = "y" )
4949
5050
51+ def _volume_x_lay (vpar : VolumePar ) -> list [float ]:
52+ if hasattr (vpar , "get_X_lay" ):
53+ return list (vpar .get_X_lay ())
54+ return list (vpar .x_lay )
55+
56+
57+ def _volume_z_min_lay (vpar : VolumePar ) -> list [float ]:
58+ if hasattr (vpar , "get_Zmin_lay" ):
59+ return list (vpar .get_Zmin_lay ())
60+ return list (vpar .z_min_lay )
61+
62+
63+ def _volume_z_max_lay (vpar : VolumePar ) -> list [float ]:
64+ if hasattr (vpar , "get_Zmax_lay" ):
65+ return list (vpar .get_Zmax_lay ())
66+ return list (vpar .z_max_lay )
67+
68+
5169def epi_mm (xl , yl , cal1 , cal2 , mmp , vpar ) -> Tuple [float , float , float , float ]:
5270 """Return the end points of the epipolar line in the "second" camera.
5371
@@ -85,15 +103,19 @@ def epi_mm(xl, yl, cal1, cal2, mmp, vpar) -> Tuple[float, float, float, float]:
85103 pos , v = ray_tracing (xl , yl , cal1 , mmp )
86104
87105 # calculate min and max depth for position (valid only for one setup)
88- z_min = vpar .z_min_lay [0 ] + (pos [0 ] - vpar .x_lay [0 ]) * (
89- vpar .z_min_lay [1 ] - vpar .z_min_lay [0 ]
90- ) / (vpar .x_lay [1 ] - vpar .x_lay [0 ])
106+ x_lay = _volume_x_lay (vpar )
107+ z_min_lay = _volume_z_min_lay (vpar )
108+ z_max_lay = _volume_z_max_lay (vpar )
109+
110+ z_min = z_min_lay [0 ] + (pos [0 ] - x_lay [0 ]) * (
111+ z_min_lay [1 ] - z_min_lay [0 ]
112+ ) / (x_lay [1 ] - x_lay [0 ])
91113
92114 z_max = float (
93- vpar . z_max_lay [0 ]
94- + (pos [0 ] - vpar . x_lay [0 ])
95- * (vpar . z_max_lay [1 ] - vpar . z_max_lay [0 ])
96- / (vpar . x_lay [1 ] - vpar . x_lay [0 ])
115+ z_max_lay [0 ]
116+ + (pos [0 ] - x_lay [0 ])
117+ * (z_max_lay [1 ] - z_max_lay [0 ])
118+ / (x_lay [1 ] - x_lay [0 ])
97119 )
98120
99121 X = move_along_ray (z_min , pos , v )
@@ -142,12 +164,16 @@ def epi_mm_2D(
142164 """
143165 pos , v = ray_tracing (xl , yl , cal1 , mmp )
144166
145- z_min = vpar .z_min_lay [0 ] + (pos [0 ] - vpar .x_lay [0 ]) * (
146- vpar .z_min_lay [1 ] - vpar .z_min_lay [0 ]
147- ) / (vpar .x_lay [1 ] - vpar .x_lay [0 ])
148- z_max = vpar .z_max_lay [0 ] + (pos [0 ] - vpar .x_lay [0 ]) * (
149- vpar .z_max_lay [1 ] - vpar .z_max_lay [0 ]
150- ) / (vpar .x_lay [1 ] - vpar .x_lay [0 ])
167+ x_lay = _volume_x_lay (vpar )
168+ z_min_lay = _volume_z_min_lay (vpar )
169+ z_max_lay = _volume_z_max_lay (vpar )
170+
171+ z_min = z_min_lay [0 ] + (pos [0 ] - x_lay [0 ]) * (
172+ z_min_lay [1 ] - z_min_lay [0 ]
173+ ) / (x_lay [1 ] - x_lay [0 ])
174+ z_max = z_max_lay [0 ] + (pos [0 ] - x_lay [0 ]) * (z_max_lay [1 ] - z_max_lay [0 ]) / (
175+ x_lay [1 ] - x_lay [0 ]
176+ )
151177
152178 out = move_along_ray (0.5 * (z_min + z_max ), pos , v )
153179 return out
0 commit comments