Make quantitative charts data-auditable

This commit is contained in:
admin
2026-06-03 10:05:07 +08:00
parent 20a033cedd
commit 689660c8bc
2 changed files with 132 additions and 30 deletions

View File

@@ -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)),
}