国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

C#繪制數(shù)字圖像灰度直方圖

2019-11-17 03:22:36
字體:
供稿:網(wǎng)友

C#繪制數(shù)字圖像灰度直方圖

灰度直方圖是灰度的函數(shù),描述的是圖像中具有該灰度級的像素的個數(shù)。如果用直角坐標系來表示,則它的橫坐標是灰度級,縱坐標是該灰度出現(xiàn)的概率(像素的個數(shù))。

灰度直方圖的分布函數(shù):

其中,K是指第k個灰度級,如果是8位灰度圖像,k=0、1、……、255。

處理圖像生成直方圖數(shù)據(jù)

            //將圖像數(shù)據(jù)復制到byte中            Rectangle rect = new Rectangle(0, 0, bmpHist.Width, bmpHist.Height);            System.Drawing.Imaging.BitmapData bmpdata = bmpHist.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, bmpHist.PixelFormat);            IntPtr ptr = bmpdata.Scan0;            int bytes = bmpHist.Width * bmpHist.Height * 3;            byte[] grayValues = new byte[bytes];            System.Runtime.InteropServices.Marshal.Copy(ptr, grayValues, 0, bytes);            //統(tǒng)計直方圖信息            byte temp = 0;            maxPixel = 0;            Array.Clear(countPixel, 0, 256);            for (int i = 0; i < bytes; i++)            {                temp = grayValues[i];                countPixel[temp]++;                if (countPixel[temp] > maxPixel)                {                    maxPixel = countPixel[temp];                }            }            System.Runtime.InteropServices.Marshal.Copy(grayValues, 0, ptr, bytes);            bmpHist.UnlockBits(bmpdata);

繪制直方圖信息

            //畫出坐標系            Graphics g = e.Graphics;            Pen curPen = new Pen(Brushes.Black, 1);            g.DrawLine(curPen, 50, 240, 320, 240);            g.DrawLine(curPen, 50, 240, 50, 30);            g.DrawLine(curPen, 100, 240, 100, 242);            g.DrawLine(curPen, 150, 240, 150, 242);            g.DrawLine(curPen, 200, 240, 200, 242);            g.DrawLine(curPen, 250, 240, 250, 242);            g.DrawLine(curPen, 300, 240, 300, 242);            g.DrawString("0", new Font("New Timer", 8), Brushes.Black, new PointF(46, 242));            g.DrawString("50", new Font("New Timer", 8), Brushes.Black, new PointF(92, 242));            g.DrawString("100", new Font("New Timer", 8), Brushes.Black, new PointF(139, 242));            g.DrawString("150", new Font("New Timer", 8), Brushes.Black, new PointF(189, 242));            g.DrawString("200", new Font("New Timer", 8), Brushes.Black, new PointF(239, 242));            g.DrawString("250", new Font("New Timer", 8), Brushes.Black, new PointF(289, 242));            g.DrawLine(curPen, 48, 40, 50, 40);            g.DrawString("0", new Font("New Timer", 8), Brushes.Black, new PointF(34, 234));            g.DrawString(maxPixel.ToString(), new Font("New Timer", 8), Brushes.Black, new PointF(18, 34));            double temp = 0;            for (int i = 0; i < 256; i++)            {                temp = 200.0 * countPixel[i] / maxPixel;                g.DrawLine(curPen, 50 + i, 240, 50 + i, 240 - (int)temp);            }            curPen.Dispose();

全局變量定義及賦值

        PRivate System.Drawing.Bitmap bmpHist;        private int[] countPixel;        private int maxPixel;        public Grey_ScaleMapForm(Bitmap bmp)        {            InitializeComponent();            bmpHist = bmp;            countPixel = new int[256];        }

下載:DEMO


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 阜南县| 淮南市| 日喀则市| 临颍县| 浮梁县| 华阴市| 方山县| 兴城市| 临高县| 乌兰浩特市| 塘沽区| 福鼎市| 安溪县| 沈阳市| 兴海县| 隆子县| 林州市| 平遥县| 商南县| 襄垣县| 桃江县| 兴城市| 万载县| 夏河县| 武功县| 咸丰县| 沂南县| 隆安县| 定西市| 康乐县| 海原县| 富平县| 五家渠市| 长海县| 天镇县| 莒南县| 上思县| 镶黄旗| 封丘县| 南阳市| 邓州市|