亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? segmentation.bitmap.cs

?? 一個C#開發的類似PHOTOSHOP的軟件,用到了很多圖形算法.
?? CS
字號:
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

namespace PhotoSprite.ImageProcessing
{
  partial class Segmentation
  {
    /************************************************************
     * 
     * 面積、周長、區域顯示、消除小區域、輪廓跟蹤、提取、投影
     * 
     ************************************************************/


    /// <summary>
    /// 獲取每個區域的面積信息
    /// </summary>
    /// <param name="b">二值位圖流</param>
    /// <returns></returns>
    public int[] ImageArea(Bitmap b)
    {
      // 將原始二值圖轉化為二維數組
      byte[,] srcGray = Image2Array(b);

      // 進行區域標記
      ushort[,] Sign = ImageSign(srcGray);

      // 區域面積
      int[] Area = ImageArea(Sign);

      return Area;
    } // end of ImageArea


    /// <summary>
    /// 獲取每個區域的周長信息
    /// </summary>
    /// <param name="b">二值位圖流</param>
    /// <returns></returns>
    public int[] ImagePerimeter(Bitmap b)
    {
      // 將原始二值圖轉化為二維數組
      byte[,] srcGray = Image2Array(b);

      // 進行區域標記
      ushort[,] Sign = ImageSign(srcGray);

      // 區域周長
      int[] Perimeter = ImagePerimeter(Sign);

      return Perimeter;
    } // end of ImagePerimeter


    /// <summary>
    /// 按指定的區域號繪制出對應的區域
    /// </summary>
    /// <param name="b">二值位圖流</param>
    /// <param name="Region">區域號</param>
    /// <param name="showContour">指定bool值,是顯示輪廓線,否顯示區域塊</param>
    /// <returns></returns>
    public Bitmap ImageRegion(Bitmap b, ushort[] Region, bool showContour)
    {
      // 將原始二值圖轉化為二維數組
      byte[,] srcGray = Image2Array(b);

      // 進行區域標記
      ushort[,] Sign = ImageSign(srcGray);

      // 按輪廓線進行顯示
      if (showContour)
        Sign = ContourTrace(Sign);

      int len = Region.Length;

      int width = b.Width;
      int height = b.Height;

      BitmapData data = b.LockBits(new Rectangle(0, 0, width, height),
        ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);

      unsafe
      {
        byte* p = (byte*)data.Scan0;
        int offset = data.Stride - width * BPP;

        for (int y = 0; y < height; y++)
        {
          for (int x = 0; x < width; x++)
          {
            ushort sign = Sign[x, y];
            bool showRegion = false;

            for (int i = 0; i < len; i++)
            {
              if (sign == Region[i])
              {
                showRegion = true;
                break;
              }
            } // i

            // 繪制區域
            if (showRegion)
            {
              p[0] = p[1] = p[2] = 0;
            }
            else
            {
              p[0] = p[1] = p[2] = 255;
            }

            p += BPP;
          } // x

          p += offset;
        } // y
      }

      b.UnlockBits(data);

      return b;
    } // end of ImageRegion


    /// <summary>
    /// 消除小區域
    /// </summary>
    /// <param name="b">二值位圖流</param>
    /// <param name="percent">區域面積占圖像面積的百分比[0, 100]</param>
    /// <returns></returns>
    public Bitmap ClearSmallArea(Bitmap b, int percent)
    {
      // 將原始二值圖轉化為二維數組
      byte[,] srcGray = Image2Array(b);

      // 進行區域標記
      ushort[,] Sign = ImageSign(srcGray);

      // 區域面積
      int[] Area = ImageArea(Sign);

      int width = b.Width;
      int height = b.Height;

      // 面積閾值
      int area = width * height * percent / 100;

      BitmapData data = b.LockBits(new Rectangle(0, 0, width, height),
        ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);

      unsafe
      {
        byte* p = (byte*)data.Scan0;
        int offset = data.Stride - width * BPP;

        for (int y = 0; y < height; y++)
        {
          for (int x = 0; x < width; x++)
          {
            ushort sign = Sign[x, y];

            // 將原始背景和小區域全部變為背景
            if (sign == 0 || Area[sign] < area)
            {
              p[0] = p[1] = p[2] = 255;
            }
            else
            {
              p[0] = p[1] = p[2] = 0;
            }

            p += BPP;
          } // x

          p += offset;
        } // y
      }

      b.UnlockBits(data);

      return b;
    } // end of ClearSmallArea


    /// <summary>
    /// 輪廓跟蹤
    /// </summary>
    /// <param name="b">二值位圖流</param>
    /// <returns></returns>
    public Bitmap ContourTrace(Bitmap b)
    {
      // 將原始二值圖轉化為二維數組
      byte[,] srcGray = Image2Array(b);

      // 進行區域標記
      ushort[,] Sign = ImageSign(srcGray);

      // 輪廓跟蹤
      ushort[,] Boundary = ContourTrace(Sign);

      int width = b.Width;
      int height = b.Height;

      BitmapData data = b.LockBits(new Rectangle(0, 0, width, height),
        ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);

      unsafe
      {
        byte* p = (byte*)data.Scan0;
        int offset = data.Stride - width * BPP;

        for (int y = 0; y < height; y++)
        {
          for (int x = 0; x < width; x++)
          {
            if (Boundary[x, y] != 0)
            {
              p[0] = p[1] = p[2] = 0;
            }
            else
            {
              p[0] = p[1] = p[2] = 255;
            }

            p += BPP;
          } // x

          p += offset;
        } // y
      }

      b.UnlockBits(data);

      return b;
    } // end of ContourTrace


    /// <summary>
    /// 輪廓提取
    /// </summary>
    /// <param name="b">二值位圖流</param>
    /// <returns></returns>
    public Bitmap ContourPick(Bitmap b)
    {
      // 將原始二值圖轉化為二維數組
      byte[,] srcGray = Image2Array(b);

      // 輪廓提取
      byte[,] dstGray = ContourPick(srcGray);

      // 轉換為灰度圖像
      return Array2Image(dstGray);
    } // end of ContourPick


    /// <summary>
    /// 圖像投影
    /// </summary>
    /// <param name="b">二值位圖流</param>
    /// <param name="isHorz">是否水平投影</param>
    /// <returns></returns>
    public Bitmap Project(Bitmap b, bool isHorz)
    {
      // 將原始二值圖轉化為二維數組
      byte[,] srcGray = Image2Array(b);

      // 圖像投影
      byte[,] dstGray = Project(srcGray, isHorz);

      return Array2Image(dstGray);
    } // end of Project


  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品91自产拍在线观看一区| 色乱码一区二区三区88| 亚洲制服欧美中文字幕中文字幕| 国产精品视频一二三区 | 三级不卡在线观看| 亚洲午夜在线电影| 亚洲一区二区欧美日韩 | 国产综合色视频| 国产在线视频一区二区| 国产最新精品精品你懂的| 国产一区欧美一区| 成人综合婷婷国产精品久久蜜臀| 国产寡妇亲子伦一区二区| 成人禁用看黄a在线| 91麻豆福利精品推荐| 欧美日韩在线综合| 日韩欧美国产1| 国产精品国产自产拍高清av| 亚洲一区二区三区自拍| 秋霞成人午夜伦在线观看| 国内精品久久久久影院色| 99riav一区二区三区| 欧美日韩视频在线第一区| 欧美精品一区二区三区蜜桃视频| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲品质自拍视频| 久久99精品国产91久久来源| 国产成人精品网址| 在线视频观看一区| 久久你懂得1024| 亚洲一区二区欧美激情| 国产一区在线观看视频| 色综合久久88色综合天天6| 7777精品久久久大香线蕉| 国产日韩欧美a| 日韩不卡一区二区三区| 不卡视频在线观看| 日韩欧美美女一区二区三区| ...av二区三区久久精品| 日韩中文欧美在线| 色狠狠一区二区三区香蕉| 精品国产亚洲在线| 亚洲午夜精品网| 大白屁股一区二区视频| 制服丝袜亚洲色图| 中文字幕亚洲在| 国产丶欧美丶日本不卡视频| 欧美日韩高清一区二区三区| 亚洲色大成网站www久久九九| 国产综合久久久久久鬼色 | 欧美激情中文不卡| 蜜桃视频一区二区| 欧美日韩高清在线| 一区二区三区在线视频播放| 福利视频网站一区二区三区| 日韩视频永久免费| 亚洲一区二区三区自拍| 成人av免费在线观看| 国产亚洲制服色| 韩国精品久久久| 精品理论电影在线观看| 奇米影视在线99精品| 7878成人国产在线观看| 一区二区三区电影在线播| 99久久精品久久久久久清纯| 日本一区二区动态图| 国产精品91xxx| 久久嫩草精品久久久久| 国产一区二区在线电影| 久久先锋资源网| 国产激情一区二区三区四区| 久久天堂av综合合色蜜桃网| 久久国产精品99精品国产| 日韩欧美一级二级| 韩国女主播成人在线| 久久久久久久性| 高清不卡在线观看| 综合激情成人伊人| 色婷婷国产精品综合在线观看| 亚洲三级视频在线观看| 91香蕉视频污在线| 亚洲国产精品一区二区久久恐怖片 | 久久久亚洲国产美女国产盗摄| 久久99精品网久久| 国产午夜亚洲精品理论片色戒 | 91影院在线观看| 一区二区理论电影在线观看| 日本丰满少妇一区二区三区| 亚洲制服欧美中文字幕中文字幕| 欧美午夜视频网站| 精品影视av免费| 国产欧美日韩精品一区| 在线观看日韩国产| 青青草精品视频| 国产视频一区二区三区在线观看| 成人动漫一区二区| 亚洲国产精品综合小说图片区| 欧美一区国产二区| 成人听书哪个软件好| 亚洲一区二区三区爽爽爽爽爽| 91精品午夜视频| 粉嫩av一区二区三区粉嫩| 亚洲一区二区三区中文字幕| 日韩欧美国产成人一区二区| 国产成人av一区二区三区在线 | 国产日韩一级二级三级| 色综合中文综合网| 国产拍欧美日韩视频二区| 在线欧美小视频| 久久er99热精品一区二区| 国产精品网站在线| 欧美狂野另类xxxxoooo| 成人禁用看黄a在线| 蜜臀av国产精品久久久久| 国产精品进线69影院| 欧美成人精品1314www| 色综合久久久久综合体桃花网| 久久精品国产亚洲5555| 亚洲综合免费观看高清完整版| 欧美r级在线观看| 欧美日韩在线播放三区四区| 国产成人亚洲精品狼色在线| 无码av免费一区二区三区试看| 国产精品午夜春色av| 欧美大片免费久久精品三p | 视频在线观看国产精品| 国产精品不卡在线| 欧美成人欧美edvon| 在线日韩国产精品| 一本色道a无线码一区v| 国产成人免费视| 久久国产综合精品| 午夜久久久影院| 亚洲国产精品一区二区www| 亚洲欧美中日韩| 国产亚洲一区二区三区四区| 欧美一区二区三区视频免费| 欧美日韩免费一区二区三区| 91丨九色丨蝌蚪富婆spa| 成人免费毛片app| 国产精品白丝av| 国产曰批免费观看久久久| 久久精品国产999大香线蕉| 午夜精品福利一区二区三区蜜桃| 亚洲一区在线观看免费观看电影高清| 中文字幕欧美激情| 国产欧美精品日韩区二区麻豆天美| www一区二区| 国产欧美精品区一区二区三区| 亚洲精品一区二区三区香蕉 | 精品国产乱码久久久久久1区2区| 欧美日韩不卡在线| 欧美日韩五月天| 欧美电影一区二区三区| 8x8x8国产精品| 日韩午夜av电影| 欧美成人精品二区三区99精品| 精品日韩一区二区| 中文字幕高清不卡| 国产精品系列在线| 亚洲人吸女人奶水| 亚洲电影视频在线| 青青青爽久久午夜综合久久午夜| 麻豆精品视频在线观看免费 | 中文字幕在线不卡一区二区三区| 国产精品免费网站在线观看| 最新日韩av在线| 亚洲成人精品影院| 精品中文字幕一区二区| 成人免费不卡视频| 在线视频观看一区| 欧美mv日韩mv| 国产精品亲子乱子伦xxxx裸| 亚洲精品写真福利| 青青国产91久久久久久| 国产精品91xxx| 91精品办公室少妇高潮对白| 91麻豆精品国产91久久久| 日韩精品最新网址| 一区免费观看视频| 日韩1区2区3区| 丁香婷婷综合色啪| 欧美日韩一区二区电影| 精品国产sm最大网站| 亚洲精品日韩综合观看成人91| 日产精品久久久久久久性色| 国产999精品久久久久久| 欧美在线视频不卡| 久久精品视频一区二区| 亚洲一区在线观看免费 | 日韩午夜小视频| 国产精品嫩草99a| 人禽交欧美网站| 91色综合久久久久婷婷| 日韩一级在线观看| 亚洲综合在线免费观看| 精品在线免费视频| 欧美视频一区二区三区四区| 中文文精品字幕一区二区| 日本欧美一区二区三区|