예제 #1
0
        public void calculate(ComputationBackend.OpenCl.ComputeContext computeContext)
        {
            int x, y;

            for( y = 0; y < inputRgb.getLength(); y++ )
            {
                for( x = 0; x < inputRgb.getWidth(); x++ )
                {
                    ColorRgb readColor;
                    float one;
                    float zero;
                    float value;

                    readColor = inputRgb.readAt(x, y);

                    one = (readColor * colorForOne).getMagnitude();
                    zero = (readColor * colorForZero).getMagnitude();

                    if( (one + zero) < 0.000001f )
                    {
                        value = 1.0f;
                    }
                    else
                    {
                        value = one / (one + zero);
                    }

                    resultMap.writeAt(x, y, value);
                }
            }
        }
예제 #2
0
        public void calculate(ComputationBackend.OpenCl.ComputeContext computeContext)
        {
            int x, y;

            for( y = 0; y < inputRgb.getLength(); y++ )
            {
                for( x = 0; x < inputRgb.getWidth(); x++ )
                {
                    ColorHsl pixelHsl;
                    ColorRgb pixelRgb;

                    pixelRgb = inputRgb.readAt(x, y);

                    pixelHsl = ColorConversion.rgbToHsl(pixelRgb);

                    resultMap.writeAt(x, y, pixelHsl);
                }
            }
        }
예제 #3
0
파일: OperatorMax.cs 프로젝트: PtrMan/ai2
        public void calculate(ComputationBackend.OpenCl.ComputeContext computeContext)
        {
            int x, y;

            System.Diagnostics.Debug.Assert(inputA.getWidth() == inputB.getWidth());
            System.Diagnostics.Debug.Assert(inputA.getLength() == inputB.getLength());

            result = new Map2d<float>((uint)inputA.getWidth(), (uint)inputA.getLength());

            for( y = 0; y < inputA.getLength(); y++ )
            {
                for( x = 0; x < inputA.getWidth(); x++ )
                {
                    float valueA, valueB, valueResult;

                    valueA = inputA.readAt(x, y);
                    valueB = inputB.readAt(x, y);

                    valueResult = System.Math.Max(valueA, valueB);

                    result.writeAt(x, y, valueResult);
                }
            }
        }
예제 #4
0
            public void putNewTrackedPixel(ComputationBackend.cs.ParticleMotionTracker.TrackedPixel newTrackedPixel, int absoluteWidth, int absoluteHeight)
            {
                Vector2<float> relativePosition;

                relativePosition = new Vector2<float>();
                relativePosition.x = newTrackedPixel.position.x / (float)absoluteWidth;
                relativePosition.y = newTrackedPixel.position.y / (float)absoluteHeight;

                if( isEmpty() )
                {
                    boundaryMin = new Vector2<float>();
                    boundaryMax = new Vector2<float>();

                    boundaryMin.x = relativePosition.x;
                    boundaryMin.y = relativePosition.y;
                    boundaryMax.x = relativePosition.x;
                    boundaryMax.y = relativePosition.y;

                    trackedPixels.Add(newTrackedPixel);
                }
                else
                {
                    boundaryMin = Vector2<float>.min(boundaryMin, relativePosition, relativePosition, relativePosition);
                    boundaryMax = Vector2<float>.max(boundaryMax, relativePosition, relativePosition, relativePosition);

                    trackedPixels.Add(newTrackedPixel);
                }
            }
예제 #5
0
 public void calculate(ComputationBackend.OpenCl.ComputeContext computeContext)
 {
     outputMap = Misc.Convolution2d.convolution(inputMap, gaborKernel);
 }