/// <summary>
        /// Vectorizes the image as the numeric byte values of its pixels.
        /// The output vector is output in height then width major order, with the channels being the most minor (if
        /// <paramref name="interleave"/> is true) or major (if <paramref name="interleave"/> is false) dimension.
        /// </summary>
        /// <param name="input">The input image to extract</param>
        /// <param name="useAlpha">Whether the alpha channel should be extracted</param>
        /// <param name="useRed">Whether the red channel should be extracted</param>
        /// <param name="useGreen">Whether the green channel should be extracted</param>
        /// <param name="useBlue">Whether the blue channel should be extracted</param>
        /// <param name="order">In which order extract channels.</param>
        /// <param name="interleave">Whether the pixel values should be interleaved, as opposed to being separated by channel</param>
        /// <returns>The vectorized image</returns>
        /// <seealso cref="ImagePixelExtractingEstimator"/>
        public static Vector <byte> ExtractPixelsAsBytes(this Custom <Bitmap> input, bool useAlpha = false, bool useRed = true,
                                                         bool useGreen = true, bool useBlue = true, ImagePixelExtractingEstimator.ColorsOrder order = ImagePixelExtractingEstimator.Defaults.Order, bool interleave = false)
        {
            var colParams = new ImagePixelExtractingTransformer.Column
            {
                UseAlpha   = useAlpha,
                UseRed     = useRed,
                UseGreen   = useGreen,
                UseBlue    = useBlue,
                Interleave = interleave,
                Convert    = false
            };

            return(new ImagePixelExtractingStaticExtensions.OutPipelineColumn <byte>(input, colParams));
        }
        /// <summary>
        /// Vectorizes the image as the numeric values of its pixels converted and possibly transformed to floating point values.
        /// The output vector is output in height then width major order, with the channels being the most minor (if
        /// <paramref name="interleave"/> is true) or major (if <paramref name="interleave"/> is false) dimension.
        /// </summary>
        /// <param name="input">The input image to extract</param>
        /// <param name="useAlpha">Whether the alpha channel should be extracted</param>
        /// <param name="useRed">Whether the red channel should be extracted</param>
        /// <param name="useGreen">Whether the green channel should be extracted</param>
        /// <param name="useBlue">Whether the blue channel should be extracted</param>
        /// <param name="order">In which order extract channels.</param>
        /// <param name="interleave">Whether the pixel values should be interleaved, as opposed to being separated by channel</param>
        /// <param name="scale">Scale the normally 0 through 255 pixel values by this amount</param>
        /// <param name="offset">Add this amount to the pixel values, before scaling</param>
        /// <returns>The vectorized image</returns>
        /// <seealso cref="ImagePixelExtractingEstimator"/>
        public static Vector <float> ExtractPixels(this Custom <Bitmap> input, bool useAlpha = false, bool useRed = true,
                                                   bool useGreen = true, bool useBlue = true, ImagePixelExtractingEstimator.ColorsOrder order = ImagePixelExtractingEstimator.Defaults.Order, bool interleave = false, float scale = 1.0f, float offset = 0.0f)
        {
            var colParams = new ImagePixelExtractingTransformer.Column
            {
                UseAlpha   = useAlpha,
                UseRed     = useRed,
                UseGreen   = useGreen,
                UseBlue    = useBlue,
                Interleave = interleave,
                Scale      = scale,
                Offset     = offset,
                Convert    = true
            };

            return(new ImagePixelExtractingStaticExtensions.OutPipelineColumn <float>(input, colParams));
        }