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

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

OTSU算法:对图像进行二值化的算法

介绍

OTSU算法是一种自适应的阈值确定的方法,又称大津阈值分割法,是最小二乘法意义下的最优分割。

它是按图像的灰度特性,将图像分成背景和前景两部分。因方差是灰度分布均匀性的一种度量,背景和前景之间的类间方差越大,说明构成图像的两部分的差别越大,当部分前景错分为背景或部分背景错分为前景都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。

从大津法的原理上来讲,该方法又称作最大类间方差法,因为按照大津法求得的阈值进行图像二值化分割后,前景与背景图像的类间方差最大。

应用:是求图像全局阈值的最佳方法,适用于大部分需要求图像全局阈值的场合。

优点:计算简单快速,不受图像亮度和对比度的影响。

缺点:对图像噪声敏感;只能针对单一目标分割;当目标和背景大小比例悬殊、类间方差函数可能呈现双峰或者多峰,这个时候效果不好。

 

原理

求类间方差:

OTSU算法的假设是存在阈值TH将图像所有像素分为两类C1(小于TH)和C2(大于TH),则这两类像素各自的均值就为m1、m2,图像全局均值为mG。同时像素被分为C1和C2类的概率分别为p1、p2。因此就有:

                                                             p1*m1+p2*m2=mG                                           (1)

                                                                   p1+p2=1                                                      (2)

根据方差的概念,类间方差表达式为:

                                                        \sigma ^{2}=p1(m1-mG)^{2}+p2(m2-mG)^{2}             (3)

我们把上式化简,将式(1)代入式(3),可得:

                                                          \sigma ^{2}=p1p2(m1-m2)^{2}                                       (4)

其实求能使得上式最大化的灰度级 k 就是OTSU阈值了,很多博客也是这样做的。

其中:

                                                            p1=\sum_{i=0}^{k}p_{i}                                                       (5)     

                                                             m1=1/p1 *\sum_{i=0}^{k}ip_{i}                                        (6)

                                                             m2=1/p2 *\sum_{i=k+1}^{L-1}ip_{i}                                      (7)

照着公式,遍历0~255个灰度级,求出使式(4)最大的 k 就ok了。

(原文方法见博客:https://blog.csdn.net/weixin_40647819/article/details/90179953)

 

分割:

这个分割就是二值化,OpenCV给了以下几种方式,很简单,可以参考:

 

实现

# coding:utf-8
import cv2
from matplotlib import pyplot as pltimage = cv2.imread(r"C:\Users\Administrator\Desktop\picture.png")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)plt.subplot(131), plt.imshow(image, "gray")
plt.title("source image"), plt.xticks([]), plt.yticks([])
plt.subplot(132), plt.hist(image.ravel(), 256)
plt.title("Histogram"), plt.xticks([]), plt.yticks([])
ret1, th1 = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)  # 方法选择为THRESH_OTSU
plt.subplot(133), plt.imshow(th1, "gray")
plt.title("OTSU,threshold is " + str(ret1)), plt.xticks([]), plt.yticks([])
plt.show()

 

 

参考博客:https://blog.csdn.net/weixin_40647819/article/details/90179953


http://chatgpt.dhexx.cn/article/xnLV1bZY.shtml

相关文章

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

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

Pr常用操作技巧

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

Premiere: 基本操作

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

PR的入门基础教程

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

Adobe Premiere Pro快速入门教程

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

使用pr的8大技巧

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

Premiere 零基础快速上手教程

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

pr基础学习笔记

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

pr基础入门

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

PR(基础剪辑)

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

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

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

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

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

Premiere基础操作

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

pr剪视频基本操作

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

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

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

PR基础知识

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

Pr的5种基本操作

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

pr 基本操作

视频效果: 高斯模糊:镜头扭曲:色调:亮度对比度: 视频过度: 溶解: 1、文件夹直接拖、 项目面板双击,导入单个或者多个,或者文件夹;项目左下角,…

绘制流程图的基本规则

流程图可以简单地描述一个过程,是对过程、算法、流程的一种图像表示,在技术设计、交流及商业简报等领域有广泛的应用。流程图可分为:数据流程图和作业流程图。 1、程序流程图的作用 程序流程图的作用程序流程图的作用程序流程图的作用 程序流…

7款流程图制作软件大盘点!轻松绘制流程图

流程图可能是我们使用最广泛的一种图形图表,几乎在各个领域都会用到,诸如系统流程图、产品流程图、数据流程图……借助流程图,我们可以将事物的结构、任务的进程、甚至是算法的思路都有效视觉化。 流程图的广泛应用,也直接催生出…