Technik & Architektur

Zehn Module, von Grund auf gebaut

KARC (Kotsch Adaptive Region Codec) ist zu 100 % in Python implementiert — NumPy, OpenCV und Pillow, CPU-only, ohne GPU. Jedes der zehn Module ist eigenständig und durch Unit-Tests abgedeckt.

10eigenständige Module, alle mit Unit-Tests
100 %Python — NumPy, OpenCV, Pillow
0GPU-Abhängigkeiten, läuft auf jeder CPU
8×8Blockgröße, in der jede Region ihre Darstellung wählt

Aufbau

Die zehn Module

Die Pipeline ist in zehn klar abgegrenzte Bereiche unterteilt. Jeder Bereich hat eine eng definierte Aufgabe und eigene Tests — Farbtransform bit-exakt, DCT identisch zu OpenCV, rANS bit-exakt, Codec-Roundtrip verlustkontrolliert.

01

Farbtransform

YCoCg-R: verlustfrei umkehrbare Farbtransform plus 4:2:0-Chroma-Subsampling. Gegen OpenCV bit-exakt getestet.

02

Segmentierung & Klassifikation

Zerlegt das Bild in 8×8-Blöcke und klassifiziert jeden Block nach Inhalt — die Grundlage der Region-as-representation-Idee.

03

Transform (DCT / PLANE)

Pro Block entweder eine affine PLANE (3 Parameter, glatte Flächen) oder eine DCT (Detail) — per Rate-Distortion ausgewählt.

04

Quantisierung

Frequenzgewichtete Quantisierung mit JPEG-artigen Tabellen — feinere Stufen für sichtbare, gröbere für unauffällige Frequenzen.

05

Gelernte Modelle

Vorberechnete Tabellen für Quantisierung und Entropie, an die Region-Klassen gekoppelt — keine Laufzeit-Trainingsschritte nötig.

06

Kontext & Entropie

rANS-Entropiecodierung mit klassen-konditionierten Tabellen. Die Region-Klasse ist der Kontext — null zusätzliche Signalbits.

07

Ratensteuerung

Steuert die Ziel-Bitrate bzw. Qualitätsstufe und balanciert pro Block den Kompromiss zwischen Bits und Fehler aus.

08

Bitstream-Format

Definiert das .karc-Containerformat: Header mit Magic „KARC“, Bildparameter und kontext-getrennte rANS-Substreams.

09

Integration

Verbindet alle Stufen zu Encoder und Decoder und stellt den verlustkontrollierten Roundtrip Bild → .karc → Bild sicher.

10

Evaluierung & Tests

Benchmark-Harness (BD-Rate, PSNR, SSIM) auf 20 Kodak-Bildern plus Unit-Tests für jedes Modul — alle Zahlen reproduzierbar.

Grundlage

Tech-Stack

Bewusst schlank und reproduzierbar: reines Python, etablierte Numerik-Bibliotheken und keinerlei GPU-Abhängigkeit. KARC läuft auf jeder CPU.

Python 3 NumPy OpenCV Pillow CPU-only keine GPU

Format

Das .karc-Bitstream-Format

Eine .karc-Datei beginnt mit einem kompakten Header zur Identifikation (Magic „KARC“) und Geometrie/Parametern. Danach folgen die Nutzdaten als mehrere, nach Kontext getrennte rANS-Substreams — so kann jeder Strom mit der für seine Region-Klasse passenden Tabelle decodiert werden.

container.karc — schematisch
// .karc-Container (schematisch)
"KARC"            // Magic-Bytes — Format-Kennung
version           // Versions-Byte
width, height     // Bildgeometrie
quant_profile     // Quantisierungs-/Qualitätsprofil
// — kontext-getrennte rANS-Substreams —
stream[PLANE]     // glatte Regionen
stream[DCT]       // Detail-Regionen
stream[DC / AC]    // DC-DPCM + AC-Lauflängen

Den Codec selbst ausprobieren

Eigenes Bild hochladen und KARC gegen JPEG messen.