class Settings extends BaseChildSettings {
        int samplesPerChannel = 4;
        double trimmingFraction = 0.01;
        double detectedBoardMin = 0.5;

        public int getSamplesPerChannel() {
            return samplesPerChannel;
        }
        public void setSamplesPerChannel(int samplesPerChannel) {
            this.samplesPerChannel = samplesPerChannel;
        }

//        public double getTrimmingFraction() {
//            return trimmingFraction;
//        }
//        public void setTrimmingFraction(double trimmingFraction) {
//            this.trimmingFraction = trimmingFraction;
//        }

        public double getDetectedBoardMin() {
            return detectedBoardMin;
        }
        public void setDetectedBoardMin(double detectedBoardMin) {
            this.detectedBoardMin = detectedBoardMin;
        }
    }

    private Settings settings;

    private MarkerDetector markerDetector = null;
    private MarkedPlane boardPlane = null;
    private CameraDevice camera = null;
    private ProjectorDevice projector = null;
    private Color[] projectorColors = null, cameraColors = null;
    private int counter = 0;

    private CvMat boardSrcPts, boardDstPts;
    private CvMat projSrcPts, projDstPts;
    private CvMat camKinv;
    private IplImage mask, mask2, undistImage;

    public int getColorCount() {
        return counter;
    }

    public Color[] getProjectorColors() {<FILL_FUNCTION_BODY>

        double invgamma = 1/projector.getSettings().getResponseGamma();
        int s = settings.samplesPerChannel;
        if (projectorColors == null) {
            projectorColors = new Color[s*s*s];
            cameraColors    = new Color[s*s*s];
            for (int i = 0; i < projectorColors.length; i++) {
                 int j = i/s;
                 int k = j/s;
                double r = Math.pow((double)(i%s)/(s-1), invgamma);
                double g = Math.pow((double)(j%s)/(s-1), invgamma);
                double b = Math.pow((double)(k%s)/(s-1), invgamma);
                projectorColors[i] = new Color((float)r, (float)g, (float)b);
            }
        }
        return projectorColors;
    
<no_super_class>