/// <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()); }
/// <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); }