资源简介
Otsu双阈值分割。将图像分为三层,在根据Middle与top的关系进行二值化
代码片段和文件信息
void Otsu2Threshold(Mat& src Mat& dst)
{
Mat img = src;
//dst.create(src.size() src.type());
CV_Assert(1 == img.channels());
int height = img.rows;
int width = img.cols;
int Threshold1 = 0;//阈值
int Threshold2 = 0;//阈值
double gSum_object;//第一类前景灰度总值
double gSum_middle;
double gSum_blackground;//第二类,背景灰度总值
double N_object = 0;//前景像素数
double N_middle = 0;
double N_blackground = 0;//背景像素数
double u0 = 0;//前景像素平均灰度
double u1 = 0;
double u2 = 0;//背景像素平均灰度
double w0 = 0;//前景像素点数占整幅图像的比例为ω0
double w1 = 0;
double w2 = 0;//背景像素点数占整幅图像的比例为ω1
double u = 0;//总平均灰度
double tempg = -1;//临时类间方差
double g = -1;//类间方差
double Histogram[256]={0};//灰度直方图
double N_allpixel = width * height;//总像素数
for(int k = 0; k < height; k++)
{
//计算直方图
uchar* d
- 上一篇:VS2010 MFC 计算器
- 下一篇:C++实现异质链表
评论
共有 条评论