Skip to content

Commit f723448

Browse files
committed
Issue #79: Ensure orthogonality tolerance is passed through validate_rigid_matrix
1 parent d1af705 commit f723448

2 files changed

Lines changed: 14 additions & 3 deletions

File tree

sksurgerycore/utilities/validate_matrix.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ def validate_distortion_coefficients(matrix, check_for_2d=True):
6868
if matrix.shape[0] not in [4, 5, 8, 12, 14]: # See OpenCV docs
6969
raise ValueError("Distortion coefficients should have "
7070
+ "4, 5, 8, 12 or 14 columns.")
71-
7271
return True
7372

7473

@@ -142,11 +141,12 @@ def validate_translation_column_vector(matrix):
142141
return True
143142

144143

145-
def validate_rigid_matrix(matrix):
144+
def validate_rigid_matrix(matrix, tolerance=2e-6):
146145
"""
147146
Validates that a matrix is a 4x4 rigid transform.
148147
149148
:param matrix: rigid transform
149+
:param tolerance: tolerance for rotation matrix orthogonality check
150150
:raises: TypeError, ValueError if not
151151
:return: True
152152
"""
@@ -158,4 +158,5 @@ def validate_rigid_matrix(matrix):
158158
raise ValueError("Rigid matrix should have 4 rows.")
159159
if matrix.shape[1] != 4:
160160
raise ValueError("Rigid matrix should have 4 columns.")
161-
validate_rotation_matrix(matrix[0:3, 0:3])
161+
return validate_rotation_matrix(matrix[0:3, 0:3],
162+
tolerance=tolerance)

tests/utilities/test_validate_matrix.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,3 +205,13 @@ def test_rigid_matrix_invalid_because_wrong_columns():
205205

206206
def test_rigid_matrix_valid_because_identity():
207207
vm.validate_rigid_matrix(np.eye(4))
208+
209+
210+
def test_rigid_matrix_invalid_because_rotation_not_valid():
211+
matrix = np.eye(4)
212+
matrix[0][0] = 2.0 # Break rotation matrix
213+
with pytest.raises(ValueError):
214+
vm.validate_rigid_matrix(matrix)
215+
216+
# Should pass with a laxer tolerance
217+
assert vm.validate_rigid_matrix(matrix, tolerance=10.0)

0 commit comments

Comments
 (0)