2.灰度图像阈值确定

更新时间:2023-07-20 18:40:48 阅读: 评论:0

阈值获取总结
图像处理中,常去除图像中不理想的部分,而保留对象部分。所以,我们可以通过阈值进行提取,例如,通过阈值法提取出文字部分,可用下式进行表示:
但是,随着环境的变化,所给的阈值的不同,对于所提取的对象就有很大的差别。所以,需要一种实时确定阈值的方法使得背景和物体可以准确地分类。在此推荐的方法—— 最大类间方差法(Otsu、大津法)。 通过对比和仔细的推算,此种方法比较容易实现,而且效果比较好。
下面简述并且摘录一下文献中关于“最大类间方差法”的说明:最大类间方差法(Otsu)是由Otsu于1979年提出的,是基于整幅图像的统计特性实现阈值的自动选取的,是全局二值化最杰出的代表。Otsu算法的基本思想是用某一假定的灰度值t将图像的灰度分成两组,当两组的类间方差最大时,此灰度值t就是图像二值化的最佳阈值。设图像有L个灰度值,取值范围在 0~L-1,在此范围内选取灰度值 T,将图像分成两组G0和G1,G0包含的像素的灰度值在 0
~T,G1的灰度值在 T+1~L-1,用 N 表示图像像素总数。
算法可这样理解:阈值T将整幅图像分成前景和背景两部分,当两类的类间方差最大时,此时前景和背景的差别最大,二值化效果最好。因为方差是灰度分布均匀性的一种度量,方差值越大,说明构成图像的两部分差别越大,当部分目标错分为背景或部分背景错分为目标 都会导致两部分差别变小,因此使类间方差最大的分割阈值意味着错分概率最小。
大律法得到了广泛的应用,但是当物体目标与背景灰度差不明显时,会出现无法忍受的大块黑色区域,甚至会丢失整幅图像的信息。所以,此时应该适当降低图像的阈值,从而消除大块的黑色区域。下面是具体确定理想阈值的API:
/*******************************************************************
** Function Name : histgram  --  获得灰度图像直方图
** Input Param  : u8 image_in[Y_SIZE][X_SIZE];// 输入图像数组
**                u32 hist[64];              // 直方图数组       
** Output Param  : No
** Return Value  : No
********************************************************************/
void histgram(u8 image_in[Y_SIZE][X_SIZE],u16 hist[64])
属虎的是什么命{
    u16 i,j,n;
    for(n = 0;n < 64; n ++) hist[n] = 0;
元旦调休    for(i = 0;i < Y_SIZE;i ++){
        for(j = 0;j < X_SIZE;j ++){
            n = image_in[i][j];
            hist[n] ++;              //统计灰度级n
        }
    }
}
/********************************************************************* Function Name : picture_thresh
** Input Param  : u16 hist[64]
**                u8 *thresh;        // 返回的灰度图像阈值thresh       
** Output Param  : No
** Return Value  : No
********************************************************************/
void picture_thresh(u16 hist[64],u8 *thresh)
{
    u8 i;
    float sum_per0,sum_per1,sum_gray0,sum_gray1;
    float result,record0,record1;
    float gray_percentage[64];        //各级灰度的百分比
sap软件    float average_gray[64];          //各级平均灰度值
    sum_per0 = 0.0;
    sum_gray0 = 0.0;
    sum_gray1 = 0.0;
    record0 = 1;
    record1 = 0;
古代雅称
喝柠檬水有什么作用    for(i = 0;i < 64;i ++){
        gray_percentage[i] = hist[i]/19200.0;
        average_gray[i] = (float)i*gray_percentage[i];
        sum_gray1 += average_gray[i];  //平均灰度值
    }
    for(i = 0;i < 64;i ++){
        sum_per0 = sum_per0 + gray_percentage[i];  //w0
        sum_per1 = 1 - sum_per0;                //w1
        sum_gray0 = sum_gray0 + average_gray[i];
        sum_gray1 = sum_gray1 - average_gray[i];
        result = sum_per0 * sum_per1 * (sum_gray0 - sum_gray1) *(sum_gray0 - sum_gray1);
小苏打是什么
        if((record1 > record0) && (record1 > result)){
            break;
白芷的功效与作用吃法        }
        record0 = record1;
        record1 = result;
    }
    if(i == 0) *thresh = 0;
    if(i >= 50) *thresh = 50;
    el *thresh = i;
}
    上面的两个函数需要组合使用,并且通过STM32和OV7670进行实地的调试,显示效果还是可以的。
Date      : 2016/5/30
阎罗令Create By : 硅谷的另一面

本文发布于:2023-07-20 18:40:48,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1089451.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:阈值   图像   灰度   部分   背景   方差   方法   物体
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图