Skip to content
REF.ID: SP-DS-2026
Available for projects
Basel, CH / Remote

Bridging Visual Expertise
with Data Science.

Combining 20 years of digital signal processing and color science with modern machine learning. I build computer vision pipelines for complex image data - from digital pathology to satellite imagery.

Operator_Profile
Portrait of Stephan Pfeiffer
ID_CONFIRMED

Profile

Bridging visual domain knowledge, data integrity, and machine learning pipelines.

Business_&_Tech_Bridge

I act as the bridge between technical execution and business goals. With a background in International Business (Dipl.-Kaufmann), I ensure that machine learning pipelines solve real-world problems in high-stakes fields like Life Sciences and ESG.

Data_Integrity

A model is only as good as its data. My experience with complex visual pipelines ensures that every system I build is founded on robust validation, quality assurance, and clean signal processing.

[TECHNICAL_STACK_MANIFEST]

My technical architecture bridges classical imaging physics with modern deep learning. I specialize in high-integrity Python pipelines for complex visual data (GeoTIFFs, Digital Pathology).

Core Engines
PyTorchOpenCVNumPyRasterioMatplotlibSeaborn
Architecture & Ops
Pydantic V2Mypy (Strict)GitHub ActionsStreamlit
LanguagesDE (Native), EN (Fluent), ES, PT
Domain FocusDigital Pathology, ESG, Media
Core SignalCIELAB/HSV, Classical CV, Deep Learning
AvailabilityOpen to projects

Experience

Doc. Type: Career_Architecture_v2.4
Last Sync: 2026-Q4
MOD_01FOUNDATION_LOCKED

Dipl.-Kaufmann (Int. Business)

Structural business logic and international marketing management foundations.

Technical Metadata:
Strategic_MgmtLinguistic_S1Marketing_Quant
MOD_02CORE_EXPERTISE

TV Editor & Colorist (20Y)

Deep specialization in visual storytelling and high-precision digital image processing.

Technical Metadata:
Chromatic_EngNLE_ArchitectureSignal_QC
MOD_03EXECUTED_06.26

Deep Learning Specialization

GSERM, Univ. St. Gallen. Advanced neural network architectures under Prof. Damian Borth.

Technical Metadata:
CNNsVision_TransformersPytorch
MOD_04ACTIVE_09.26

MSc Applied Data Science @ Artificial Intelligence

HSLU. Converting 20 years of visual domain expertise into scalable Computer Vision and AI architectures.

Technical Metadata:
Computer_VisionEdge_AITrustworthy_AI
hub
Background & Focus: My trajectory combines business foundations (Dipl.-Kaufmann), 20 years of digital imaging and signal processing, and applied machine learning (MSc HSLU). This foundation enables robust computer vision pipelines tailored to real-world industrial and clinical constraints.

Projects

A specialized digital pathology tool for standardizing medical histology images. By applying color normalization methods such as Reinhard, Macenko and CUT, it reduces color variation across labs and scanners, a key factor for the robustness of AI models in pathology.

Scope & Limitations

Research and demonstration tool; not clinically validated for diagnostic workflows. Cross-domain evaluation across diverse scanner profiles is currently ongoing.

3
Methods
SSIM · PSNR · ΔLab
Eval

Interactive Stain Comparison

Drag the slider to compare raw scan vs. Reinhard LAB normalization output

Raw Scan — Domain Shift Artifact
RAW SCAN
Normalized Output — Reinhard LAB
NORMALIZED
Technical Stack
Core EngineOpenCV, NumPy, CIELAB, Optical Density / SVD, PyTorch
EngineeringPyTest, GitHub Actions CI, Modular Architecture, Reproducibility
DeliveryStreamlit, Digital Pathology, WSI
Code Excerpt: src/normalizers/reinhard.py
class ReinhardNormalizer(BaseStainNormalizer):
    def fit(self, target_image: np.ndarray) -> "ReinhardNormalizer":
        target_lab = cv2.cvtColor(target_image, cv2.COLOR_BGR2LAB).astype(np.float32)
        mask = self._mask(target_image)
        self.target_mean, self.target_std = get_mean_std_masked(target_lab, mask=mask)
        self.is_fitted = True
        return self

    def transform(self, source_image: np.ndarray) -> np.ndarray:
        if not self.is_fitted:
            raise RuntimeError("Normalizer must be fit before transform()")
        src_lab = cv2.cvtColor(source_image, cv2.COLOR_BGR2LAB).astype(np.float32)
        mask = self._mask(source_image)
        src_mean, src_std = get_mean_std_masked(src_lab, mask=mask)
        return _apply_reinhard_stats(
            src_lab, src_mean, src_std, self.target_mean, self.target_std, mask=mask
        )

Visual INTUITION.
Scalable PRECISION.

Open for Computer Vision & ML Engineering Projects | Basel / RemoteCollaboration, Applied Research & Industry EngagementsDeep Visual Domain Knowledge + AI Scalability

LET'S CONNECT