图像处理为什么使用灰度图_图像处理灰度图月rgb图 - CSDN
  • 图像处理练习时,发现图像处理不完全的问题解决

    今天在做练习的时候,突然发现自己写的灰度图像处理程序只能处理图片的一部分,百思不得其解。

    先上练习代码:

    	//打开指定路径下的图片
    	Mat srcImg = imread("E:\\学习之路\\数字图像处理练习程序\\冈萨雷斯数字图像处理MATLAB版图片\\dipum_images_ch03\\Fig0310(a)(Moon Phobos).tif");
    	if(srcImg.empty())
    	{
    		cout << "打开图片错误" << endl;
    	}
    
    	//将原图像进行直方图均衡
    	Mat dstImg = HistogramEquilibrium(srcImg);
    
    	//显示原图像以及直方图均衡后的效果图
    	imshow("原图",srcImg);
    	imwrite("./src.jpg",srcImg);
    	imshow("直方图均衡效果图",dstImg);
    	//保存效果图
    	imwrite("./EffectImage.jpg",dstImg);
    	waitKey(0);
    	return 0;

    原图像:


    处理后图像:


    后来翻了下别人的文章才发现,是因为自己在使用imread这个函数时,使用不当。

    imread函数是opencv加载图片的函数,该函数有两个参数,第一个参数是图片保存路径,第二个参数是指定读取图片的方式。

    enum
    {
        // 8bit, color or not
        IMREAD_UNCHANGED  =-1,
        // 8bit, gray
        IMREAD_GRAYSCALE  =0,
        // ?, color
        IMREAD_COLOR      =1,
        // any depth, ?
        IMREAD_ANYDEPTH   =2,
        // ?, any color
        IMREAD_ANYCOLOR   =4
    };

    从上面的枚举解释中可以看到,当第二个参数为0时,是以8位单通道(灰度图)方式加载图片;为1时,表示以8位,3通道(彩色图像)方式加载图片;为2时,表示以原图像深度(16位或32位,否则按8位),3通道方式加载图片;为4时,表示以8位,原图像通道数方式加载图片。

    如果想载入最真实无损的原图像,可以使用 IMREAD_ANYDEPTH | IMREAD_ANYCOLOR 作为参数。

    那么,问题就迎刃而解了,因为在使用imread函数时没有指定第二个参数,函数默认flag = 1(以3通道彩色图像方式加载),可是我的源图像是单通道的灰度图像,所以处理后的结果就只有源图像的1/3。

    将参数修改为0后,终于得到了正确的结果。

    正确结果:


    展开全文
  • 为什么要将rgb图像转为灰度图? 自然界中,颜色本身非常容易受到光照的影响,rgb变化很大,反而梯度信息能提供更本质的信息。三通道转为一通道后,运算量大大减少。 rgb图像转化为灰度图像,是根据自己处理图片的...

     

    为什么要将rgb图像转为灰度图?

            自然界中,颜色本身非常容易受到光照的影响,rgb变化很大,反而梯度信息能提供更本质的信息。三通道转为一通道后,运算量大大减少。

            rgb图像转化为灰度图像,是根据自己处理图片的需要而定,不是为什么,而是根据需要。

            一般都是为了减小图像原始数据量,便于后续处理时计算量更少,因为图像处理不一定需要对彩色图像的RGB三个分量都进行处理。

     

     

    RGB图像转为灰度图

                Grey = (R*38 + G*75 + B*15)>> 7

     

     

     

    Reference

    1 missing

     

     

     

     

     

     

     

     

     

    展开全文
  • 到底灰度化是在干什么

    千次阅读 2019-03-27 19:34:08
    处理三个通道的数据比较复杂,我们先将图像进行灰度处理灰度化的过程就是将每个像素点的RGB值统一成同一个值。灰度化后的图像将由三通道变为单通道,单通道的数据处理起来就会简单许多。 通常这个值是根据RGB三...

    处理三个通道的数据比较复杂,我们先将图像进行灰度化处理,灰度化的过程就是将每个像素点的RGB值统一成同一个值。灰度化后的图像将由三通道变为单通道,单通道的数据处理起来就会简单许多。

    通常这个值是根据RGB三通道的数值进行加权计算得到。人眼对RGB颜色的敏感度不同,对绿色最敏感,权值较高,对蓝色最不敏感,权值较低。坐标为(x,y)的像素点进行灰度化操作的具体计算公式如下:
    在这里插入图片描述
    调用OpenCV中提供的cvtColor()函数,能够方便地对图像进行灰度处理

    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 由于使用cv2.imread()读到的img的数据排列为BGR,因此这里的参数为BGR2GRAY
    

    引用自:
    https://mp.weixin.qq.com/s?__biz=MzI1NjkxOTMyNQ==&mid=2247486709&idx=1&sn=5f954a28aec5db0a16bc9de8d29391fe&chksm=ea1e1e87dd69979124368c299566acd68237eeaa39dd24af5272820732583df03943aacf5ded&mpshare=1&scene=1&srcid=&pass_ticket=RYf6qg0oSWPqKkG4k5rOZo1LDz3tpok54m78Z2Qtns34lqaJsZlLMw8MEC8cVzXq#rd

    展开全文
  • 图像像素的颜色: 由三基色红(R)、绿(G)、蓝(B)有机组合而成,每种基色的值可取0-255,三基色可组合(256*256*256)种颜色,每种颜色都有对应的RGB值,常见的7种颜色及其对应的RGB有红(255,0,0),绿(0,255,0),...

    @1.图像像素的颜色:

    由三基色红(R)、绿(G)、蓝(B)有机组合而成,每种基色的值可取0-255,三基色可组合(256*256*256)种颜色,每种颜色都有对应的RGB值,常见的7种颜色及其对应的RGB有红(255,0,0),绿(0,255,0),蓝(0,0,255),白(255,255,255),黑(0,0,0),黄(255,255,0),品红(255,0,255)

    @2.彩色图像颜色值得获取

    使用Bitmap类的GetPixel方法获取图像指定像素的颜色值。例如求图片框pictureBox1中在位置(i,j)上的像素颜色值c时,可写成:

    Color c=new Color();
    Bitmap box1=new Bitmap(pictureBox1.Image);
    c=box1.GetPixel(i,j);

    @3.彩色位图颜色值分解

    像素颜色值c是一个长整形的数值,占四个字节,从c值分解出R,G,B,值可直接使用:

    int r=c.R;
    int g=c.G;
    int b=c.B;

    @4.图像像素颜色的设定

    设置像素使用SetPiexl方法,用法如下

    Color c1=Color.FromArgb(r,g,b);
    box1.SetPixel(i,j,c1);

    ok,编程实现彩色图像生成灰色图像程序。
    新建工程:windows窗体应用程序

    添加控件:两个图片框pictureBox1和pictureBox2,两个按钮控件button1和button2,一个openFileDialog

    双击button1添加打开图像事件处理程序

     private void button1_Click(object sender, EventArgs e)
            {
                OpenFileDialog of = new OpenFileDialog();
                of.Filter = "JPG File(*.jpg)|*.jpg|All File(*.*)|*.*";
                if (of.ShowDialog() == DialogResult.OK)
                {
                    Bitmap image=new Bitmap(of.FileName);
                    pictureBox1.Image = image;
                }
            }

    双击button2添加灰度图像事件处理程序

      private void button2_Click(object sender, EventArgs e)
            {
                Color c = new Color();
                Bitmap b = new Bitmap(pictureBox1.Image);
                Bitmap b1 = new Bitmap(b);
                int rr, gg, bb, cc;
                for (int i = 0; i < pictureBox1.Width; i++)
                {
                    for(int j=0;j<pictureBox1.Height;j++)
                    {
                        c = b.GetPixel(i, j);
                        rr = c.R;
                        gg = c.G;
                        bb = c.B;
                        cc=(int)((rr+gg+bb)/3);
                        Color c1 = Color.FromArgb(cc,cc,cc);
                        b1.SetPixel(i,j,c1);
                    }
                    pictureBox2.Refresh();
                    pictureBox2.Image = b1;
                }
            }

    程序运行效果:

    转载于:https://www.cnblogs.com/jinpao/p/7098815.html

    展开全文
  • 图像处理:图像灰度

    万次阅读 多人点赞 2019-06-18 16:42:06
    灰度图像上每个像素的颜色值又称为灰度,指黑白图像中点的颜色深度,范围一般从0到255,白色255,黑色0。所谓灰度值是指色彩的浓淡程度,灰度直方是指一幅数字图像中,对应每一个灰度值统计出具有该灰度值的象...
  • 图像处理算法中,往往需要把彩色图像转换为灰度图像。图像灰度化是将一幅彩色图像转换为灰度化图像的过程。彩色图像通常包括R、G、B三个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色图像的R、G、...
  • 建立循环函数,通过程序依此读取十幅原始图像,然后将原始图像转存为灰度图像 确定数码管所显示数字的四角坐标,然后将其依次输出 依据之前寻找到的四个坐标,将数字部分以外的图像设置黑色; 在(3...
  • 图像处理灰度

    千次阅读 2019-05-23 17:04:57
    使用灰度图的好处: 1、RGB的值都一样 2、图像数据 = 调色板索引值 = RGB的值 = 亮度值 3、调色板256色,所以图像数据中的一个字节代表一个像素 一般做图像处理之前都需要先把图像进行灰度化。 在这之前要...
  • 灰度图像增强和图像去噪

    万次阅读 2017-11-22 10:05:02
    数字图像处理 目录 P1 图像灰度变换增强... 2 一、  前言... 2 二、  灰度变换增强的方法及其实现... 2 1.  线性灰度变换... 2 2.  分段线性灰度变换... 4 3.  对数函数灰度变换... 6 4.  反对数函数灰度变换....
  • 二值 (也叫单值图像)每个像素一个bit ,即黑白图像,每个像素点的值非 0 即 1。 灰度图像 每个像素8bit,范围从 0 ~ 255. 具有调色板,像素值是表项入口。 伪彩图像 每个像素8bit,范围从0-255.具有调色板,像素...
  • 灰度变换是图像增强的一种重要手段,用于改善图像显示效果,属于空间域处理方法,它可以使图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显。灰度变换其实质就是按一定的规则修改图像每一个像素的...
  • 在数字图像处理中 对于灰度图像使用直方均衡化的目的:  如果一幅图像的像素占据的像素区间高低起伏比较大,并且这副图像的像素有占据整个灰度级并且均匀分布,那么图像可以有高的对比度。实现高对比度说白了就是...
  • 将大量图像转为灰度图像的批量化处理 有些实验的结果是产生成千上万的图像,需要将这些图像转化灰度图像。因此就需要采用循环语句将图像批量转为灰度图。具体操作步骤如下: % 将图片批量转化为灰度图 % 首先需要...
  • 本文介绍一种在灰度图像复原成彩色RGB图像方面的代表性工作:**《全局和局部图像的联合...另外基于图像处理的方法,如图像增强和图像复原,以及曾经很火的超分辨率算法。都是在不增加额外信息的前提下的实现方式。
  • 图像处理灰度密度图像

    千次阅读 2016-07-18 09:56:13
    在分割图像中,经常会对图像进行差分处理再进行分割,那么对于一个输入的带有导管信息的差分图像(如所示),该如何分割出导管信息呢,方法是构造灰度密度图像进行分割。具体步骤和实现效果容我慢慢道来。   1...
  • (三)matlab数字图像处理实验-图像灰度变换处理

    万次阅读 多人点赞 2018-01-08 18:44:08
    前两节都是熟悉一下怎么在matlab底下对图片做一些操作,并没有什么卵用,这一节稍微有点卵用,灰度变换一般是图像处理的第一步。 数字图像处理实验1-9点击下列链接有源码和链接: matlab数字图像处理实验 ...
  • 为了加快处理速度,在图像处理算法中,往往需要把彩色图像转换灰度图像。 0x00. 灰度图 灰度数字图像是每个像素只有一个采样颜色的图像,这类图像通常显示从最暗黑色到最亮的白色的灰度。 灰度图像与...
  • 本篇文章讲解图像灰度处理的知识,结合OpenCV调用cv2.cvtColor()函数实现图像灰度操作,使用像素处理方法对图像进行灰度处理。基础性知识希望对您有所帮助。 1.图像灰度化原理 2.基于OpenCV的图像灰度处理 3....
  • 在进行数字图像处理时,需要将图像转换成灰度图。如truecolor转化为灰度图,可用函数rgb2gray即可实现,语法也比较简单。如下: grayImage=rgb2gray(srcImage); 加载完图片后可使用imfinfo()函数查看图像信息,...
  • 灰度图直观地讲就是将原来的RGB图像转换只有灰度级的图像,做这一步处理也比较简单,只要把每个像素点的RGB值拿出来,算一下他们的平均值(R+G+B)/3(R+G+B)/3,然后再替换原来的RGB值就OK了。原图: 处理后的...
1 2 3 4 5 ... 20
收藏数 71,177
精华内容 28,470
关键字:

图像处理为什么使用灰度图