Refine texture metrics and update default weights for premium pattern detection

This commit is contained in:
lm
2026-03-31 01:44:45 +02:00
parent e13bef7f52
commit 3e42b24110
10 changed files with 382 additions and 52 deletions
+2 -1
View File
@@ -8,6 +8,7 @@ from .constants import (
OVERLAY_COLOR,
EXCLUDE_BG_COLOR,
EXCLUDE_BG_TOLERANCE,
WEIGHTS,
PREVIEW_MAX_SIZE,
RESET_EXCLUSIONS_ON_IMAGE_CHANGE,
SUPPORTED_IMAGE_EXTENSIONS,
@@ -20,7 +21,7 @@ __all__ = [
"LANGUAGE",
"OVERLAY_COLOR",
"EXCLUDE_BG_COLOR",
"EXCLUDE_BG_TOLERANCE",
"WEIGHTS",
"PREVIEW_MAX_SIZE",
"RESET_EXCLUSIONS_ON_IMAGE_CHANGE",
"SUPPORTED_IMAGE_EXTENSIONS",
+22
View File
@@ -101,6 +101,15 @@ _OPTION_DEFAULTS = {
"exclude_bg_tolerance": 5,
}
_WEIGHT_DEFAULTS = {
"match_all": 20,
"match_keep": 20,
"brightness": 10,
"grouping": 10,
"continuity": 20,
"border": 20,
}
def _extract_options(data: dict[str, Any]) -> dict[str, Any]:
section = data.get("options")
@@ -122,6 +131,18 @@ def _extract_options(data: dict[str, Any]) -> dict[str, Any]:
return result
def _extract_weights(data: dict[str, Any]) -> dict[str, int]:
section = data.get("weights")
if not isinstance(section, dict):
return {}
result: dict[str, int] = {}
for key in _WEIGHT_DEFAULTS:
value = section.get(key)
if isinstance(value, int):
result[key] = max(0, min(100, value))
return result
DEFAULTS = {**_DEFAULTS_BASE, **_extract_default_overrides(_CONFIG_DATA)}
LANGUAGE = _extract_language(_CONFIG_DATA)
OPTIONS = {**_OPTION_DEFAULTS, **_extract_options(_CONFIG_DATA)}
@@ -129,3 +150,4 @@ RESET_EXCLUSIONS_ON_IMAGE_CHANGE = OPTIONS["reset_exclusions_on_image_change"]
OVERLAY_COLOR = OPTIONS["overlay_color"]
EXCLUDE_BG_COLOR = OPTIONS["exclude_bg_color"]
EXCLUDE_BG_TOLERANCE = OPTIONS["exclude_bg_tolerance"]
WEIGHTS = {**_WEIGHT_DEFAULTS, **_extract_weights(_CONFIG_DATA)}