最大类间方差法在图像处理中的应用
- 格式:pdf
- 大小:165.22 KB
- 文档页数:3
常用阈值计算方法
阈值计算是图像处理中的一项重要任务,它可以将图像中的像素分为两类:背景和前景。
常用的阈值计算方法有以下几种:
1. Otsu算法
Otsu算法是一种自适应阈值计算方法,它可以根据图像的灰度分布自动计算出最佳阈值。
该算法的基本思想是:将图像分为两类,使得类内方差最小,类间方差最大。
具体实现过程是:首先计算出图像的灰度直方图,然后遍历所有可能的阈值,计算出每个阈值对应的类内方差和类间方差,最后选择使类间方差最大的阈值作为最佳阈值。
2. 均值法
均值法是一种简单的阈值计算方法,它将图像中所有像素的灰度值求平均,然后将平均值作为阈值。
该方法的缺点是对噪声比较敏感,容易产生误判。
3. 中值法
中值法是一种基于排序的阈值计算方法,它将图像中所有像素的灰度值排序,然后选择中间值作为阈值。
该方法的优点是对噪声不敏感,但是计算量较大。
4. 迭代法
迭代法是一种基于直方图的阈值计算方法,它通过不断迭代计算出最佳阈值。
具体实现过程是:首先选择一个初始阈值,然后将图像分为两类,计算出每个类的平均灰度值,然后将两个平均值的平均值作为新的阈值,重复以上步骤直到阈值不再变化为止。
阈值计算是图像处理中的一项重要任务,不同的阈值计算方法适用于不同的图像处理场景,需要根据具体情况选择合适的方法。
遥感数字图像处理知到章节测试答案智慧树2023年最新西北师范大学第一章测试1.数字图像本质上就是一个存储数字的矩阵,是你肉眼直接看不见的。
()参考答案:对2.在同等水平条件下,模拟图像的成像效果比数字图像更好。
()参考答案:对3.采样就是指电磁辐射能量的离散化。
()参考答案:错4.按照数字图像的光谱特性可以将图像分为彩色图像和黑白图像。
()参考答案:错5.任何一幅图像都有自己对应的直方图,但相同的直方图可能对应于不同的图像。
()参考答案:对6.图像显示时的屏幕分辨率等同于图像空间分辨率。
()参考答案:错7.时间分辨率是指对同一区域进行重复观测的最小时间间隔,也称为重访周期。
()参考答案:对8.数字图像的灰度分辨率越高,可展现在屏幕上的灰度级越多,说明图像显示的灰度层次越丰富。
()参考答案:对9.为了使同一波段的像素保证存储在一块,从而保持了像素空间的连续性。
应该选择()存储方式.参考答案:BSQ10.遥感影像灰度直方图反映的是一幅图像中各灰度级像素出现的()。
参考答案:频率11.已知一幅数字图像的辐射量化等级是4 bit,则这幅图像所存储的灰度值范围是()。
参考答案:0-1512.一台显示器的屏幕在水平方向显示800个像元,在垂直方向显示600个像元,则表示该显示器的分辨率为()dpi。
参考答案:80060013.从连续图像到数字图像需要()。
参考答案:采样和量化14.下面哪些特征参数直接影响数字图像的信息含量?()参考答案:光谱分辨率;时间分辨率15.下列图像中属于单波段图像的是()。
参考答案:二值图像;伪彩色图像16.遥感数字图像直方图的作用有()。
参考答案:计算图像的信息量;辅助计算图像中物体的面积;辅助图像分割时的边界阈值选择;辅助判断图像数字化量化是否恰当17.遥感数字图像的质量可用以下哪些分辨率来衡量?()参考答案:空间分辨率;时间分辨率;光谱分辨率;辐射分辨率;温度分辨率18.常用的颜色空间模型有()。
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)。
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. 在图像的锐化处理中,通过一阶微分算子和二阶微分算子都可以进行细节的增强与检测。
垂直方向的微分算子属于________________。
(填“一阶微分算子”或“二阶微分算子”)2. 在图像的锐化处理中,通过一阶微分算子和二阶微分算子都可以进行细节的增强与检测。
Roberts交叉微分算子属于________________。
(填“一阶微分算子”或“二阶微分算子”)3. 在图像的锐化处理中,通过一阶微分算子和二阶微分算子都可以进行细节的增强与检测。
Sobel 微分算子属于________________。
(填“一阶微分算子”或“二阶微分算子”)4. 在图像的锐化处理中,通过一阶微分算子和二阶微分算子都可以进行细节的增强与检测。
Priwitt微分算子属于________________。
(填“一阶微分算子”或“二阶微分算子”)5. 在图像的锐化处理中,通过一阶微分算子和二阶微分算子都可以进行细节的增强与检测。
Laplacian微分算子属于________________。
(填“一阶微分算子”或“二阶微分算子”)6. 在图像的锐化处理中,通过一阶微分算子和二阶微分算子都可以进行细节的增强与检测。
Wallis 微分算子属于________________。
(填“一阶微分算子”或“二阶微分算子”)7. 在图像的锐化处理中,通过一阶微分算子和二阶微分算子都可以进行细节的增强与检测。
水平方向的微分算子属于________________。
(填“一阶微分算子”或“二阶微分算子”)8. 图像微分______________了边缘和其他突变的信息。
(填“增强”或“削弱”)9. 图像微分______________了灰度变化缓慢的信息。
(填“增强”或“削弱”)10. 图像微分算子______________用在边缘检测中。
(填“能”或“不能”)四.简答题1. 图像中的细节特征大致有哪些?一般细节反映在图像中的什么地方?2. 一阶微分算子与二阶微分算子在提取图像的细节信息时,有什么异同?3. 简述水平方向的微分算子的作用模板和处理过程。
【转】七种常见阈值分割代码(Otsu、最⼤熵、迭代法、⾃适应阀值、⼿动、迭代法、基本全局阈值法)⼀、⼯具:VC+OpenCV⼆、语⾔:C++三、原理otsu法(最⼤类间⽅差法,有时也称之为⼤津算法)使⽤的是聚类的思想,把图像的灰度数按灰度级分成2个部分,使得两个部分之间的灰度值差异最⼤,每个部分之间的灰度差异最⼩,通过⽅差的计算来寻找⼀个合适的灰度级别来划分。
所以可以在⼆值化的时候采⽤otsu 算法来⾃动选取阈值进⾏⼆值化。
otsu算法被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对⽐度的影响。
因此,使类间⽅差最⼤的分割意味着错分概率最⼩。
设t为设定的阈值。
wo:分开后前景像素点数占图像的⽐例uo:分开后前景像素点的平均灰度w1:分开后被景像素点数占图像的⽐例u1:分开后被景像素点的平均灰度u=w0*u0 + w1*u1 :图像总平均灰度从L个灰度级遍历t,使得t为某个值的时候,前景和背景的⽅差最⼤,则这个 t 值便是我们要求得的阈值。
其中,⽅差的计算公式如下:g=wo * (uo - u) * (uo - u) + w1 * (u1 - u) * (u1 - u)[ 此公式计算量较⼤,可以采⽤: g = wo * w1 * (uo - u1) * (uo - u1) ]由于otsu算法是对图像的灰度级进⾏聚类,so 在执⾏otsu算法之前,需要计算该图像的灰度直⽅图。
迭代法原理:迭代选择法是⾸先猜测⼀个初始阈值,然后再通过对图像的多趟计算对阈值进⾏改进的过程。
重复地对图像进⾏阈值操作,将图像分割为对象类和背景类,然后来利⽤每⼀个类中的灰阶级别对阈值进⾏改进。
图像阈值分割---迭代算法1 .处理流程:1.为全局阈值选择⼀个初始估计值T(图像的平均灰度)。
2.⽤T分割图像。
产⽣两组像素:G1有灰度值⼤于T的像素组成,G2有⼩于等于T像素组成。
3.计算G1和G2像素的平均灰度值m1和m2;4.计算⼀个新的阈值:T = (m1 + m2) / 2;5.重复步骤2和4,直到连续迭代中的T值间的差⼩于⼀个预定义参数为⽌。
绪论单元测试1.以下哪些是遥感应用的例子()A:气象预报B:火灾提取C:土地利用与土地变化D:大气污染信息提取答案:ABCD2.蝙蝠捕食获取猎物信息,也属于遥感,不过算是广义意义上的遥感。
A:对B:错答案:A3.经过正射校正的图像产品一般是最高级。
A:对B:错答案:A4.数据产品级别越高,在商业公司的价格往往越高。
A:对B:错答案:A5.原始数据一般属于遥感数据的哪个级别?A:3级B:4级C:0或者1级D:2级答案:C第一章测试1.遥感图像的空间分辨率由哪些因素?A:搭载传感器的平台距离地面的高度B:焦距C:图像的放大倍数D:数字摄影设备的采样能力答案:ABD2.遥感数字图像的特征包括?A:空间分辨率B:辐射分辨率C:时间分辨率D:光谱分辨率答案:ABCD3.图像模数转换过程中的采样就是将电磁辐射能量离散化。
A:错B:对答案:A4.模拟图像与数字图像最大的区别在于:模拟图像中物理量的变化是连续的,而数字图像中物理量的变化是离散的。
A:错B:对答案:B5.图像的灰度直方图,其横坐标为像元的位置,纵坐标为像元的数量。
A:对B:错答案:B6.图像空间分辨率小于显示分辨率时,原图的显示质量得到了增强。
A:对B:错答案:B第二章测试1.数字图像在计算机上是以()方式存储的A:十六进制B:八进制C:二进制D:十进制答案:C2.比特序中的小端是指将高比特位(即逻辑上的高数据位)存储在低比特地址(即物理上的存储地址)。
A:对B:错答案:B3.ENVI软件标准格式的图像文件是_____存储格式A:封装式B:开放式答案:B4.假设有一幅2列、2行、3波段的遥感数字图像,各波段的数字值如下:25 1 2 4 34 3 3 4 2 1请选出该图像正确的BSQ存储方式:A:2,5,1,2,4,3,4,3,3,4,2,1B:2,5,4,3,1,2,3,4,4,3,2,1C:2,5,4,3,4,3,2,1,1,2,3,4D:2,1,4,5,2,3,4,3,2,3,4,1答案:B5.假设有一幅2列、2行、3波段的遥感数字图像,各波段的数字值如下:25 1 2 4 34 3 3 4 2 1请选出该图像正确的BIP存储方式:A:2,5,4,3,4,3,2,1,1,2,3,4B:2,5,1,2,4,3,4,3,3,4,2,1C:2,1,4,5,2,3,4,3,2,3,4,1D:2,5,4,3,1,2,3,4,4,3,2,1答案:C第三章测试1.数字图像处理的()过程中,输出图像每个像元的灰度值仅由对应的输入像元点的灰度值决定,它不会改变图像内像元之间的空间关系。
图像二值化阈值选取常用方法最近在公司搞车牌识别的项目,车牌定位后,发现对车牌区域二值化的好坏直接影响后面字符切分的过程,所以就想把常用阈值选取方法做一个总结。
图像二值化阈值选取常用方法:1.双峰法。
2.P 参数法。
3.最大类间方差法(Otsu 、大津法)。
4.最大熵阈值法。
5.迭代法(最佳阈值法)。
1.双峰法在一些简单的图像中,物体的灰度分布比较有规律,背景与目标在图像的直方图各自形成一个波峰,即区域与波峰一一对应,每两个波峰之间形成一个波谷。
那么,选择双峰之间的波谷所代表的灰度值T 作为阈值,即可实现两个区域的分割。
如图1所示。
2.P 参数法当目标与背景的直方图分布有一定重叠时,两个波峰之间的波谷很不明显。
若采用双峰法,效果很差。
如果预先知道目标占整个图像的比例P ,可以采用P 参数法。
P 参数法具体步骤如下:假设预先知道目标占整个图像的比例为P ,且目标偏暗,背景偏亮。
1)、计算图像的直方图分布P(t),t=0,1,.....255。
2)、计算阈值T ,使其满足0()*Tt p t Pm n =-∑最小。
P 参数法一般用于固定分辨率下,目标所占整个图像比例已知的情况。
3.最大类间方差法(Otsu)最大类间方差法是由Otsu 于1979年提出的,是基于整幅图像的统计特性实现阈值的自动选取的,是全局二值化最杰出的代表。
Otsu 算法的基本思想是用某一假定的灰度值t 将图像的灰度分成两组,当两组的类间方差最大时,此灰度值t 就是图像二值化的最佳阈值。
设图像有L 个灰度值,取值范围在0~L-1,在此范围内选取灰度值T ,将图像分成两组G0和G1,G0包含的像素的灰度值在0~T ,G1的灰度值在T+1~L-1,用N 表示图像像素总数,i n 表示灰度值为i 的像素的个数。
已知:每一个灰度值i 出现的概率为/i i p n N =;假设G0和G1两组像素的个数在整体图像中所占百分比为01ϖϖ、,两组平均灰度值为01μμ、,可得概率:00=T ii p ϖ=∑11011L i i T p ωω-=+==-∑平均灰度值:00T i i ipμ==∑111L ii T i p μ-=+=∑图像总的平均灰度值:0011μϖμϖμ=+类间方差:()()()22200110101()g t ωμμωμμωωμμ=-+-=-最佳阈值为:T=argmax(g(t))使得间类方差最大时所对应的t 值。