from enum import Enum from typing import Dict from chainner_ext import DiffusionAlgorithm class ErrorDiffusionMap(Enum): FLOYD_STEINBERG = "FS" JARVIS_ET_AL = "JJN" STUCKI = "ST" ATKINSON = "A" BURKES = "B" SIERRA = "S" TWO_ROW_SIERRA = "S2" SIERRA_LITE = "SL" ERROR_PROPAGATION_MAP_LABELS = { ErrorDiffusionMap.FLOYD_STEINBERG: "Floyd-Steinberg", ErrorDiffusionMap.JARVIS_ET_AL: "Jarvis, Judice, and Ninke", ErrorDiffusionMap.STUCKI: "Stucki", ErrorDiffusionMap.ATKINSON: "Atkinson", ErrorDiffusionMap.BURKES: "Burkes", ErrorDiffusionMap.SIERRA: "Sierra", ErrorDiffusionMap.TWO_ROW_SIERRA: "Two Row Sierra", ErrorDiffusionMap.SIERRA_LITE: "Sierra Lite", } DIFFUSION_ALGORITHM_MAP: Dict[ErrorDiffusionMap, DiffusionAlgorithm] = { ErrorDiffusionMap.FLOYD_STEINBERG: DiffusionAlgorithm.FloydSteinberg, ErrorDiffusionMap.JARVIS_ET_AL: DiffusionAlgorithm.JarvisJudiceNinke, ErrorDiffusionMap.STUCKI: DiffusionAlgorithm.Stucki, ErrorDiffusionMap.ATKINSON: DiffusionAlgorithm.Atkinson, ErrorDiffusionMap.BURKES: DiffusionAlgorithm.Burkes, ErrorDiffusionMap.SIERRA: DiffusionAlgorithm.Sierra, ErrorDiffusionMap.TWO_ROW_SIERRA: DiffusionAlgorithm.TwoRowSierra, ErrorDiffusionMap.SIERRA_LITE: DiffusionAlgorithm.SierraLite, } # https://en.wikipedia.org/wiki/Ordered_dithering class ThresholdMap(Enum): BAYER_2 = "B2" BAYER_4 = "B4" BAYER_8 = "B8" BAYER_16 = "B16" THRESHOLD_MAP_LABELS = { ThresholdMap.BAYER_2: "Bayer 2x2", ThresholdMap.BAYER_4: "Bayer 4x4", ThresholdMap.BAYER_8: "Bayer 8x8", ThresholdMap.BAYER_16: "Bayer 16x16", }