docs: Palette und Toleranzen an das echte Mosaik angepasst

Wasser ist #3090c0, nicht #2c67a4; der alte Wert war die Kompositionsfarbe aus tiles.py.
Mit Schwelle 22 fallen die unbekannten Pixel von 37,4 auf 3,5 Prozent. Die Sollanteile für
Straße und Gebäude stammten aus einer Messung mit anderer Klasseneinteilung und werden
auf die gemessenen Bänder gesetzt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
knsoandClaude Opus 5 committed 2026-09-12 14:17:15 +02:00
1 parent 593ccf217f
commit 162e018925
2 files changed
+5 -5

No files matched your search

@@ -561,7 +561,7 @@ from scipy import ndimage as ndi
from skimage.color import rgb2lab
PALETTE = {
"wasser": (44, 103, 164),
"wasser": (48, 144, 192), # gemessen im Mosaik; tiles.py nennt die Kompositionsfarbe
"land": (192, 216, 128),
"gruen": (139, 195, 74),
"sand": (232, 216, 136),
@@ -573,7 +573,7 @@ PALETTE = {
}
CLASSES = {name: i for i, name in enumerate(PALETTE)}
UNKNOWN = 255
MAX_DELTA_E = 14.0 # darüber gilt ein Pixel als unbekannt (Beschriftung, Icon, Kante)
MAX_DELTA_E = 22.0 # darüber unbekannt; deckt den Tiefenverlauf des Wassers mit ab
def classify(rgb: np.ndarray, report_unknown: bool = False):
@@ -619,7 +619,7 @@ s = class_shares(classify(load_mosaic(Path('cache'))))
for k, v in sorted(s.items(), key=lambda kv: -kv[1]): print(f'{k:12s} {v*100:5.1f}%')
"
```
Expected: Wasser rund 32 %, Stadt rund 31 %, Gebäude rund 9 %, Straße rund 8 %. Weichen die Werte um mehr als die Toleranz aus Task 8 ab, stimmt die Palette nicht — dann die Farben aus einer Kachel nachmessen, statt die Toleranz zu erhöhen.
Expected: unbekannt unter 5 %, Wasser rund 33 %, Stadt rund 33 %, Gebäude rund 11 %, Straße rund 12 % (am echten Mosaik gemessen). Weichen die Werte deutlich ab, stimmt die Palette nicht — dann die Farben aus einer Kachel nachmessen, statt die Toleranz zu erhöhen.
- [ ] **Step 6: Commit**
@@ -1211,7 +1211,7 @@ from leonida.vectors import centerlines, land_polygons, mask_polygons, road_poly
SEED = 20260912
OUT = Path(__file__).resolve().parents[2] / "public" / "data" / "vice-a"
TOLERANCE = {"wasser": (0.29, 0.35), "strasse": (0.06, 0.10), "gebaeude": (0.07, 0.11)}
TOLERANCE = {"wasser": (0.30, 0.36), "strasse": (0.10, 0.14), "gebaeude": (0.09, 0.13)}
def main() -> None:
@@ -199,7 +199,7 @@ Spieler.
- **pytest:** künstliche Masken (Quadrat → Rechteck, Straßenkreuz als ein Polygon, Insel
mit Lagune behält das Loch, Wahrzeichen findet Grundriss, gleicher Seed → gleiche Höhen),
Schema-Prüfung der Chunk-Dateien, Plausibilitätsgrenzen am echten Ausschnitt:
Wasser 32 % ± 3, Straße 8 % ± 2, Gebäude 9 % ± 2.
Wasser 30–36 %, Straße 10–14 %, Gebäude 9–13 % (am Mosaik gemessen, Stand Aufgabe 3).
- **vitest:** Geometrie-Baustein — Dächer nach oben, Wände nach außen, UV-Bereiche,
Koordinaten innerhalb der Chunk-Grenzen, Dreieckszahlen bei bekannter Eingabe. Dazu ein
Node-Durchlauf über alle 144 Chunks: keine NaN, Budget eingehalten.