zoukankan      html  css  js  c++  java
  • 图像处理-02-绘制图像灰度直方图

    绘制图像灰度直方图

    在绘制图像灰度时我们要考虑到在WinForm中坐标轴的走向,左上角为原点,向右为X轴,向下为Y轴

    private void btnImageOperation_Click( object sender, EventArgs e )
            {
                int height = this.pbImageOld.Image.Height;
                int width = this.pbImageOld.Image.Width;
                int[]imageArr=new int[256];
                for (int i = 0; i <= 255; i++)
                {
                    imageArr[i] = 0;
                }
    
                Color pixel;
                int gray, r, g, b;
                Bitmap bitmap=(Bitmap)this.pbImageOld.Image;
    
                for (int i = 0; i < height; i++)
                {
                    for (int j = 0; j < width; j++)
                    {
                        pixel = bitmap.GetPixel(j,i);//获取指定坐标对应的像素点的颜色
                        r = pixel.R;
                        g = pixel.G;
                        b = pixel.B;
                        gray = (int)(0.3 * r + 0.59 * g + 0.11 * b);//将RGB换成灰度
                        imageArr[gray] = imageArr[gray] + 1;//这个亮度的值加1
                    }
                }
    
                Bitmap delImage = new Bitmap( 256, 256 );//直方图
                using (Graphics graphics = Graphics.FromImage( delImage ))
                {
                    for (int x = 0; x < delImage.Width; x++)
                    {
                        //graphics.DrawLine( Pens.Black, 0, x, imageArr[x], x );//每个色阶画一条直线
                        graphics.DrawLine(Pens.Black,x,255,x,(255-imageArr[x]));//对应坐标(x,y) (x,y)
                    }
                }
                pbImageNew.Image = delImage;
            }

     

    改进以上算法,提出数值的标准化。

    改进原因,如果有一个颜色的平均值非常大,那么其值在图像上是无法显示的

     首先找到最大数

    int max;
    for(int i=1;i<256;i++)
    {
         if(max<h[i])
         {
              max=h[i];
         }  
    }
    

    //标准化

    h[i]=h[i]*256/max;

  • 相关阅读:
    flask 需要下载的包
    flask知识点
    移动端网页实现(用百分比进行定位)
    js中的preventDefault
    网页重构面试笔试题
    J2EE课程设计的购物车代码(水平有限,仅供参考)
    JavaScript实现对象克隆函数clone( )的程序及分析
    WEB技术书籍推荐
    2016 Tianjin University Software Testing (lab2)
    Mac下安装npm 、node、ionic和cordova
  • 原文地址:https://www.cnblogs.com/chenyongblog/p/3404197.html
Copyright © 2011-2022 走看看