otsu算法
来源:互联网 发布:海康网络摄像头 编辑:程序博客网 时间:2024/04/28 11:10
otsu算法
OTSU算法也称最大类间差法,有时也称之为大津算法,被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响,因此在数字图像处理上得到了广泛的应用。它是按图像的灰度特性,将图像分成背景和前景两部分。背景和前景之间的类间方差越大,说明构成图像的两部分的差别越大,当部分前景错分为背景或部分背景错分为前景都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。
设灰度图像灰度级是L,则灰度范围为[0,L-1],利用OTSU算法计算图像的最佳阈值为:
t = Max[w0(t) * (u0(t) - u)^2 + w1(t) * (u1(t) - u)^2)]
其中的变量说明:当分割的阈值为t时,w0为背景比例,u0为背景均值,w1为前景比例,u1为前景均值,u为整幅图像的均值。
使以上表达式值最大的t,即为分割图像的最佳阈值。
以下是一段在OpenCV中实现的C语言程序,即一个使用OTSU算法提取图像阈值的函数,输入参数为一个图像指针,返回分割该图像的最佳阈值。
其中的变量说明:当分割的阈值为t时
w0为背景像素点占整幅图像的比例
u0为w0平均灰度
w1为前景像素点占整幅图像的比例
u1为w1平均灰度
u为整幅图像的平均灰度
公式:g = w0*pow((u-u0),2) + w1*pow((u-u1),2)
int MyAutoFocusDll::otsuThreshold(IplImage *frame)
{
const int GrayScale = 256;
int width = frame->width;
int height = frame->height;
int pixelCount[GrayScale];
float pixelPro[GrayScale];
int i, j, pixelSum = width * height, threshold = 0;
uchar* data = (uchar*)frame->imageData;
for(i = 0; i < GrayScale; i++)
{
pixelCount[i] = 0;
pixelPro[i] = 0;
}
//统计灰度级中每个像素在整幅图像中的个数
for(i = 0; i < height; i++)
{
for(j = 0;j < width;j++)
{
pixelCount[(int)data[i * width + j]]++;
}
}
//计算每个像素在整幅图像中的比例
float maxPro = 0.0;
int kk=0;
for(i = 0; i < GrayScale; i++)
{
pixelPro[i] = (float)pixelCount[i] / pixelSum;
if( pixelPro[i] > maxPro )
{
maxPro = pixelPro[i];
kk = i;
}
}
//遍历灰度级[0,255]
float w0, w1, u0tmp, u1tmp, u0, u1, u, deltaTmp, deltaMax = 0;
for(i = 0; i < GrayScale; i++)
{
w0 = w1 = u0tmp = u1tmp = u0 = u1 = u = deltaTmp = 0;
for(j = 0; j < GrayScale; j++)
{
if(j <= i) //背景部分
{
w0 += pixelPro[j];
u0tmp += j * pixelPro[j];
}
else //前景部分
{
w1 += pixelPro[j];
u1tmp += j * pixelPro[j];
}
}
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 = i;
}
}
return threshold;
}
- OTSU算法
- Otsu算法
- otsu算法
- otsu算法
- Otsu算法
- otsu算法
- OTSU算法
- otsu算法
- Otsu算法
- OTSU算法学习 OTSU公式证明
- 【二值化】Otsu算法
- 大津法 OTSU的算法
- 大津算法 otsu
- 大津法---OTSU算法
- 大津法---OTSU算法
- C++实现otsu算法
- OTSU算法简述
- OTSU算法原理
- Android XML文件读写
- USACO 4.2.4/cowcycle
- 面试题tx待续
- 页面传入url类型参数时要注意的问题
- ※数据结构※→☆线性表结构(queue)☆============优先队列 链式存储结构(queue priority list)(十二)
- otsu算法
- 设计模式之禅笔记——亨元模式
- linux内核2
- 今天天气真好呀
- 用耐心和爱心和java培养感情
- BRC 全球食品标准适用范围
- dataguard常用命令及DG主备库开关顺序
- yii relational query (yii 关系查询详解)官方指南翻译
- 我的新浪博客-软件测试