Class MedianFilterProcessor
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
-
objectMedianFilterProcessor
Constructors
MedianFilterProcessor(int, int, Dictionary<Vector2, HashSet<ushort>>)
public MedianFilterProcessor(int width, int height, Dictionary<Vector2, HashSet<ushort>> junctions)
Parameters
widthintheightintjunctionsDictionary<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
pixelsColor32[]
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
pixelsColor32[]
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
scatteredPixelsList<Vector2>
Returns
- List<List<Vector2>>