本文整理汇总了C#中Filter.ApplyFilter方法的典型用法代码示例。如果您正苦于以下问题:C# Filter.ApplyFilter方法的具体用法?C# Filter.ApplyFilter怎么用?C# Filter.ApplyFilter使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Filter
的用法示例。
在下文中一共展示了Filter.ApplyFilter方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Sharpen
/// <summary>
/// Sharpen a DFBitmap.
/// </summary>
/// <param name="colors">Source Color32 array.</param>
/// <param name="width">Image width.</param>
/// <param name="height">Image height.</param>
/// <returns>Sharpened image.</returns>
public static Color32[] Sharpen(ref Color32[] colors, int width, int height)
{
// Create sharpen matrix
Filter sharpenMatrix = new Filter(3, 3);
sharpenMatrix.MyFilter[0, 0] = -1;
sharpenMatrix.MyFilter[0, 1] = -1;
sharpenMatrix.MyFilter[0, 2] = -1;
sharpenMatrix.MyFilter[1, 0] = 1;
sharpenMatrix.MyFilter[1, 1] = 12;
sharpenMatrix.MyFilter[1, 2] = 1;
sharpenMatrix.MyFilter[2, 0] = -1;
sharpenMatrix.MyFilter[2, 1] = -1;
sharpenMatrix.MyFilter[2, 2] = -1;
return sharpenMatrix.ApplyFilter(colors, width, height);
}
示例2: Emboss
/// <summary>
/// Emboss function
/// </summary>
/// <param name="Image">Image to manipulate</param>
/// <param name="FileName">File to save to</param>
/// <returns>A bitmap image</returns>
public static Bitmap Emboss(this Bitmap Image, string FileName = "")
{
if (Image == null)
throw new ArgumentNullException("Image");
ImageFormat FormatUsing = FileName.GetImageFormat();
Filter TempFilter = new Filter(3, 3);
TempFilter.MyFilter[0, 0] = -2;
TempFilter.MyFilter[0, 1] = -1;
TempFilter.MyFilter[1, 0] = -1;
TempFilter.MyFilter[1, 1] = 1;
TempFilter.MyFilter[2, 1] = 1;
TempFilter.MyFilter[1, 2] = 1;
TempFilter.MyFilter[2, 2] = 2;
TempFilter.MyFilter[0, 2] = 0;
TempFilter.MyFilter[2, 0] = 0;
Bitmap NewBitmap = TempFilter.ApplyFilter(Image);
if (!string.IsNullOrEmpty(FileName))
NewBitmap.Save(FileName, FormatUsing);
return NewBitmap;
}
示例3: GetBumpMap
/// <summary>
/// Gets a bump map from source Color32 array.
/// </summary>
/// <param name="colors">Source Color32 array.</param>
/// <param name="width">Image width.</param>
/// <param name="height">Image height.</param>
/// <returns>DFBitmap bump image.</returns>
public static Color32[] GetBumpMap(ref Color32[] colors, int width, int height)
{
// Convert to average intensity
Color32[] newColors = MakeAverageIntensity(colors);
// Create horizontal sobel matrix
Filter horizontalMatrix = new Filter(3, 3);
horizontalMatrix.MyFilter[0, 0] = -1;
horizontalMatrix.MyFilter[0, 1] = 0;
horizontalMatrix.MyFilter[0, 2] = 1;
horizontalMatrix.MyFilter[1, 0] = -2;
horizontalMatrix.MyFilter[1, 1] = 0;
horizontalMatrix.MyFilter[1, 2] = 2;
horizontalMatrix.MyFilter[2, 0] = -1;
horizontalMatrix.MyFilter[2, 1] = 0;
horizontalMatrix.MyFilter[2, 2] = 1;
// Create vertical sobel matrix
Filter verticalMatrix = new Filter(3, 3);
verticalMatrix.MyFilter[0, 0] = 1;
verticalMatrix.MyFilter[0, 1] = 2;
verticalMatrix.MyFilter[0, 2] = 1;
verticalMatrix.MyFilter[1, 0] = 0;
verticalMatrix.MyFilter[1, 1] = 0;
verticalMatrix.MyFilter[1, 2] = 0;
verticalMatrix.MyFilter[2, 0] = -1;
verticalMatrix.MyFilter[2, 1] = -2;
verticalMatrix.MyFilter[2, 2] = -1;
// Apply filters
Color32[] horz = horizontalMatrix.ApplyFilter(newColors, width, height);
Color32[] vert = verticalMatrix.ApplyFilter(newColors, width, height);
// Merge
Color32[] result = new Color32[colors.Length];
for (int i = 0; i < colors.Length; i++)
{
int r = Clamp((horz[i].r + vert[i].r), 0, 255);
int g = Clamp((horz[i].g + vert[i].g), 0, 255);
int b = Clamp((horz[i].b + vert[i].b), 0, 255);
result[i] = new Color32((byte)r, (byte)g, (byte)b, 255);
}
return result;
}
示例4: BoxBlur
/// <summary>
/// Does smoothing using a box blur
/// </summary>
/// <param name="Image">Image to manipulate</param>
/// <param name="Size">Size of the aperture</param>
/// <param name="FileName">File to save to</param>
/// <returns>A bitmap object</returns>
public static Bitmap BoxBlur(this Bitmap Image, int Size = 3, string FileName = "")
{
Image.ThrowIfNull("Image");
ImageFormat FormatUsing = FileName.GetImageFormat();
Filter TempFilter = new Filter(Size, Size);
for (int x = 0; x < Size; ++x)
for (int y = 0; y < Size; ++y)
TempFilter.MyFilter[x, y] = 1;
Bitmap NewBitmap = TempFilter.ApplyFilter(Image);
if (!string.IsNullOrEmpty(FileName))
NewBitmap.Save(FileName, FormatUsing);
return NewBitmap;
}
示例5: BumpMap
/// <summary>
/// Creates the bump map
/// </summary>
/// <param name="Direction">Direction of the bump map</param>
/// <param name="Image">Image to create a bump map from</param>
/// <param name="Invert">Inverts the direction of the bump map</param>
/// <returns>The resulting bump map</returns>
public static Bitmap BumpMap(this Bitmap Image, Direction Direction = Direction.TopBottom, bool Invert = false)
{
Image.ThrowIfNull("Image");
Filter EdgeDetectionFilter = new Filter(3, 3);
if (Direction == Direction.TopBottom)
{
if (!Invert)
{
EdgeDetectionFilter.MyFilter[0, 0] = 1;
EdgeDetectionFilter.MyFilter[1, 0] = 2;
EdgeDetectionFilter.MyFilter[2, 0] = 1;
EdgeDetectionFilter.MyFilter[0, 1] = 0;
EdgeDetectionFilter.MyFilter[1, 1] = 0;
EdgeDetectionFilter.MyFilter[2, 1] = 0;
EdgeDetectionFilter.MyFilter[0, 2] = -1;
EdgeDetectionFilter.MyFilter[1, 2] = -2;
EdgeDetectionFilter.MyFilter[2, 2] = -1;
}
else
{
EdgeDetectionFilter.MyFilter[0, 0] = -1;
EdgeDetectionFilter.MyFilter[1, 0] = -2;
EdgeDetectionFilter.MyFilter[2, 0] = -1;
EdgeDetectionFilter.MyFilter[0, 1] = 0;
EdgeDetectionFilter.MyFilter[1, 1] = 0;
EdgeDetectionFilter.MyFilter[2, 1] = 0;
EdgeDetectionFilter.MyFilter[0, 2] = 1;
EdgeDetectionFilter.MyFilter[1, 2] = 2;
EdgeDetectionFilter.MyFilter[2, 2] = 1;
}
}
else
{
if (!Invert)
{
EdgeDetectionFilter.MyFilter[0, 0] = -1;
EdgeDetectionFilter.MyFilter[0, 1] = -2;
EdgeDetectionFilter.MyFilter[0, 2] = -1;
EdgeDetectionFilter.MyFilter[1, 0] = 0;
EdgeDetectionFilter.MyFilter[1, 1] = 0;
EdgeDetectionFilter.MyFilter[1, 2] = 0;
EdgeDetectionFilter.MyFilter[2, 0] = 1;
EdgeDetectionFilter.MyFilter[2, 1] = 2;
EdgeDetectionFilter.MyFilter[2, 2] = 1;
}
else
{
EdgeDetectionFilter.MyFilter[0, 0] = 1;
EdgeDetectionFilter.MyFilter[0, 1] = 2;
EdgeDetectionFilter.MyFilter[0, 2] = 1;
EdgeDetectionFilter.MyFilter[1, 0] = 0;
EdgeDetectionFilter.MyFilter[1, 1] = 0;
EdgeDetectionFilter.MyFilter[1, 2] = 0;
EdgeDetectionFilter.MyFilter[2, 0] = -1;
EdgeDetectionFilter.MyFilter[2, 1] = -2;
EdgeDetectionFilter.MyFilter[2, 2] = -1;
}
}
EdgeDetectionFilter.Offset = 127;
using (Bitmap TempImage = EdgeDetectionFilter.ApplyFilter(Image))
{
return TempImage.BlackAndWhite();
}
}
示例6: SobelEmboss
/// <summary>
/// Sobel emboss function
/// </summary>
/// <param name="Image">Image to manipulate</param>
/// <param name="FileName">File to save to</param>
/// <returns>A bitmap image</returns>
public static Bitmap SobelEmboss(this Bitmap Image, string FileName = "")
{
Image.ThrowIfNull("Image");
ImageFormat FormatUsing = FileName.GetImageFormat();
Filter TempFilter = new Filter(3, 3);
TempFilter.MyFilter[0, 0] = -1;
TempFilter.MyFilter[0, 1] = 0;
TempFilter.MyFilter[0, 2] = 1;
TempFilter.MyFilter[1, 0] = -2;
TempFilter.MyFilter[1, 1] = 0;
TempFilter.MyFilter[1, 2] = 2;
TempFilter.MyFilter[2, 0] = -1;
TempFilter.MyFilter[2, 1] = 0;
TempFilter.MyFilter[2, 2] = 1;
TempFilter.Offset = 127;
Bitmap NewBitmap = TempFilter.ApplyFilter(Image);
if (!string.IsNullOrEmpty(FileName))
NewBitmap.Save(FileName, FormatUsing);
return NewBitmap;
}
示例7: SobelEdgeDetection
/// <summary>
/// Sobel edge detection function
/// </summary>
/// <param name="Input">Image to manipulate</param>
/// <param name="FileName">File to save to</param>
/// <returns>A bitmap image</returns>
public static Bitmap SobelEdgeDetection(this Bitmap Input, string FileName = "")
{
Input.ThrowIfNull("Input");
ImageFormat FormatUsing = FileName.GetImageFormat();
using (Bitmap TempImage = Input.BlackAndWhite())
{
Filter TempFilter = new Filter(3, 3);
TempFilter.MyFilter[0, 0] = -1;
TempFilter.MyFilter[0, 1] = 0;
TempFilter.MyFilter[0, 2] = 1;
TempFilter.MyFilter[1, 0] = -2;
TempFilter.MyFilter[1, 1] = 0;
TempFilter.MyFilter[1, 2] = 2;
TempFilter.MyFilter[2, 0] = -1;
TempFilter.MyFilter[2, 1] = 0;
TempFilter.MyFilter[2, 2] = 1;
TempFilter.Absolute = true;
using (Bitmap TempImageX = TempFilter.ApplyFilter(TempImage))
{
TempFilter = new Filter(3, 3);
TempFilter.MyFilter[0, 0] = 1;
TempFilter.MyFilter[0, 1] = 2;
TempFilter.MyFilter[0, 2] = 1;
TempFilter.MyFilter[1, 0] = 0;
TempFilter.MyFilter[1, 1] = 0;
TempFilter.MyFilter[1, 2] = 0;
TempFilter.MyFilter[2, 0] = -1;
TempFilter.MyFilter[2, 1] = -2;
TempFilter.MyFilter[2, 2] = -1;
TempFilter.Absolute = true;
using (Bitmap TempImageY = TempFilter.ApplyFilter(TempImage))
{
using (Bitmap NewBitmap = new Bitmap(TempImage.Width, TempImage.Height))
{
BitmapData NewData = NewBitmap.LockImage();
BitmapData OldData1 = TempImageX.LockImage();
BitmapData OldData2 = TempImageY.LockImage();
int NewPixelSize = NewData.GetPixelSize();
int OldPixelSize1 = OldData1.GetPixelSize();
int OldPixelSize2 = OldData2.GetPixelSize();
int Width = NewBitmap.Width;
int Height = NewBitmap.Height;
Parallel.For(0, Width, x =>
{
for (int y = 0; y < Height; ++y)
{
Color Pixel1 = OldData1.GetPixel(x, y, OldPixelSize1);
Color Pixel2 = OldData2.GetPixel(x, y, OldPixelSize2);
NewData.SetPixel(x, y,
Color.FromArgb((Pixel1.R + Pixel2.R).Clamp(255, 0),
(Pixel1.G + Pixel2.G).Clamp(255, 0),
(Pixel1.B + Pixel2.B).Clamp(255, 0)),
NewPixelSize);
}
});
NewBitmap.UnlockImage(NewData);
TempImageX.UnlockImage(OldData1);
TempImageY.UnlockImage(OldData2);
Bitmap NewBitmap2 = NewBitmap.Negative();
if (!string.IsNullOrEmpty(FileName))
NewBitmap2.Save(FileName, FormatUsing);
return NewBitmap2;
}
}
}
}
}
示例8: LaplaceEdgeDetection
/// <summary>
/// Laplace edge detection function
/// </summary>
/// <param name="Image">Image to manipulate</param>
/// <param name="FileName">File to save to</param>
/// <returns>A bitmap object</returns>
public static Bitmap LaplaceEdgeDetection(this Bitmap Image, string FileName = "")
{
Image.ThrowIfNull("Image");
ImageFormat FormatUsing = FileName.GetImageFormat();
using (Bitmap TempImage = Image.BlackAndWhite())
{
Filter TempFilter = new Filter(5, 5);
TempFilter.MyFilter[0, 0] = -1;
TempFilter.MyFilter[0, 1] = -1;
TempFilter.MyFilter[0, 2] = -1;
TempFilter.MyFilter[0, 3] = -1;
TempFilter.MyFilter[0, 4] = -1;
TempFilter.MyFilter[1, 0] = -1;
TempFilter.MyFilter[1, 1] = -1;
TempFilter.MyFilter[1, 2] = -1;
TempFilter.MyFilter[1, 3] = -1;
TempFilter.MyFilter[1, 4] = -1;
TempFilter.MyFilter[2, 0] = -1;
TempFilter.MyFilter[2, 1] = -1;
TempFilter.MyFilter[2, 2] = 24;
TempFilter.MyFilter[2, 3] = -1;
TempFilter.MyFilter[2, 4] = -1;
TempFilter.MyFilter[3, 0] = -1;
TempFilter.MyFilter[3, 1] = -1;
TempFilter.MyFilter[3, 2] = -1;
TempFilter.MyFilter[3, 3] = -1;
TempFilter.MyFilter[3, 4] = -1;
TempFilter.MyFilter[4, 0] = -1;
TempFilter.MyFilter[4, 1] = -1;
TempFilter.MyFilter[4, 2] = -1;
TempFilter.MyFilter[4, 3] = -1;
TempFilter.MyFilter[4, 4] = -1;
using (Bitmap NewImage = TempFilter.ApplyFilter(TempImage))
{
Bitmap NewBitmap = NewImage.Negative();
if (!string.IsNullOrEmpty(FileName))
NewBitmap.Save(FileName, FormatUsing);
return NewBitmap;
}
}
}
示例9: BoxBlur
/// <summary>
/// Does smoothing using a box blur
/// </summary>
/// <param name="Image">Image to manipulate</param>
/// <param name="Size">Size of the aperture</param>
/// <param name="FileName">File to save to</param>
/// <returns>A bitmap object</returns>
public static Bitmap BoxBlur(this Bitmap Image, int Size = 3, string FileName = "")
{
Contract.Requires<ArgumentNullException>(Image != null, "Image");
ImageFormat FormatUsing = FileName.GetImageFormat();
Filter TempFilter = new Filter(Size, Size);
for (int x = 0; x < Size; ++x)
for (int y = 0; y < Size; ++y)
TempFilter.MyFilter[x, y] = 1;
Bitmap NewBitmap = TempFilter.ApplyFilter(Image);
if (!string.IsNullOrEmpty(FileName))
NewBitmap.Save(FileName, FormatUsing);
return NewBitmap;
}
示例10: SobelEmboss
/// <summary>
/// Sobel emboss function
/// </summary>
/// <param name="Image">Image to manipulate</param>
/// <param name="FileName">File to save to</param>
/// <returns>A bitmap image</returns>
public static Bitmap SobelEmboss(this Bitmap Image, string FileName = "")
{
Contract.Requires<ArgumentNullException>(Image != null, "Image");
ImageFormat FormatUsing = FileName.GetImageFormat();
Filter TempFilter = new Filter(3, 3);
TempFilter.MyFilter[0, 0] = -1;
TempFilter.MyFilter[0, 1] = 0;
TempFilter.MyFilter[0, 2] = 1;
TempFilter.MyFilter[1, 0] = -2;
TempFilter.MyFilter[1, 1] = 0;
TempFilter.MyFilter[1, 2] = 2;
TempFilter.MyFilter[2, 0] = -1;
TempFilter.MyFilter[2, 1] = 0;
TempFilter.MyFilter[2, 2] = 1;
TempFilter.Offset = 127;
Bitmap NewBitmap = TempFilter.ApplyFilter(Image);
if (!string.IsNullOrEmpty(FileName))
NewBitmap.Save(FileName, FormatUsing);
return NewBitmap;
}