精华内容
下载资源
问答
  • 【数字图像处理】灰度图像

    千次阅读 2019-10-08 00:56:27
    灰度图像,也称为灰阶图像,图像中每个像素可以由0(黑)到255(白)的亮度(Intensity)表示。0-255之间表示不同的灰度级。 灰度图像化 二化:以一个(阈值)为基准,大于(等于)这个的数全部变为是1...

     

    灰度图像

    每副图像的每个像素对应二维空间中一个特定的位置,并且有一个或者多个与那个点相关的采样值组成数值。

    灰度图像,也称为灰阶图像,图像中每个像素可以由0(黑)到255(白)的亮度值(Intensity)表示。0-255之间表示不同的灰度级。

     

    灰度图像二值化

    二值化:以一个值(阈值)为基准,大于(等于)这个值的数全部变为是1(或者0),小于等于这个数的就全部将他们变为0(或1)。

    二值化算法处理飞思卡尔赛道思路:设定一个阈值valve,对于图像矩阵中的每一行,从左至右比较各像素值和阈值的大小,若像素值大于或等于阈值,则判定该像素对应的是白色赛道;反之,则判定对应的是黑色的目标引导线。

    记下第一次和最后一次出现像素值小于阈值时的像素点的列号,算出两者的平均值,以此作为该行上目标引导线的位置。

    摄像头的二值化的代码:

     
    
    Void image_binaryzation()
    
    {
    
    for(int i=0;i
    
    {
    
        for(int j=0;j
    
        {
    
    if(Image[i][j] >= Threshold)
    
           Image_new[i][j]=1;
    
    else
    
        Image_new[i][j]=0;
    
        }
    
    }
    
    }

    Row是对应采集到的行数,Col是列数,Image[i][j]是摄像头采集未二值化的数据存放的数组,Img[i][j]是新建的存放二值化后的数组。

     

    合适的阈值

    在阈值二值化中,最主要的是选取合适的阈值,这也是二值化的难点所在。常用的二值化阈值选取方法有双峰法、p参数法、大律法(Otsu法)、最大熵阈值法、迭代法等。

    大律法(Otsu法)

    Otsu方法又名最大类间差方法,通过统计整个图像的直方图特性来实现全局阈值T的自动选取,其算法步骤为:
    1) 先计算图像的直方图,即将图像所有的像素点按照0~255共256个bin,统计落在每个bin的像素点数量
    2) 归一化直方图,也即将每个bin中像素点数量除以总的像素点
    3) i表示分类的阈值,也即一个灰度级,从0开始迭代
    4) 通过归一化的直方图,统计0~i 灰度级的像素(假设像素值在此范围的像素叫做前景像素) 所占整幅图像的比例w0,并统计前景像素的平均灰度u0;统计i~255灰度级的像素(假设像素值在此范围的像素叫做背景像素) 所占整幅图像的比例w1,并统计背景像素的平均灰度u1;
    5) 计算前景像素和背景像素的方差 g = w0*w1*(u0-u1) (u0-u1)
    6) i++;转到4),直到i为256时结束迭代
    7)将最大g相应的i值作为图像的全局阈值
    缺陷:OSTU算法在处理光照不均匀的图像的时候,效果会明显不好,因为利用的是全局像素信息。
    解决光照不均匀:https://blog.csdn.net/kk55guang2/article/details/78475414
                  https://blog.csdn.net/kk55guang2/article/details/78490069
                  https://wenku.baidu.com/view/84e5eb271a37f111f0855b2d.html
    ***************************************************************/ 
    int GetOSTU(uint8_t tmImage[Use_ROWS][Use_Line]) 
    { 
    /**
      * @brief    未优化过的大津法
      *
      * @param    运算时间比较长
      *
      * @return   实测120*160的图像
      *
      * @note     K66 220MHz需要9ms
      *
      * @example  
      *
      * @date     2019/4/16 星期二
      */
    //    int width = Use_ROWS;
    //    int height = Use_Line;
    //    int x = 0, y = 0;
    //    int pixelCount[256];
    //    float pixelPro[256];
    //    int i, j, pixelSum = width * height, threshold = 0;
    //    
    //    
    //    //初始化
    //    for (i = 0; i < 256; i++)
    //    {
    //        pixelCount[i] = 0;
    //        pixelPro[i] = 0;
    //    }
    //    
    //    //统计灰度级中每个像素在整幅图像中的个数
    //    for (i = y; i < height; i++)
    //    {
    //        for (j = x; j <width; j++)
    //        {
    //            pixelCount[tmImage[i][j]]++;
    //        }
    //    }
    //    
    //    //计算每个像素在整幅图像中的比例
    //    for (i = 0; i < 256; i++)
    //    {
    //        pixelPro[i] = (float)(pixelCount[i]) / (float)(pixelSum);
    //    }
    //    
    //    //经典ostu算法,得到前景和背景的分割
    //    //遍历灰度级[0,255],计算出方差最大的灰度值,为最佳阈值
    //    float w0, w1, u0tmp, u1tmp, u0, u1, u, deltaTmp, deltaMax = 0;
    //    for (i = 0; i < 256; i++)
    //    {
    //        w0 = w1 = u0tmp = u1tmp = u0 = u1 = u = deltaTmp = 0;
    //        
    //        for (j = 0; j < 256; j++)
    //        {
    //            if (j <= i) //背景部分
    //            {
    //                //以i为阈值分类,第一类总的概率
    //                w0 += pixelPro[j];
    //                u0tmp += j * pixelPro[j];
    //            }
    //            else       //前景部分
    //            {
    //                //以i为阈值分类,第二类总的概率
    //                w1 += pixelPro[j];
    //                u1tmp += j * pixelPro[j];
    //            }
    //        }
    //        
    //        u0 = u0tmp / w0;        //第一类的平均灰度
    //        u1 = u1tmp / w1;        //第二类的平均灰度
    //        u = u0tmp + u1tmp;        //整幅图像的平均灰度
    //        //计算类间方差
    //        deltaTmp = w0 * (u0 - u)*(u0 - u) + w1 * (u1 - u)*(u1 - u);
    //        //找出最大类间方差以及对应的阈值
    //        if (deltaTmp > deltaMax)
    //        {
    //            deltaMax = deltaTmp;
    //            threshold = i;
    //        }
    //    }
    //    //返回最佳阈值;
    //    return threshold;
        
    /**
      * @brief    优化过的大津法
      *
      * @param    大大减少运算时间
      *
      * @return   实测K66 220MHz 120*160的图像
      *
      * @note     只需要1.5ms
      *
      * @example  未优化的大津法需要9ms
      *
      * @date     2019/4/16 星期二
      */ 
        int16_t i,j; 
        uint32_t Amount = 0; 
        uint32_t PixelBack = 0; 
        uint32_t PixelIntegralBack = 0; 
        uint32_t PixelIntegral = 0; 
        int32_t PixelIntegralFore = 0; 
        int32_t PixelFore = 0; 
        float OmegaBack, OmegaFore, MicroBack, MicroFore, SigmaB, Sigma; // 类间方差; 
        int16_t MinValue, MaxValue; 
        uint8_t Threshold = 0;
        uint8_t HistoGram[256];              //  
        
        for (j = 0; j < 256; j++)  HistoGram[j] = 0; //初始化灰度直方图 
        
        for (j = 0; j < Use_ROWS; j++) 
        { 
            for (i = 0; i < Use_Line; i++) 
            { 
                HistoGram[tmImage[j][i]]++; //统计灰度级中每个像素在整幅图像中的个数
            } 
        } 
        
        for (MinValue = 0; MinValue < 256 && HistoGram[MinValue] == 0; MinValue++) ;        //获取最小灰度的值
        for (MaxValue = 255; MaxValue > MinValue && HistoGram[MinValue] == 0; MaxValue--) ; //获取最大灰度的值
        
        if (MaxValue == MinValue)      return MaxValue;         // 图像中只有一个颜色    
        if (MinValue + 1 == MaxValue)  return MinValue;         // 图像中只有二个颜色
        
        for (j = MinValue; j <= MaxValue; j++)    Amount += HistoGram[j];        //  像素总数
        
        PixelIntegral = 0;
        for (j = MinValue; j <= MaxValue; j++)
        {
            PixelIntegral += HistoGram[j] * j;//灰度值总数
        }
        SigmaB = -1;
        for (j = MinValue; j < MaxValue; j++)
        {
            PixelBack = PixelBack + HistoGram[j];   //前景像素点数
            PixelFore = Amount - PixelBack;         //背景像素点数
            OmegaBack = (float)PixelBack / Amount;//前景像素百分比
            OmegaFore = (float)PixelFore / Amount;//背景像素百分比
            PixelIntegralBack += HistoGram[j] * j;  //前景灰度值
            PixelIntegralFore = PixelIntegral - PixelIntegralBack;//背景灰度值
            MicroBack = (float)PixelIntegralBack / PixelBack;   //前景灰度百分比
            MicroFore = (float)PixelIntegralFore / PixelFore;   //背景灰度百分比
            Sigma = OmegaBack * OmegaFore * (MicroBack - MicroFore) * (MicroBack - MicroFore);//计算类间方差
            if (Sigma > SigmaB)                    //遍历最大的类间方差g //找出最大类间方差以及对应的阈值
            {
                SigmaB = Sigma;
                Threshold = j;
            }
        }
        return Threshold;                        //返回最佳阈值;
    } 

    可以参考文献

    https://wenku.baidu.com/view/acc24dcf680203d8ce2f2469.html

    https://wenku.baidu.com/view/bb6e38f7c8d376eeaeaa3163.html

     

    二值化图像去噪

    对于二值化图像而言,去除噪声是很重要的一步。

    思路:对任意像素点判断是否为0,取得该像素点周围8个或者四个像素点相加,总和等于255 * 8或者 255 *4,则说明该像素点为噪声,置为255。

    注意:领域的计算方法是没有边界的,所以通常不计算图像四边。

                int bai;
                        for(int i = 1; i < Use_ROWS-1; i++)   
                        {
                            for(int j =1; j < Use_Line-1; j++)
                            { if(Image_Use[i-1][j] == 255) continue;     
                              bai = Image_Use[i-1][j] + Image_Use[i-1][j-1] + Image_Use[i-1][j+1] +Image_Use[i][j+1] +Image_Use[i][j-1] +Image_Use[i+1][j] +Image_Use[i+1][j-1] +Image_Use[i+1][j+1] ;
                              if(bai == 2040)
                              Image_Use[i][j] = 255;
                              
                            }
                        }

     

    转载于:https://www.cnblogs.com/-wenli/p/11486877.html

    展开全文
  • 用getRGB方法获得的不准确 最好能给个不同位数的读取方法,多谢,其他方法也可以。
  • Otsu算法 灰度图像

    千次阅读 2015-10-21 21:24:54
    Otsu方法是一种全局化的动态二化方法,又叫大津法,是一种灰度图像化的常用算法。该算法的基本思想是:设使用某一个阈值将灰度图像根据灰度大小,分成目标部分和背景部分两类,在这两类的类内方差最小和类间...
     Otsu方法是一种全局化的动态二值化方法,又叫大津法,是一种灰度图像二值化的常用算法。该算法的基本思想是:设使用某一个阈值将灰度图像根据灰度大小,分成目标部分和背景部分两类,在这两类的类内方差最小和类间方差最大的时候,得到的阈值是最优的二值化阈值。

        我个人对这个算法实践后的结果是:这个算法在光照均匀的时候,可以得到很好的效果,大多数情况下,都可以的到相当不错的效果。而且其本质是很好理解的。说通俗一点的比方,用一个分数线将班上所有学生的成绩分为好学生和差学生两类,要使两类学生的区分看起来最明显,很显然要达到的效果是:好学生和差学生之间要区别最大,同时好学生和好学生之间分数不能拉太大,同时差学生和差学生之间也差距不大。

        回到图像的问题上来,对一幅N×M个像素的图像来说。

    1°.首先计算图像的平均灰度u,计算如下:
        对于一张大小M×N的图像,统计得到全部图像中灰度为i对应的像素个数n(i),于是该图像的平均灰度值
        u=∑i*n(i)/(M*N);

    2°.列出求解最佳阀值t的相关变量
        记t为目标与背景的分割阈值,记目标像素(灰度大于t)占图像的比例为w1,记目标像素的平均灰度为u1:
        w1= W1/(M*N),其中的W1是灰度值大于t的统计数
        u1= ∑i*n(i)/W1, i>t.
        同理,得到背景像素占图像的比例w2,背景像素的平均灰度u2。

    3°.求解最佳阀值t是类差别最大
        遍历2°中的t,使得G=w1*(u1-u)*(u1-u)+w2*(u2-u)*(u2-u)最大.

        G最大时,即得到了最佳阈值,与上式子等价的还有:G=(u1-u)*(u1-u)*(u2-u)*(u2-u);最大

    两者的等价关系很容易证明。
    展开全文
  • 用直方图统计法描述的像素邻域纹理特征进行图像间的像素匹配,将匹配性最佳的参考图像像素的颜色传递给相应灰度图像像素的颜色通道,将色彩传递结果图像转换回RGB空间显示.实验结果表明:该方法能够提高像素匹配...
  • numpy统计图像中某个像素值的个数

    万次阅读 2019-04-29 13:36:45
    今天用想用分类后的图像统计其中不同类别像素数,也就是图像上有红红绿绿的像素统计其中红色的像素个数,绿色的像素个数等等,直观的想法是遍历图像的每一个像素,然后一个一个计数,然而我要用python去做,这样...

    今天用想用分类后的图像,统计其中不同类别像素数,也就是图像上有红红绿绿的像素,统计其中红色的像素个数,绿色的像素个数等等,直观的想法是遍历图像的每一个像素,然后一个一个计数,然而我要用python去做,这样python去循环遍历是很慢的,而且如果图像很大,那么耗时是不能被接受的,所以想到python的矩阵操作应该可以解决这个问题。
    在这里插入图片描述
    1、参考了numpy的布尔索引: 用布尔索引找到像素值为红色,或绿色的像素,然后在求返回来的矩阵的大小就知道有多少个像素了。

     g = mask_full_binarization[:,:,1] == 255
     r = mask_full_binarization[:,:,0] == 255
     greenpixel_count = len(mask_full_binarization[g])
     redpixel_count = len(mask_full_binarization[r])
    

    2、另一种方法是经过一位大神指点的,用到numpy的广播机制,代码如下:

     greenpixel_count = (mask_full_binarization.reshape(-1, 3)[:,1] == 255).sum()
     redpixel_count = (mask_full_binarization.reshape(-1, 3)[:,0] == 255).sum()
    

    大神说好像也可以用numpy的histogram,目前还不了解,以后有时间用到会进一步了解。

    展开全文
  • 灰度级和像素值

    千次阅读 2016-08-06 13:21:51
    这段时间一直在思考灰度级和像素值的区别,当然还有屏幕分辨率。经过查找资料加上自己的体验,暂时得到一些理解。  我们按照范围从大到小:屏幕分辨率主要表现在显示屏的图像显示质量问题上,表示屏幕上长度和宽度...

            这段时间一直在思考灰度级和像素值的区别,当然还有屏幕分辨率。经过查找资料加上自己的体验,暂时得到一些理解。

            我们按照范围从大到小:屏幕分辨率主要表现在显示屏的图像显示质量问题上,表示屏幕上长度和宽度上拥有的像素点,当然像素点越多,所能显示的颜色越多,显示也就越清晰。像素用2进制表示,灰度图像一般是8位二进制,像素也有32位的,24位的。灰度就是没有色彩,RGB色彩分量全部相等。如果是一个二值灰度图象,它的象素值只能为0或1,我们说它的灰度级为2。用个例子来说明吧:一个256级灰度的图象,RGB(100,100,100)就代表灰度为100,RGB(50,50,50)代表灰度为50。

              灰度是指黑白图像中点的颜色深度,范围一般从0到255,白色为255 ,黑色为0,故黑白图片也称灰度图像。黑白图像的灰度值和像素值都是一样的。彩色图像的灰度值是转化为黑白图像的像素值或灰度值。一般通过加权平均的方法得到。


    展开全文
  • 灰度 灰度图像

    2014-11-22 22:22:00
    灰度图像是由灰度像素组成的,所谓灰度像素就是指:在RGB颜色模型下,图像中每个像素颜色的R、G、B 三种基色的分量相等的像素。在RGB 颜色模型下,RGB 三原色的取值都是0~255 之间的整数。因此,灰度图像只能表现...
  • 即图像上的每一个像素点的像素值只有两种可能的取值或灰度等级状态,人们经常用黑白、B&W、单色图像表示二值图像。为了更形象的表示,用图表示如下: 灰度图像 灰度图像(Gray Image),每个像素的信息由一个...
  • python opencv-10图像像素值统计

    千次阅读 2019-11-04 19:04:33
    import cv2 as cv import numpy as np src=cv.imread(r’C:\Users\zs\Desktop\defm.jpg’,cv.IMREAD_GRAYSCALE) cv.namedWindow(‘input’,cv.WINDOW_AUTOSIZE) ...#最大最小值和相应的位置 min,max,minLoc,ma...
  • 【OpenCV】10 图像像素值统计

    千次阅读 2020-03-04 09:55:47
    实际上读取的灰度图像是numpy数组,所以,可以直接用np.where() 所有内容均来源于贾志刚老师的知识星球——OpenCV研习社,本文为个人整理学习,已获得贾老师授权,有兴趣、有能力的可以加入贾老师的知识星球进行...
  • 主要介绍了用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • RGB图像中三个通道的每个灰度值像素个数,区域的像素灰度值平均,AbsoluteHisto变量的部分像素数量。
  • 图像、灰度图像、彩色图像

    万次阅读 多人点赞 2018-03-31 12:53:17
    ____tz_zs二值图像值图像...如果把每个像素看成随机变量,一共有N个像素,那么二图有2的N次方种变化,而8位灰度图有255的N次方种变化,8为三通道RGB图像有255*255*255的N次方种变化。也就是说同样尺寸的图像...
  • OpenCV-Day-010:图像像素值统计

    千次阅读 2019-05-25 10:25:56
    代码 import cv2 as cv import numpy as np src = cv . imread ( './bird.jpg' , cv . IMREAD_GRAYSCALE ...# 二化 ...实际上读取的灰度图像是numpy数组,所以,可以直接用np.where()
  • 灰度以及灰度图像

    千次阅读 2013-12-02 09:44:43
    灰度图像是由灰度像素组成的,所谓灰度像素就是指:在RGB颜色模型下,图像中每个像素颜色的R、G、B 三种基色的分量相等的像素。在RGB 颜色模型下,RGB 三原色的取值都是0~255 之间的整数。因此,灰度图像只能表现...
  • 显示图像的象素灰度值图像灰度直方图,可以自动显示鼠标位置的图像象素的灰度值,在查看中可以看到整个图像灰度直方图,并且可以查看每个灰度值像素的数量。
  • 灰度图像特征提取之统计方式详解

    千次阅读 2019-03-12 20:47:37
    灰度图像特征提取之统计方式详解 统计方法的优势: 具有较强的适应能力和鲁棒性。 统计方法的不足 : 与人类视觉模型脱节,缺少全局信息的利用,难以研究纹理尺度间像素的遗传或依赖关系;缺乏理论支撑;计算...
  • raw格式图像灰度统计

    2012-04-09 13:02:18
    用C语言实现raw格式图像的读取及对其灰度分布进行统计
  • 2.统计灰度值 3.将结果写回result.txt 代码:  方法一 #include #include void main() { int i,j; FILE *fp; //指向文件的指针 fp=fopen("Lena.raw","rb"); //打开文件。注意raw格式图像要以只读二进制...
  • 灰度图像增强和图像去噪

    万次阅读 2016-01-17 21:11:04
    P1 图像灰度变换增强... 2 一、  前言... 2 二、  灰度变换增强的方法及其实现... 2 1.  线性灰度变换... 2 2.  分段线性灰度变换... 4 3.  对数函数灰度变换... 6 4.  反对数函数灰度变换... 8 5.  伽马变换...
  • Otsu方法是一种全局化的动态二化方法,又叫大津法,是一种灰度图像化的常用...对一幅N×M个像素灰度图像来说。 1°.首先计算图像的平均灰度u,计算如下:  对于一张大小M×N的图像,统计得到全部图像中
  • opencv获取灰度图像直方图

    千次阅读 2017-08-04 12:00:05
    图像是由不同数值(颜色)的像素构成的,像素值在整幅图像的分布情况是该图的一个...255(白)),这里我们将灰度图像看做一个大矩阵,像素值也就矩阵中每个元素值。直方图是一个简单的表格,表示一个图像中具有某个值的
  • matlab求灰度图像的灰度直方图

    万次阅读 2016-09-07 20:19:29
    灰度直方图是关于灰度级分布的函数,是对图像中的灰度级分布的统计。...通过matlab可以方便的绘制出灰度图像的灰度直方图。以下为程序代码。 >> clear>> filename='F:\1.jpg'; %文件路径 >> imfinfo
  • RGB图像转换为灰度图像的原理

    万次阅读 2019-06-20 21:53:16
    RGB彩色图像中,一种彩色由R(红色),G(绿色),B(蓝色)三原色按... 灰度图像是用不同饱和度的黑色来表示每个图像点,比如用8位 0-255数字表示“灰色”程度,每个像素点只需要一个灰度,8位即可,这样一个3...
  • 求matlab代码:统计图像像素点集P=={(xi,yi)丨i∈(1,N)}的像素点数,N为像素数,并利用xi,yi,N计算 [图片说明](https://img-ask.csdn.net/upload/201801/12/1515725863_593650.png)
  • 图像处理:图像灰度

    万次阅读 多人点赞 2019-06-18 16:42:06
    灰度图像上每个像素的颜色又称为灰度,指黑白图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0。所谓灰度是指色彩的浓淡程度,灰度直方图是指一幅数字图像中,对应每一个灰度值统计出具有该灰度的象...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,833
精华内容 7,133
关键字:

统计灰度图像的像素值