智能车随手记:摄像头图像处理----动态阈值之大津法

简介: 智能车随手记:摄像头图像处理----动态阈值之大津法

智能车摄像头图像处理:动态阈值之大津法
(参考了逐飞提供的例程)

/*##########蓝多多老爷车大津法计算阈值部分########*/

uint8 my_adapt_threshold(uint8 *image, uint16 col, uint16 row)   //注意计算阈值的一定要是原图像
{
   #define GrayScale 256
    uint16 width = col;
    uint16 height = row;
    int pixelCount[GrayScale];
    float pixelPro[GrayScale];
    int i, j, pixelSum = width * height/4;
    uint8 threshold = 0;
    uint8* data = image;  //指向像素数据的指针
    for (i = 0; i < GrayScale; i++)
    {
        pixelCount[i] = 0;
        pixelPro[i] = 0;
    }
    
    uint32 gray_sum=0;
    //统计灰度级中每个像素在整幅图像中的个数  
    for (i = 0; i < height; i+=2)
    {
        for (j = 0; j < width; j+=2)
        {
            pixelCount[(int)data[i * width + j]]++;  //将当前的点的像素值作为计数数组的下标
            gray_sum+=(int)data[i * width + j];       //灰度值总和
        }
    }
                      
    //计算每个像素值的点在整幅图像中的比例  
  
    for (i = 0; i < GrayScale; i++)
    {
        pixelPro[i] = (float)pixelCount[i] / pixelSum;
        
    }

    //遍历灰度级[0,255]  
    float w0, w1, u0tmp, u1tmp, u0, u1, u, deltaTmp, deltaMax = 0;
        w0 = w1 = u0tmp = u1tmp = u0 = u1 = u = deltaTmp = 0;
        for (j = 0; j < GrayScale; j++)         
        {
            
                w0 += pixelPro[j];  //背景部分每个灰度值的像素点所占比例之和   即背景部分的比例
                u0tmp += j * pixelPro[j];  //背景部分 每个灰度值的点的比例 *灰度值 
           
               w1=1-w0;
               u1tmp=gray_sum/pixelSum-u0tmp;
        
                u0 = u0tmp / w0;              //背景平均灰度
                u1 = u1tmp / w1;              //前景平均灰度
                u = u0tmp + u1tmp;            //全局平均灰度
                deltaTmp = w0 * pow((u0 - u), 2) + w1 * pow((u1 - u), 2);//平方
                if (deltaTmp > deltaMax)
                {
                    deltaMax = deltaTmp;//最大类间方差法
                    threshold = j;
                }
                if (deltaTmp < deltaMax)
                {
                break;
                }
          
         }
    return threshold;
}

本文章仅为学习过程随手记,如有批评指正欢迎留言。

相关文章
|
7月前
|
监控 安全 自动驾驶
基于python的室内老人实时摔倒智能监测系统-跌倒检测系统(康复训练检测+代码)
基于python的室内老人实时摔倒智能监测系统-跌倒检测系统(康复训练检测+代码)
|
5月前
|
数据采集 监控 算法
LabVIEW与3D相机开发高精度表面检测系统
LabVIEW与3D相机开发高精度表面检测系统
69 2
|
2月前
|
搜索推荐 数据安全/隐私保护
智能玻璃:自适应环境变化的建筑材料
【10月更文挑战第17天】智能玻璃是一种能够根据外界环境条件自动调节透明度、颜色或隔热性能的高科技建筑材料。本文介绍了智能玻璃的工作原理(如电致变色、热致变色、光致变色)、分类、应用领域(建筑、汽车、航空)以及其在节能环保、隐私保护、光线控制等方面的卓越表现。未来,智能玻璃将更加智能化,助力建筑行业向绿色化、可持续方向发展。
|
7月前
|
固态存储 数据安全/隐私保护 计算机视觉
C++医院影像科PACS源码:三维重建、检查预约、胶片打印、图像处理、测量分析等
C++医院影像科PACS源码:三维重建、检查预约、胶片打印、图像处理、测量分析等
119 0
|
传感器 人工智能 监控
Baumer工业相机堡盟相机如何使用自动曝光功能(自动曝光优点和行业应用)(C++)
Baumer工业相机堡盟相机如何使用自动曝光功能(自动曝光优点和行业应用)(C++)
173 0
|
传感器 机器学习/深度学习 算法
SIGGRAPH | 6个惯性传感器和1个手机实现人体动作捕捉、定位与环境重建(1)
SIGGRAPH | 6个惯性传感器和1个手机实现人体动作捕捉、定位与环境重建
239 0
|
传感器 定位技术 图形学
SIGGRAPH | 6个惯性传感器和1个手机实现人体动作捕捉、定位与环境重建(2)
SIGGRAPH | 6个惯性传感器和1个手机实现人体动作捕捉、定位与环境重建
221 0
|
自动驾驶 API 语音技术
无人驾驶之交通识别项目--用Python实现语音播放“提示”
无人驾驶之交通识别项目--用Python实现语音播放“提示”
167 0
|
传感器 物联网 开发者
5_2_1_光照信息屏_ 实验技术点及应用场景介绍|学习笔记
快速学习5_2_1_光照信息屏_实验技术点及应用场景介绍。
181 0
5_2_1_光照信息屏_ 实验技术点及应用场景介绍|学习笔记
|
编解码 计算机视觉
【方便的Opencv】实现实时监测电脑屏幕与摄像头前的人
【方便的Opencv】实现实时监测电脑屏幕与摄像头前的人
1022 0
【方便的Opencv】实现实时监测电脑屏幕与摄像头前的人