Beispiel #1
0
        /// <summary>
        /// When converted to a Bitmap, the image will show red at corners, blue at uniform regions, and green at edges.
        /// </summary>
        /// <param name="sensitivity">The sensitivity threshold to use when determining edges and corners.</param>
        /// <returns>A representative Bitmap</returns>
        public unsafe BitmapSource ToBitmap(float sensitivity)
        {
            RGBImage rgb = new RGBImage(Rows, Columns);

            fixed(byte *dst = rgb.RawArray)
            {
                fixed(float *src = RawArray)
                {
                    byte * dstPtr = dst;
                    float *srcPtr = src;
                    int    length = Rows * Columns;

                    while (length-- > 0)
                    {
                        float lambda1 = *srcPtr++;
                        float lambda2 = *srcPtr++;
                        srcPtr += 4;
                        if (lambda1 < sensitivity && lambda2 < sensitivity)
                        {
                            dstPtr[2] = (byte)255;
                        }
                        else if (lambda2 < sensitivity)
                        {
                            dstPtr[1] = (byte)255;
                        }
                        else
                        {
                            *dstPtr = (byte)255;
                        }
                        dstPtr += 3;
                    }
                }
            }

            return(rgb.ToBitmap());
        }
Beispiel #2
0
 /// <summary>
 /// Saves the provided image to the destination path using the provided encoder.
 /// </summary>
 /// <param name="image">Image to save</param>
 /// <param name="filename">Path to destination file</param>
 /// <param name="encoder">Encoder to use</param>
 public static void Save(RGBImage image, string filename, BitmapEncoder encoder)
 {
     encoder.Frames.Add(BitmapFrame.Create(image.ToBitmap()));
     encoder.Save(filename);
 }