⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 morphologic.bitmap.cs

📁 一个C#开发的类似PHOTOSHOP的软件,用到了很多图形算法.
💻 CS
字号:
using System;
using System.Drawing;

namespace PhotoSprite.ImageProcessing
{
  public partial class Morphologic : GrayProcessing
  {
    /************************************************************
     * 
     * 水平、垂直、十字型腐蚀
     * 水平、垂直、十字型膨胀
     * 开、闭运算
     * 细化、粗化
     * 
     ************************************************************/

    
    /// <summary>
    /// 水平腐蚀
    /// </summary>
    /// <param name="b">二值位图流</param>
    /// <returns></returns>
    public Bitmap ErosionHorz(Bitmap b)
    {
      // 先将原始二值图转化为二维数组
      byte[,] srcGray = Image2Array(b);

      // 进行水平腐蚀处理
      byte[,] dstGray = ErosionHorz(srcGray);

      b.Dispose();

      // 转换为灰度图像
      return Array2Image(dstGray);
    } // end of ErosionHorz


    /// <summary>
    /// 垂直腐蚀
    /// </summary>
    /// <param name="b">二值位图流</param>
    /// <returns></returns>
    public Bitmap ErosionVert(Bitmap b)
    {
      // 先将原始二值图转化为二维数组
      byte[,] srcGray = Image2Array(b);

      // 进行垂直腐蚀处理
      byte[,] dstGray = ErosionVert(srcGray);

      b.Dispose();

      // 转换为灰度图像
      return Array2Image(dstGray);
    } // end of ErosionVert


    /// <summary>
    /// 十字型腐蚀
    /// </summary>
    /// <param name="b">二值位图流</param>
    /// <returns></returns>
    public Bitmap ErosionCross(Bitmap b)
    {
      // 先将原始二值图转化为二维数组
      byte[,] srcGray = Image2Array(b);

      // 进行十字型腐蚀处理
      byte[,] dstGray = ErosionCross(srcGray);

      b.Dispose();

      // 转换为灰度图像
      return Array2Image(dstGray);
    } // end of ErosionCross


    /// <summary>
    /// 水平膨胀
    /// </summary>
    /// <param name="b">位图流</param>
    /// <returns></returns>
    public Bitmap DilationHorz(Bitmap b)
    {
      // 先将原始二值图转化为二维数组
      byte[,] srcGray = Image2Array(b);

      // 进行水平膨胀处理
      byte[,] dstGray = DilationHorz(srcGray);

      b.Dispose();

      // 转换为灰度图像
      return Array2Image(dstGray);
    } // end of DilationHorz


    /// <summary>
    /// 垂直膨胀
    /// </summary>
    /// <param name="b">位图流</param>
    /// <returns></returns>
    public Bitmap DilationVert(Bitmap b)
    {
      // 先将原始二值图转化为二维数组
      byte[,] srcGray = Image2Array(b);

      // 进行垂直膨胀处理
      byte[,] dstGray = DilationVert(srcGray);

      b.Dispose();

      // 转换为灰度图像
      return Array2Image(dstGray);
    } // end of DilationVert


    /// <summary>
    /// 十字型膨胀
    /// </summary>
    /// <param name="b">位图流</param>
    /// <returns></returns>
    public Bitmap DilationCross(Bitmap b)
    {
      // 先将原始二值图转化为二维数组
      byte[,] srcGray = Image2Array(b);

      // 进行十字型膨胀处理
      byte[,] dstGray = DilationCross(srcGray);

      b.Dispose();

      // 转换为灰度图像
      return Array2Image(dstGray);
    } // end of DilationCross


    /// <summary>
    /// 开运算
    /// </summary>
    /// <param name="b">位图流</param>
    /// <returns></returns>
    public Bitmap Opening(Bitmap b)
    {
      // 先腐蚀,后膨胀
      b = ErosionCross(b);
      b = DilationCross(b);

      return b;
    } // end of Opening


    /// <summary>
    /// 闭运算
    /// </summary>
    /// <param name="b">位图流</param>
    /// <returns></returns>
    public Bitmap Closing(Bitmap b)
    {
      // 先膨胀,后腐蚀
      b = DilationCross(b);
      b = ErosionCross(b);

      return b;
    } // end of Closing


    /// <summary>
    /// 细化
    /// </summary>
    /// <param name="b">位图流</param>
    /// <returns></returns>
    public Bitmap Thinning(Bitmap b)
    {
      // 先将原始二值图转化为二维数组
      byte[,] srcGray = Image2Array(b);

      // 进行细化处理
      byte[,] dstGray = Thinning(srcGray);

      b.Dispose();

      // 转换为灰度图像
      return Array2Image(dstGray);
    } // end of Thinning


    /// <summary>
    /// 粗化
    /// </summary>
    /// <param name="b">位图流</param>
    /// <returns></returns>
    public Bitmap Thickening(Bitmap b)
    {
      // 先将原始二值图转化为二维数组
      byte[,] srcGray = Image2Array(b);

      // 进行粗化处理
      byte[,] dstGray = Thickening(srcGray);

      b.Dispose();

      // 转换为灰度图像
      return Array2Image(dstGray);
    } // end of Thickening


  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -