Median5x5KernelΒΆ

The Median5x5Kernel takes the median value in a 5x5 window centred on the current output pixel. It has no parameters.

kernel Median5x5Kernel : public ImageComputationKernel<eComponentWise>
{
  Image<eRead, eAccessRanged2D, eEdgeClamped> imageIn; 
  Image<eWrite, eAccessPoint> imageOut;          

  void init()
  {
    imageIn.setRange(-2, -2, 2, 2);
  }

  void process(int2 pos)
  {
    float vals[25];

    for (int j = -2, index = 0; j <= 2; j++) {
      for (int i = -2; i <= 2; i++, index++) {
        vals[index] = imageIn(i, j);
      }
    }
   
    //The median function takes an array of floating-point values and an array length.
    imageOut() = median(vals, 25);
    
  }
};