otsu是很经典的阈值分割算法,这里是我自己写的一个小程序,用到的是最经典,最基础的最大间方差公式:icv = w0[m](u0[m]-ut)(u0[m]-ut)+w1[m](uk[m]-ut)(uk[m]-ut) 。
w0:是前景占整幅图的比例值
u0:是前景像素值的平均值
w1:是背景占整幅图的比例值
uk:是背景像素值得平均值
ut:是整幅图象的像素的平均值
以m为阈值分割出前景与背景,遍历0到255像素值,得到最大间方差。
下面是代码:
int otsu(cv::Mat srcImg,int imageHeight,int imageWidth)
{
const int grayLevel=256;
int i,j; //位置循环变量
int m,n; //灰度循环变量
//存放原图像的均值