Source code for pyvcad_medical.imaging
"""Helpers for inspecting DICOM series loaded with ``pyvcad.DICOMLoader``."""
__all__ = ["print_loaded_dicom_info"]
[docs]
def print_loaded_dicom_info(dicom_loader):
"""
Prints a summary of a loaded DICOM series.
The summary lists the voxel size, the dimensions reported by ``get_dimensions()``, the rescale
slope and intercept, the HU range, and the bounding box of ``as_volume()``.
Arguments:
dicom_loader (DICOMLoader): A loader that has read a series.
Example:
>>> import pyvcad as pv
>>> import pyvcad_medical as med
>>> loader = pv.DICOMLoader("path/to/dicom_series")
>>> med.print_loaded_dicom_info(loader)
"""
print(f"DICOM Series Info:")
dicom_voxel_size = dicom_loader.get_voxel_size()
print(f" Voxel Size (mm): {dicom_voxel_size.x:.4f} x {dicom_voxel_size.y:.4f} x {dicom_voxel_size.z:.4f}")
dicom_dimensions = dicom_loader.get_dimensions()
print(f" Dimensions (mm): {dicom_dimensions.x} x {dicom_dimensions.y} x {dicom_dimensions.z}")
rescale_slope = dicom_loader.get_rescale_slope()
rescale_intercept = dicom_loader.get_rescale_intercept()
print(f" Rescale Slope: {rescale_slope}")
print(f" Rescale Intercept: {rescale_intercept}")
hu_min, hu_max = dicom_loader.get_min_max_hu()
print(f" HU Range: {hu_min} to {hu_max}")
bbox_min, bbox_max = dicom_loader.as_volume().bounding_box()
print(f" Bbox Min (mm): {bbox_min.x:.2f}, {bbox_min.y:.2f}, {bbox_min.z:.2f}")
print(f" Bbox Max (mm): {bbox_max.x:.2f}, {bbox_max.y:.2f}, {bbox_max.z:.2f}")
print(f" BBox Size (mm): {bbox_max.x - bbox_min.x:.2f} x {bbox_max.y - bbox_min.y:.2f} x {bbox_max.z - bbox_min.z:.2f}")