Move towards filter.

The result of this filter is an image, which is based on source image, but updated in the way to decrease diffirence with overlay image - source image is moved towards overlay image. The update equation is defined in the next way: res = src + Min( Abs( ovr - src ), step ) * Sign( ovr - src ).

The bigger is step size value the more resulting image will look like overlay image. For example, in the case if step size is equal to 255 (or 65535 for images with 16 bits per channel), the resulting image will be equal to overlay image regardless of source image's pixel values. In the case if step size is set to 1, the resulting image will very little differ from the source image. But, in the case if the filter is applied repeatedly to the resulting image again and again, it will become equal to overlay image in maximum 255 (65535 for images with 16 bits per channel) iterations.

The filter accepts 8 and 16 bpp grayscale images and 24, 32, 48 and 64 bpp color images for processing.

Sample usage:

// create filter MoveTowards filter = new MoveTowards( overlayImage, 20 ); // apply the filter Bitmap resultImage = filter.Apply( sourceImage );

Source image:

Overlay image:

Result image:

Inheritance: BaseInPlaceFilter2
Example #1
0
        private void SetFilter()
        {
            ImageType = ImageTypes.Rgb24bpp;
            Af.MoveTowards newFilter = new Af.MoveTowards();
            newFilter.OverlayImage = Overlay;
            newFilter.StepSize     = size;

            imageFilter = newFilter;
        }