OTSU算法原理

article/2025/9/16 3:14:48

OTSU算法原理及实现:

最大类间方差是由日本学者大津(Nobuyuki Otsu)1979年提出,是一种自适应的阈值确定方法。算法假设图像像素能够根据阈值,被分成背景[background]和目标[objects]两部分。然后,计算该最佳阈值来区分这两类像素,使得两类像素区分度最大【用方差表达,具体公式见后】。OTSU的扩展算法,可进行多级阈值处理,称为“Multi Otsu method”【题外话】

设原始灰度级为M,灰度级为i的像素点个数为ni,对灰度直方图进行归一化:

 


opencv实现代码:

int CLxrImage::Otsu(IplImage* src)  
{  int height=src->height;  int width=src->width;      //统计直方图  int   nHistogram[256] = {0};float fHistogram[256] = {0};  for(int i=0; i < height; i++){  for(int j = 0; j < width; j++) {  nHistogram[(unsigned char)src->imageData[i*src->widthStep+j]]++;  }  }//归一化直方图 int size = height * width;  for(int i = 0; i < 256; i++){  fHistogram[i] = nHistogram[i] / (float)size;  }  //average pixel value  float avgValue=0;  for(int i=0; i < 256; i++){  avgValue += i * fHistogram[i];  //整幅图像的平均灰度}   int threshold;    float maxVariance=0;  float w = 0, u = 0;  for(int i = 0; i < 256; i++) {  w += fHistogram[i];			//假设当前灰度i为阈值, 0~i 灰度的像素(假设像素值在此范围的像素叫做前景像素) 所占整幅图像的比例u += i * fHistogram[i];     // 灰度i 之前的像素(0~i)的平均灰度值: 前景像素的平均灰度值float t = avgValue * w - u;  float variance = t * t / (w * (1 - w) );  if(variance > maxVariance) {  maxVariance = variance;  threshold = i;  }  }  return threshold;  
}
int CLxrImage::Otsu2(IplImage* src)
{int i,j,nThresh;int nHistogram[256] = {0};double fStdHistogram[256] = {0.0};double fGrayAccu[256] = {0.0};double fGrayAve[256] = {0.0};double fAverage = 0;double fTemp = 0;double fMax = 0;//统计直方图for(i = 0; i <src->height; i++){for(j = 0; j <src->width; j++){nHistogram[(unsigned char)src->imageData[i*src->width+j]] ++;}}//归一化直方图for(i = 0; i <= 255;i++){fStdHistogram[i] = nHistogram[i]/(double)(src->width * src->height);}for(i=0;i<=255;i++){for(j=0;j<=i;j++){fGrayAccu[i] += fStdHistogram[j];//所有灰度级,关于w0的数组						fGrayAve[i] += j*fStdHistogram[j];//所有灰度级,关于u(t)的数组}fAverage += i*fStdHistogram[i];	}//计算OSTUfor(i=0;i<=255;i++){fTemp=(fAverage*fGrayAccu[i]-fGrayAve[i])*(fAverage*fGrayAccu[i]-fGrayAve[i])/(fGrayAccu[i]*(1-fGrayAccu[i]));if(fTemp>fMax){fMax=fTemp;nThresh=i;}}return nThresh;
}



http://chatgpt.dhexx.cn/article/44OhrWku.shtml

相关文章

大津阈值分割算法(OTSU处理图像)

1.算法原理简述 对于图像I(x,y)&#xff0c;前景(即目标)和背景的分割阈值记作T&#xff0c;属于前景的像素点数占整幅图像的比例记为ω0&#xff0c;其平均灰度μ0&#xff1b;背景像素点数占整幅图像的比例为ω1&#xff0c;其平均灰度为μ1。图像的总平均灰度记为μ&#xf…

[图像处理]14.分割算法比较 OTSU算法+自适应阈值算法+分水岭

参考文献&#xff1a; OTSU阈值分割孔洞填充海陆分离_SwordKii的博客-CSDN博客 drawContours函数_普通网友的博客-CSDN博客_drawcontours R329-opencv阈值分割算法——自适应阈值_Third Impact的博客-CSDN博客_opencv自适应阈值分割 分水岭算法的python实现及解析_进不去的…

OTSU算法 (大津算法)理解代码

OTSU算法&#xff1a;对图像进行二值化的算法 介绍 OTSU算法是一种自适应的阈值确定的方法&#xff0c;又称大津阈值分割法&#xff0c;是最小二乘法意义下的最优分割。 它是按图像的灰度特性&#xff0c;将图像分成背景和前景两部分。因方差是灰度分布均匀性的一种度量,背景…

Pr-快速上手-基本操作-教程

视频链接: Pr教程 视频设计到的知识点: 视频的剪辑bgm的管理添加字幕及弹幕的添加鬼畜视频的制作发布教程

Pr常用操作技巧

操作技巧持续更新中 1.premiere如何裁剪视频尺寸 视频尺寸怎么修改 1.将premiere左下角的视频素材直接向右拖动到编辑区中 2.鼠标左键单击视频,然后选择上方的【效果】 3.这时,页面左侧将弹出效果的菜单栏,依次选择效果→视频效果→变换→裁剪 4.鼠标左键按住【裁剪】不放,直接…

Premiere: 基本操作

1、首先进入编辑模式&#xff0c;使得视频能加效果 2、这时候能找到视频的效果添加&#xff0c;这里有视频的水平翻转&#xff0c;高斯模糊等&#xff0c;需要什么效果直接&#xff0c;把该效果抓到视频上就可以。

PR的入门基础教程

提示&#xff1a;这里只记述作者学习PR入门基础教程视频后的总结 文章目录 常用视频概念第1天学习总结第2天学习总结第3天学习总结 常用视频概念 第1天学习总结 第2天学习总结 第3天学习总结

Adobe Premiere Pro快速入门教程

简介&#xff1a; 适用于纯新手零基础&#xff0c;看完本教程即可完成常用视频编辑技巧。 采用Adobe Premiere Pro 2020版本 windows10操作系统 一、制作 照片音频字幕的视频 目标&#xff1a;把三张图片和一个音乐做成带字幕的视频。&#xff08;素材请自行准备&#xff0…

使用pr的8大技巧

许多小伙伴是通过pr这个软件进行素材剪辑的&#xff0c;当我们面对许多素材需要剪辑的时候&#xff0c;往往被这些素材弄得头昏脑涨&#xff0c;剪辑拼接的费时费力&#xff0c;最后出来的成品效果也不太好&#xff0c;下面就告诉大家一些pr使用的技巧&#xff0c;来提升我们的…

Premiere 零基础快速上手教程

关注并星标“高级农民工” 回复“视频”可获取视频剪辑软件和教程 在前几天的文章中&#xff0c;我分享了几款主流视频剪辑软件&#xff1a; 最主流的视频剪辑软件 简单来说就是&#xff0c;手机端用「剪映」这一款 app 就够&#xff0c;当你熟练到发现手机剪视频不方便&#x…

pr基础学习笔记

pr基础学习笔记&#xff08;正题&#xff09; 推荐几个小技巧 1.快速插入 2.快速移动小片段 2. 另&#xff1a;移动Ctrl是多轨移动移动CtrlAlt是单轨移动3.如何去除两个片段之间的空档&#xff1f; 4.两种选择工具的比较 附&#xff1a; pr快捷键 应用程序 选择工具…

pr基础入门

一、快速认识 PR 主界面并导入素材 修改 名称、位置&#xff0c;其他不用变&#xff0c;点击确定 进入界面如下&#xff1a; 认识、添加必要 窗口 导入素材方法 1.直接将文件拖入pr中 2.导入媒体以开始&#xff0c;部分右键创建 素材箱 进入素材箱&#xff0c;右键选择导入&a…

PR(基础剪辑)

一.剪辑步骤&#xff1a; 1.先粗剪后精剪&#xff1a; 粗剪&#xff1a; 精剪&#xff1a; 二. 常用键&#xff1a; 1. i&#xff1a;设置素材的起点 o&#xff1a;设置素材的终点 &#xff08;在预览素材时&#xff09; 2.快速浏览素材&#xff1a; l&#xff1a;按一次常速…

Pr 入门系列之十:基本图形

在 Pr 中&#xff0c;文字&#xff08;包括字幕&#xff09;以及形状等被归类为图形 Graphics。 一个图形剪辑里可包含多个文本图层、形状图层以及其它媒体文件等图形元素。 提示&#xff1a; 1、图形剪辑不会出现在项目面板中&#xff0c;除非升级为源图。 2、与 Ps 一样&…

PR(Adobe Premiere Pro)软件基础知识

一、基础参数设置 时长 时长为视频时间的长度。基本单位为秒。但是在PR软件中&#xff0c;有更为精准的时间单位计算为帧&#xff0c;也就是把1秒分为若干份&#xff0c;一份就是一帧&#xff0c;一帧也就可以理解为一张图片。所以在PR软件中视频显示的时间长度表述为 时&…

Premiere基础操作

一&#xff1a;设置缓存 二&#xff1a;ctrI导入素材 三&#xff1a;导入图像序列 四&#xff1a;打开吸附。 打开吸附后素材会对齐。 五&#xff1a;按~键可以全屏窗口。 六&#xff1a;向前选择轨道工具。 在时间线上点击&#xff0c;向前选中时间线上素材。向后选择轨道工具…

pr剪视频基本操作

1 打开pr 2 导入设置 1&#xff09;双击左下角“项目”窗口&#xff0c;导入准备好的视频 2&#xff09;建立一个序列 点击文件 -> 新建 -> 序列 设置自定义序列 3 修建编辑 1&#xff09;双击视频素材&#xff0c;在预览框&#xff08;源&#xff09;中可以点击播放或…

【PR】零基础快速入门教程

【PR】零基础快速入门教程 PR&#xff08;Premiere&#xff09;能做什么&#xff1f;PR欢迎界面及新建项目工作区及窗口说明导入文件建立序列视频剪辑添加字幕导出视频 使用软件&#xff1a;Premiere2020 新年卷起来&#xff0c;写文章已近不能满足与我了&#xff0c;我要向着更…

PR基础知识

什么是帧&#xff0c;什么叫帧速率&#xff0c;什么叫方形像素&#xff0c;什么叫场序…… 1、时长 时长为视频时间的长度&#xff0c;基本单位为秒。但是在PR软件中&#xff0c;有更为精准的时间单位计算为帧&#xff0c;也就是把1秒分为若干份&#xff0c;一份就是一帧&…

Pr的5种基本操作

说明&#xff1a;本文基于软件Adobe Premiere Pro cc 2018&#xff0c;请自行到网上下载 首先&#xff0c;基本界面如下图所示&#xff1a; 以下解决几个问题&#xff1a;如何简单的载入舞台、创建序列、添加标题、调整音频层级以及导出视频&#xff1f; 1. 载入舞台 如何…