Make quantitative charts data-auditable
This commit is contained in:
21
metrics.py
21
metrics.py
@@ -86,10 +86,20 @@ def slice_metric_curve(
|
||||
moving: np.ndarray,
|
||||
warped: np.ndarray,
|
||||
axis: int = 2,
|
||||
metric: str = "mse",
|
||||
) -> Dict[str, Iterable[float]]:
|
||||
"""逐切片计算 MSE,适合生成“配准前后误差曲线”。"""
|
||||
"""逐切片计算配准前后指标曲线。"""
|
||||
|
||||
fixed, moving, warped = crop_to_common_shape(fixed, moving, warped)
|
||||
metric_funcs = {
|
||||
"mse": mse,
|
||||
"mae": mae,
|
||||
"ncc": global_ncc,
|
||||
}
|
||||
if metric not in metric_funcs:
|
||||
raise ValueError(f"不支持的逐切片指标: {metric}")
|
||||
metric_fn = metric_funcs[metric]
|
||||
|
||||
before = []
|
||||
after = []
|
||||
|
||||
@@ -97,13 +107,13 @@ def slice_metric_curve(
|
||||
selector = [slice(None)] * 3
|
||||
selector[axis] = index
|
||||
selector = tuple(selector)
|
||||
before.append(mse(fixed[selector], moving[selector]))
|
||||
after.append(mse(fixed[selector], warped[selector]))
|
||||
before.append(metric_fn(fixed[selector], moving[selector]))
|
||||
after.append(metric_fn(fixed[selector], warped[selector]))
|
||||
|
||||
return {
|
||||
"slice_index": list(range(fixed.shape[axis])),
|
||||
"before_mse": before,
|
||||
"after_mse": after,
|
||||
f"before_{metric}": before,
|
||||
f"after_{metric}": after,
|
||||
}
|
||||
|
||||
|
||||
@@ -120,4 +130,3 @@ def ddf_summary(ddf_xyz: np.ndarray) -> Dict[str, float]:
|
||||
"ddf_p95": float(np.percentile(mag, 95)),
|
||||
"ddf_max": float(np.max(mag)),
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user