Medical Image Analysis

Medical image analysis applies computer vision to X-ray, CT, MRI, ultrasound, microscopy, pathology, and other clinical images. It includes MRI classification, MRI segmentation, detection, measurement, registration, triage, and longitudinal change analysis. The same metric can imply different clinical risk depending on workflow.

This page is the medical-imaging hub inside computer vision. The domain is not separate from computer vision methodologically: it still uses classification, detection, segmentation, registration, self-supervised pretraining, and benchmarking. It is separate operationally because patient-level splits, site shift, acquisition protocols, calibration, and clinical error costs dominate whether a model is usable.

task familytypical outputcomputer-vision link
ClassificationScan-, series-, slice-, or patient-level label.Image classification, MRI classification
SegmentationPixel or voxel masks for anatomy, lesions, organs, or tumor regions.Semantic segmentation, MRI segmentation
Detection and measurementLesion boxes, counts, diameters, volume, or change over time.Object detection, detection and segmentation metrics
Representation learningEncoder features for scarce-label clinical tasks.Self supervised visual learning, domain shift

Triage scoring

For a binary triage model, the model estimates

Here is the image or study, denotes the clinically positive class, and is the model’s estimated probability for that class. The probability is not the action by itself; the action depends on the threshold and workflow.

then a threshold turns probability into action. Sensitivity and specificity are

Here and count positive cases correctly caught or missed, while and count negative cases correctly dismissed or falsely flagged. Sensitivity measures how many true positives are caught; specificity measures how many true negatives are left alone.

Patient-level splitting is part of the mechanism, not a bookkeeping detail: slices or studies from the same patient cannot be treated as independent test examples.

Worked example

The code below holds the same ten cases fixed and changes only the triage threshold. It is valuable because the output shows that a threshold is a clinical operating point, not an afterthought after model training.

import numpy as np
 
y_true = np.array([0,0,1,1,0,1,0,0,1,0])
probs = np.array([.05,.2,.75,.55,.1,.9,.35,.15,.45,.05])
for t in [.5, .7]:
    pred = (probs >= t).astype(int)
    tp = ((pred == 1) & (y_true == 1)).sum()
    fn = ((pred == 0) & (y_true == 1)).sum()
    fp = ((pred == 1) & (y_true == 0)).sum()
    tn = ((pred == 0) & (y_true == 0)).sum()
    print("threshold", t, "sensitivity", round(tp/(tp+fn), 3), "specificity", round(tn/(tn+fp), 3), "positives", int(pred.sum()))

Observed output:

threshold 0.5 sensitivity 0.75 specificity 1.0 positives 3
threshold 0.7 sensitivity 0.5 specificity 1.0 positives 2

Raising the threshold reduces false alarms here but also misses another positive case. That tradeoff should be chosen with the clinical use case, not by accuracy alone.

The same decision appears visually as a threshold tradeoff: moving the threshold right usually increases specificity but can reduce sensitivity.

Sensitivity falls and specificity rises as the triage threshold becomes stricter.

Caveats

Models can learn scanner, hospital, protocol, text overlays, or follow-up leakage. Domain shift is common across sites. For measurement tasks, overlap metrics from detection and segmentation metrics must be paired with clinically meaningful boundary and volume errors.

References