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.

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.
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).
Experience
Last Sync: 2026-Q4
Dipl.-Kaufmann (Int. Business)
Structural business logic and international marketing management foundations.
TV Editor & Colorist (20Y)
Deep specialization in visual storytelling and high-precision digital image processing.
Deep Learning Specialization
GSERM, Univ. St. Gallen. Advanced neural network architectures under Prof. Damian Borth.
MSc Applied Data Science @ Artificial Intelligence
HSLU. Converting 20 years of visual domain expertise into scalable Computer Vision and AI architectures.
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.
Research and demonstration tool; not clinically validated for diagnostic workflows. Cross-domain evaluation across diverse scanner profiles is currently ongoing.
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
)
A cloud-based machine learning pipeline for built-up area and roof footprint segmentation from multi-spectral Sentinel-2 imagery (10 m resolution) using a U-Net architecture. Developed as a proof of concept for the Basel urban area to explore automated ESG and solar-potential reporting.
Constrained by Sentinel-2 10 m spatial resolution; building footprint boundaries are coarse approximations and proof-of-concept only, requiring sub-meter aerial imagery for cadastral-grade rooftop verification.

class Sentinel2Dataset(Dataset):
def __init__(self, tiff_path: Path, coordinates: list[tuple[float, float]]):
self.tiff_path = tiff_path
self.coordinates = coordinates
self.src = rasterio.open(self.tiff_path)
def __getitem__(self, idx: int) -> torch.Tensor:
window = get_bounding_window(self.coordinates[idx], size=64)
bands = self.src.read([2, 3, 4, 8], window=window)
return torch.from_numpy(bands).float()
An automated quality-control tool for industrial metal surfaces. Employs classical computer vision (adaptive thresholding and morphological filtering) in a modular strategy pattern—a deliberate, explainable, and low-latency architecture designed for robust inspection under non-uniform illumination.
Classical morphological approach sensitive to extreme illumination shifts and surface texture variations beyond calibrated threshold bounds; no deep learning anomaly detection integrated.

class InspectionPipeline:
def __init__(self, strategy: ThresholdStrategy, kernel_size: int = 5):
self.strategy = strategy
self.kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (kernel_size, kernel_size))
def process(self, image: np.ndarray) -> list[DefectContour]:
binary = self.strategy.apply(image)
cleaned = cv2.morphologyEx(binary, cv2.MORPH_OPEN, self.kernel)
contours, _ = cv2.findContours(cleaned, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
return [DefectContour(c) for c in contours if cv2.contourArea(c) > 20]
Each case study focuses on high-integrity image pipelines—from spectral signal normalization to low-latency edge deployment.
Discuss a projectA 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.
Research and demonstration tool; not clinically validated for diagnostic workflows. Cross-domain evaluation across diverse scanner profiles is currently ongoing.
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




