最大类间方差法
最大类间方差法

最大类间方差法是由日本学者大津于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU。
它是按图像的灰度特性,将图像分成背景和目标2部分。
背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致2部分差别变小。
因此,使类间方差最大的分割意味着错分概率最小.对于图像I(x,y),前景(即目标)和背景的分割阈值记作T,属于前景的像素点数占整幅图像的比例记为ω0,其平均灰度μ0;背景像素点数占整幅图像的比例为ω1,其平均灰度为μ1。
图像的总平均灰度记为μ,类间方差记为g。
假设图像的背景较暗,并且图像的大小为M×N,图像中像素的灰度值小于阈值T的像素个数记作N0,像素灰度大于阈值T的像素个数记作N1,则有:ω0=N0/ M×N (1)ω1=N1/ M×N (2)N0+N1=M×N (3)ω0+ω1=1 (4)μ=ω0*μ0+ω1*μ1 (5)g=ω0(μ0—μ)^2+ω1(μ1-μ)^2 (6)将式(5)代入式(6),得到等价公式: g=ω0ω1(μ0-μ1)^2 (7)采用遍历的方法得到使类间方差最大的阈值T,即为所求。
Otsu算法步骤如下:设图象包含L个灰度级(0,1…,L—1),灰度值为i的的象素点数为Ni ,图象总的象素点数为N=N0+N1+。
..+N(L-1).灰度值为i的点的概为:P(i) = N(i)/N.门限t将整幅图象分为暗区c1和亮区c2两类,则类间方差σ是t的函数:σ=a1*a2(u1—u2)^2 (2)式中,aj 为类cj的面积与图象总面积之比,a1 = sum(P(i))i—>t, a2 = 1—a1;uj为类cj的均值,u1 = sum(i*P(i))/a1 0->t,u2 = sum(i*P(i))/a2,t+1-〉L—1该法选择最佳门限t^ 使类间方差最大,即:令Δu=u1—u2,σb = max{a1(t)*a2(t)Δu^2} OTSU方法计算图像二值化的自适应阈值int otsu (unsigned char *image,int rows, int cols, int x0,int y0,int dx, int dy,int vvv){unsigned char *np;// 图像指针int thresholdValue=1; // 阈值int ihist[256]; // 图像直方图,256个点int i,j,k;// various countersint n,n1,n2,gmin,gmax;double m1, m2,sum, csum, fmax,sb;// 对直方图置零...memset(ihist, 0,sizeof(ihist));gmin=255; gmax=0;// 生成直方图for (i = y0 + 1;i < y0 + dy - 1; i++){np = &image[i*cols+x0+1];for (j = x0 + 1; j 〈x0 + dx - 1; j++){ihist[*np]++;if(*np > gmax)gmax=*np;if(*np < gmin)gmin=*np;np++;}}// set up everythingsum = csum = 0。
基于遗传算法的OTSU煤矿井筒裂缝快速识别方法

基于遗传算法的OTSU煤矿井筒裂缝快速识别方法岳国伟;卢秀山;贾红果;刘如飞【摘要】井筒巡检仪采集的井筒序列影像,占用存储空间达90G 以上,数据量大,分析处理费时费力。
最大类间方差法作为一种典型的图像自适应阈值分割方法,在进行图像分割时,存在计算复杂度高、时间消耗多、分割精度低等问题。
为提高裂缝识别效率,提出了一种基于遗传算法的 OTSU煤矿井筒裂缝快速识别方法,遗传算法用来提高迭代求解速度和计算效率。
实验结果表明,本文方法不仅能缩短运算时间30%以上,而且能够快速准确识别井筒裂缝病害,提高井筒巡检的自动化程度。
%The sequence images collected by the mine shaft inspection instrument take up more than 90G of storage space��The data is very large and the analysis is time-consuming and la-borious�� OTSU is a typical image adaptive threshold segmentation method�� There are many problems such as high computational complexity,high time consumption and low accuracy of segmentation when it is carrying on the image segmentation,in order to improve the efficiency of crack recognition,a new method of mine shaft crack recognition based on genetic algorithm is proposed��Genetic algorithm is used to improvethe speed and efficiency�� The experimental re-sults show that this method can not only shorten the operation time of 30%,but also can quickly and accurately recognize the crack disease,which will improve the degree of automation of mine shaft inspection.【期刊名称】《中国煤炭》【年(卷),期】2016(042)004【总页数】6页(P71-75,85)【关键词】遗传算法;最大类间方差法;井筒巡检;裂缝识别【作者】岳国伟;卢秀山;贾红果;刘如飞【作者单位】山东科技大学,山东省青岛市,266590;山东科技大学,山东省青岛市,266590;山东科技大学,山东省青岛市,266590;山东科技大学,山东省青岛市,266590【正文语种】中文【中图分类】TD535煤矿生产中,竖井井筒是人员上下、煤炭出井、物料收送的重要通道,是整个煤炭生产的安全出口。
基于最大类间方差遗传算法的岩心CT扫描图像分割方法

地 球 物 理 地球 化 学 勘 查 院地 震 公 司 宁 夏 银 川 7 0 0 50 4)
摘
要: 目前 , T技 术在 油气勘探 领域 中应 用越 来越 广 泛 , C 尤其是 在岩 心分析 方 面。 本文在 分析岩
心C T扫描 图像特 征的基 础上 , 出一种 消除岩心 CT图像 背景影 响 的分割 方法 。首先 对岩心 C 提 T
作者简介 : 汤翟 ( 9 5 , 长江大学在读硕 士研究生 , 18 一) 男, 研究方向为测井资料 处理与解释 。
2 1年 第 5 00 期
汤 翟 , : 于 最 大类 间方 差 遗 传 算 法 的岩 心 C 等 基 T扫 描 图像 分 割 方 法
图像 中间的岩心灰度值与边缘的背景灰度值有明显 的差 异 , 因而其灰 度统计 直方 图一般 包含两 个峰 , 如 ( 3。 图 ) 为了减少岩心周围的黑色背景灰度值对岩 心 图像 的干扰 ,本文提 出根据 整个 图像 的灰 度直方 图, 在直方图上双峰间的谷底位置取灰度值 T 用该 , 灰度值 T 代替 C T图像的背景灰度值。再对新的图 像应用 遗 传算法 求取最 优 阈值 K,最后 利用 该 阈值
好 的基础 。
关键 字 : 岩心 CT扫描 图像 ; 遗传 算法 ; 最大类 间方差 ; 直方 图
岩心 C T扫描 图像 是 由岩心 图像 和黑 色背 景组
0 引
言
成 的 26级灰度 图像 ,其岩心 灰度值 与周 围背 景灰 5 度 值有 明显 的差 异 。 ( 1 图 )和 ( 2 图 )分 别 给 出 了某 井 碳 酸盐 岩 溶 孔 型储 层 和 裂 缝 型储 层 的岩 心 C T扫描 图像 。从 图上可 以看 到 ,裂 缝 和溶 孔 以黑
Otsu算法(大律法或最大类间方差法)

Otsu算法(大律法或最大类间方差法)一、Otsu最大类间方差法原理利用阈值将原图像分成前景,背景两个图象。
前景:用n1,csum,m1来表示在当前阈值下的前景的点数,质量矩,平均灰度后景:用n2, sum-csum,m2来表示在当前阈值下的背景的点数,质量矩,平均灰度当取最佳阈值时,背景应该与前景差别最大,关键在于如何选择衡量差别的标准,而在otsu算法中这个衡量差别的标准就是最大类间方差(英文简称otsu,这也就是这个算法名字的来源),在本程序中类间方差用sb表示,最大类间方差用fmax 关于最大类间方差法(otsu)的性能:类间方差法对噪音和目标大小十分敏感,它仅对类间方差为单峰的图像产生较好的分割效果。
当目标与背景的大小比例悬殊时,类间方差准则函数可能呈现双峰或多峰,此时效果不好,但是类间方差法是用时最少的。
最大类间方差法(otsu)的公式推导:记t为前景与背景的分割阈值,前景点数占图像比例为w0,平均灰度为u0;背景点数占图像比例为w1,平均灰度为u1。
则图像的总平均灰度为:u=w0*u0+w1*u1。
前景和背景图象的方差:g=w0*(u0-u)*(u0-u)+w1*(u1-u)*(u1-u)=w0*w1*(u0-u1)*(u0-u1),此公式为方差公式。
可参照概率论课本上面的g的公式也就是下面程序中的sb的表达式。
当方差g最大时,可以认为此时前景和背景差异最大,此时的灰度t是最佳阈值sb = w1*w2*(u1-u0)*(u0-u1)算法实现1:unsafe public int GetThreshValue(Bitmap image){BitmapData bd = image.LockBits(new Rectangle(0, 0, image.Width, image.Height), ImageLockMode.WriteOnly, image.PixelFormat);byte* pt = (byte*)bd.Scan0;int[] pixelNum = new int[256]; //图象直方图,共256个点byte color;byte* pline;int n, n1, n2;int total; //total为总和,累计值double m1, m2, sum, csum, fmax, sb; //sb为类间方差,fmax存储最大方差值int k, t, q;int threshValue = 1; // 阈值int step = 1;switch (image.PixelFormat){case PixelFormat.Format24bppRgb:step = 3;break;case PixelFormat.Format32bppArgb:step = 4;break;case PixelFormat.Format8bppIndexed:step = 1;break;}//生成直方图for (int i = 0; i < image.Height; i++){pline = pt + i * bd.Stride;for (int j = 0; j < image.Width; j++){color = *(pline + j * step); //返回各个点的颜色,以RGB表示pixelNum[color]++; //相应的直方图加1}}//直方图平滑化for (k = 0; k <= 255; k++){total = 0;for (t = -2; t <= 2; t++) //与附近2个灰度做平滑化,t值应取较小的值{q = k + t;if (q < 0) //越界处理q = 0;if (q > 255)q = 255;total = total + pixelNum[q]; //total为总和,累计值}//平滑化,左边2个+中间1个+右边2个灰度,共5个,所以总和除以5,后面加0.5是用修正值pixelNum[k] = (int)((float)total / 5.0 + 0.5);}//求阈值sum = csum = 0.0;n = 0;//计算总的图象的点数和质量矩,为后面的计算做准备for (k = 0; k <= 255; k++){//x*f(x)质量矩,也就是每个灰度的值乘以其点数(归一化后为概率),sum为其总和sum += (double)k * (double)pixelNum[k];n += pixelNum[k]; //n为图象总的点数,归一化后就是累积概率}fmax = -1.0; //类间方差sb不可能为负,所以fmax初始值为-1不影响计算的进行n1 = 0;for (k = 0; k < 255; k++) //对每个灰度(从0到255)计算一次分割后的类间方差sb{n1 += pixelNum[k]; //n1为在当前阈值遍前景图象的点数if (n1 == 0) { continue; } //没有分出前景后景n2 = n - n1; //n2为背景图象的点数//n2为0表示全部都是后景图象,与n1=0情况类似,之后的遍历不可能使前景点数增加,所以此时可以退出循环if (n2 == 0) { break; }csum += (double)k * pixelNum[k]; //前景的“灰度的值*其点数”的总和m1 = csum / n1; //m1为前景的平均灰度m2 = (sum - csum) / n2; //m2为背景的平均灰度sb = (double)n1 * (double)n2 * (m1 - m2) * (m1 - m2); //sb为类间方差if (sb > fmax) //如果算出的类间方差大于前一次算出的类间方差{fmax = sb; //fmax始终为最大类间方差(otsu)threshValue = k; //取最大类间方差时对应的灰度的k就是最佳阈值}}image.UnlockBits(bd);image.Dispose();return threshValue;}算法实现2:Otsu算法步骤如下:设图象包含L个灰度级(0,1…,L-1),灰度值为i的的象素点数为Ni ,图象总的象素点数为N=N0+N1+...+N(L-1)。
阈值确定方法

一、问题重述图形(或图像)在计算机里主要有两种存储和表示方法。
矢量图是使用点、直线或多边形等基于数学方程的几何对象来描述图形,位图则使用像素来描述图像。
一般来说,照片等相对杂乱的图像使用位图格式较为合适,矢量图则多用于工程制图、标志、字体等场合。
矢量图可以任意放缩,图形不会有任何改变。
而位图一旦放大后会产生较为明显的模糊,线条也会出现锯齿边缘等现象。
矢量图从本质上只是使用曲线方程对图形进行的精确描述,在以像素为基本显示单元的显示器或打印机上是无法直接表现的。
将矢量图转换成以像素点阵来表示的信息,再加以显示或打印,这个过程称之为栅格化(Rasterization),见图1。
栅格化的逆过程相对比较困难。
假设有一个形状较为简单的图标,保存成一定分辨率的位图文件。
我们希望将其矢量化,请你建立合理的数学模型,尽量准确地提取出图案的边界线条,并将其用方程表示出来。
二、问题分析本题的要求是完成位图的矢量化,通过建立合理的数学模型,将一个有一定分辨率的位图文件尽量准确地提取出图案的边界线条,最终将位图用方程的形式表示出来。
解决本问题的流程图见下图。
首先,通过MATLAB读取位图的各个像素的像素值(0-1),得到位图各个点的灰度值,通过最大类间方差法和最大熵法确定阈值,完成灰度的二值化,使各个像素点的灰度值全部由0或1表示。
其次,将位图的轮廓通过合适的算法提取出来,根据特征值对轮廓进行拟合。
最后,根据拟合的函数完成位图的矢量图,完成其矢量化过程,并通过对比矢量图和原始位图对应的。
三、问题假设及符号说明3.1问题假设3.2符号说明四、模型建立4.1模型准备本题要求将一个形状较为简单的图标,保存成一定分辨率的位图文件,即将位图矢量化。
阈值:指释放一个行为反应所需要的最小刺激强度,本文指像素点灰度值二值化的临界值。
4.2阈值的确定方法 4.2.1最大类间方差法最大类间方差法的基本思想是将待分割图像看作是由两类组成的整体,一类是背景,一类是目标[6]。
Ots算法(大律法或最大类间方差法)

Otsu算法(大律法或最大类间方差法)一、Otsu最大类间方差法原理利用阈值将原图像分成前景,背景两个图象。
前景:用n1,csum,m1来表示在当前阈值下的前景的点数,质量矩,平均灰度后景:用n2, sum-csum,m2来表示在当前阈值下的背景的点数,质量矩,平均灰度当取最佳阈值时,背景应该与前景差别最大,关键在于如何选择衡量差别的标准,而在otsu算法中这个衡量差别的标准就是最大类间方差(英文简称otsu,这也就是这个算法名字的来源),在本程序中类间方差用sb表示,最大类间方差用fmax 关于最大类间方差法(otsu)的性能:类间方差法对噪音和目标大小十分敏感,它仅对类间方差为单峰的图像产生较好的分割效果。
当目标与背景的大小比例悬殊时,类间方差准则函数可能呈现双峰或多峰,此时效果不好,但是类间方差法是用时最少的。
最大类间方差法(otsu)的公式推导:记t为前景与背景的分割阈值,前景点数占图像比例为w0,平均灰度为u0;背景点数占图像比例为w1,平均灰度为u1。
则图像的总平均灰度为:u=w0*u0+w1*u1。
前景和背景图象的方差:g=w0*(u0-u)*(u0-u)+w1*(u1-u)*(u1-u)=w0*w1*(u0-u1)*(u0-u1),此公式为方差公式。
可参照概率论课本上面的g的公式也就是下面程序中的sb的表达式。
当方差g最大时,可以认为此时前景和背景差异最大,此时的灰度t是最佳阈值sb = w1*w2*(u1-u0)*(u0-u1)算法实现1:unsafe public int GetThreshValue(Bitmap image){BitmapData bd = image.LockBits(new Rectangle(0, 0, image.Width, image.Height), ImageLockMode.WriteOnly, image.PixelFormat);byte* pt = (byte*)bd.Scan0;int[] pixelNum = new int[256]; //图象直方图,共256个点byte color;byte* pline;int n, n1, n2;int total; //total为总和,累计值double m1, m2, sum, csum, fmax, sb; //sb为类间方差,fmax存储最大方差值int k, t, q;int threshValue = 1; // 阈值int step = 1;switch (image.PixelFormat){case PixelFormat.Format24bppRgb:step = 3;break;case PixelFormat.Format32bppArgb:step = 4;break;case PixelFormat.Format8bppIndexed:step = 1;break;}//生成直方图for (int i = 0; i < image.Height; i++){pline = pt + i * bd.Stride;for (int j = 0; j < image.Width; j++){color = *(pline + j * step); //返回各个点的颜色,以RGB表示pixelNum[color]++; //相应的直方图加1}}//直方图平滑化for (k = 0; k <= 255; k++){total = 0;for (t = -2; t <= 2; t++) //与附近2个灰度做平滑化,t值应取较小的值{q = k + t;if (q < 0) //越界处理q = 0;if (q > 255)q = 255;total = total + pixelNum[q]; //total为总和,累计值}//平滑化,左边2个+中间1个+右边2个灰度,共5个,所以总和除以5,后面加0.5是用修正值pixelNum[k] = (int)((float)total / 5.0 + 0.5);}//求阈值sum = csum = 0.0;n = 0;//计算总的图象的点数和质量矩,为后面的计算做准备for (k = 0; k <= 255; k++){//x*f(x)质量矩,也就是每个灰度的值乘以其点数(归一化后为概率),sum为其总和sum += (double)k * (double)pixelNum[k];n += pixelNum[k]; //n为图象总的点数,归一化后就是累积概率}fmax = -1.0; //类间方差sb不可能为负,所以fmax初始值为-1不影响计算的进行n1 = 0;for (k = 0; k < 255; k++) //对每个灰度(从0到255)计算一次分割后的类间方差sb{n1 += pixelNum[k]; //n1为在当前阈值遍前景图象的点数if (n1 == 0) { continue; } //没有分出前景后景n2 = n - n1; //n2为背景图象的点数//n2为0表示全部都是后景图象,与n1=0情况类似,之后的遍历不可能使前景点数增加,所以此时可以退出循环if (n2 == 0) { break; }csum += (double)k * pixelNum[k]; //前景的“灰度的值*其点数”的总和m1 = csum / n1; //m1为前景的平均灰度m2 = (sum - csum) / n2; //m2为背景的平均灰度sb = (double)n1 * (double)n2 * (m1 - m2) * (m1 - m2); //sb为类间方差if (sb > fmax) //如果算出的类间方差大于前一次算出的类间方差{fmax = sb; //fmax始终为最大类间方差(otsu)threshValue = k; //取最大类间方差时对应的灰度的k就是最佳阈值}}image.UnlockBits(bd);image.Dispose();return threshValue;}算法实现2:Otsu算法步骤如下:设图象包含L个灰度级(0,1…,L-1),灰度值为i的的象素点数为Ni ,图象总的象素点数为N=N0+N1+...+N(L-1)。
基于顶帽变换和最大类间方差法的图像分割方法研究

1 数 学 形态 学 运算 及 顶 帽 变换
1 . 1 图像 形态 学 、 灰 度形 态学 运算 数学 形 态 学是 在 集 合代 数 基 础 上 、 用集 合 论 方 法定 量描述 几何 结构 的科 学 。 由于具备 完整 的数 学 基础 , 使得 它用 于 图像分 析和 处理 、 形态 滤波 器 的分
2 0 1 3年 1 O月 2 1日收到 , 1 0月 3 0日修改 国家 自然科学基金
图像 分割 和处 理 的过程 中得 到 了应用 。 图像 运 用 数 学形 态 学 进 行处 理 后 , 能 够 突 出需
( 5 0 9 7 5 1 2 6, 5 1 1 7 9 0 7 6) 、 江苏省 自然科学基金 ( B K 2 0 1 0 0 4 2 ) 、 江苏省 “ 3 3 3工程” 科研项 目( B R A 2 0 1 1 1 8 0 ) 资助
要的 目 标信息 , 从而方便提取。运用数学形态学进 行 图像处 理 、 分析 的步 骤为 : ① 提 出所 要 描述 的物 体 集 合结 构模 式②选 择 该 模 式 对 应 的 结 构元 素 , 该 结
第1 4卷
第 7期 2 0 1 4年 3月
科
学
技
术
与
工
程
V0 L 1 4 No . 7 Ma r .2 01 4
1 6 7 1 —1 8 1 5 ( 2 01 4) 0 7 — 0 0 6 0 — 0 5
最大类间方差法公式

最大类间方差法公式
最大类间方差法是一种常用的聚类算法,用于将数据集划分成k个类,其中k是预先指定的类的数量。
该算法的目标是最大化类间方差,即最大化不同类之间的差异性。
最大类间方差法的公式如下:
\[
\max J = \frac{{\sum_{i=1}^{k} n_i \cdot (u_i -
u)^2}}{{\sum_{i=1}^{k}\sum_{j=1}^{n_i} (x_j - u_i)^2}}
\]
其中,J表示最大类间方差,k表示类的数量,n_i表示第i个类的样本数量,u_i表示第i个类的均值,u表示所有样本的均值,x_j表示第j个样本。
该公式的含义是,分子表示各个类的均值与整体样本均值的差的平方和的加权之和,分母表示各个类的样本点与各自均值的差的平方和的总和。
通过计算最大类间方差,可以找到使得不同类之间差异最大化的划分方式。