integrated finger process pipeline on remapped 2d image

This commit is contained in:
ykcheungab
2026-06-14 17:48:30 +08:00
parent 667bdf1961
commit 30bebcd439
36 changed files with 3593 additions and 2043 deletions
+34
View File
@@ -0,0 +1,34 @@
from dataclasses import dataclass
@dataclass
class MaskedPoissonConfig:
"""Configuration for masked Poisson solvers on irregular UV domains."""
method: str = "sparse" # "sparse" | "capfft"
max_boundary: int = 96
boundary_stride: int = 1
max_iters: int = 3
tol: float = 1e-4
reg: float = 1e-8
def __post_init__(self):
if self.method not in ("sparse", "capfft"):
raise ValueError("method must be one of: 'sparse', 'capfft'")
self.max_boundary = max(0, int(self.max_boundary))
self.boundary_stride = max(1, int(self.boundary_stride))
self.max_iters = max(1, int(self.max_iters))
self.tol = float(self.tol)
self.reg = float(self.reg)
@classmethod
def from_kwargs(cls, kwargs):
"""Build config from PoissonSolver / nHHD constructor kwargs."""
return cls(
method=kwargs.get("masked_poisson_solver", "sparse"),
max_boundary=kwargs.get("masked_poisson_max_boundary", 96),
boundary_stride=kwargs.get("masked_poisson_boundary_stride", 1),
max_iters=kwargs.get("masked_poisson_max_iters", 3),
tol=kwargs.get("masked_poisson_tol", 1e-4),
reg=kwargs.get("masked_poisson_reg", 1e-8),
)