Table of Contents

Class MedianFilterProcessor

Namespace
Map.Rendering.Border
Assembly
MapAssembly.dll

Processes border pixels using median filtering and pixel chaining Extracted from BorderCurveExtractor for single responsibility

Contains logic for:

  • Median filtering (removes single-pixel noise from province ID texture)
  • Pixel chaining (converts scattered border pixels into ordered polylines)
  • Junction-aware chaining (starts/ends chains at junction points)
public class MedianFilterProcessor
Inheritance
object
MedianFilterProcessor

Constructors

MedianFilterProcessor(int, int, Dictionary<Vector2, HashSet<ushort>>)

public MedianFilterProcessor(int width, int height, Dictionary<Vector2, HashSet<ushort>> junctions)

Parameters

width int
height int
junctions Dictionary<Vector2, HashSet<ushort>>

Methods

ApplyMedianFilter(Color32[])

Apply 3x3 median filter to province ID texture Removes single-pixel noise by replacing each pixel with most common ID in neighborhood

public Color32[] ApplyMedianFilter(Color32[] pixels)

Parameters

pixels Color32[]

Returns

Color32[]

ApplyMedianFilterBurst(Color32[])

Apply median filter using Burst-compiled parallel job ~10-20x faster than the original single-threaded version

public Color32[] ApplyMedianFilterBurst(Color32[] pixels)

Parameters

pixels Color32[]

Returns

Color32[]

ChainBorderPixelsMultiple(List<Vector2>)

Chain scattered border pixels into multiple ordered polylines Repeatedly calls ChainBorderPixelsSingle until all pixels are consumed

public List<List<Vector2>> ChainBorderPixelsMultiple(List<Vector2> scatteredPixels)

Parameters

scatteredPixels List<Vector2>

Returns

List<List<Vector2>>