单阈值大津法

2023年3月29日

单阈值大津法

大津法属于全局阈值方法中的一种,即是最大类间方差法
大津法主要原理在于会自动找出一个阈值 使得分割后的两部分类间方差最大 适用于有双波峰的图像,大津法作为图像分割中阈值选取的常用算法,计算简单,不受图像亮度和对比度的影响,主要原理如下:
影像的大小为M×N,将前景区域和背景区域的分割阈值记作T,影像中像素值小于阈值T的像素个数记为N0,像素值大于阈值T的像素个数记为N1,则有:

w0=N0/(M×N)    
w1=N1/(M×N)    
μ=w0×μ0+w1×μ1    
g=w0×(μ0-μ)^2+w1×(μ1-μ)^2    

其中w0为前景区域像素个数占整幅影像的比例,其像素均值为μ0;w1是背景区域像素个数占整幅影像的比例,其像素均值为μ1;μ为影像的总像素均值,g为类间方差,当计算出的类间方差g最大时,对应的阈值T即为最佳分割效果的阈值。

其实对比 方差的求解公式

很容易理解 最大类间方差
类间方差就是把图像分成两团 两个整体 分别计算 每个整体的方差
方差1 xi就是 前景的均值u0 x平均 就是整幅影像均值u n=1
方差2 同样
然后再乘以这两部分的权重 相加即可

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;
using namespace cv;

double Otsu(Mat& image)
{
    int threshold = 0;
    double maxVariance = 0;
    double w0 = 0, w1 = 0;//前景与背景像素点所占比例
    double u0 = 0, u1 = 0;//前景与背景像素值平均灰度
    int histogram[256] = { 0 }; //定义一个数组 长度为256  0-255
    int Num = image.cols * image.rows;  //总像素个数
    //统计256个bin,每个bin像素的个数
    for (int i = 0; i (i);
        for (int j = 0; j  maxVariance)
        {
            maxVariance = variance;
            threshold = i;
        }
    }
    cout (i);  //获取第i行的首地址
        for (int j = 0; j 


(威少的黑白图还有点像利拉德)
都差不多

服务器托管,北京服务器托管,服务器租用 http://www.hhisp.net

hackdl

咨询热线/微信 13051898268