图像处理:迭代阈值分割算法实现(python)

2023-05-16

使用迭代的方法对图像全局的阈值进行估计,效果优于传统的双峰阈值分割。

算法流程:

  1. 给定初始值 T 0 T_0 T0,最好是全局灰度平均值
  2. 根据阈值 T 0 T_0 T0将图像分成两个部分,两个部分灰度均值分别为 T 1 T_1 T1 T 2 T_2 T2
  3. 计算出一个新的阈值 T = 1 2 ( T 1 + T 2 ) {T = \frac{1}{2}(T_1 + T_2)} T=21(T1+T2)
  4. T 0 = T T_0 = T T0=T,重复1、2、3,直到阈值变化小于一定值或者达到设定迭代次数

python实现,使用递归方法,终止条件是达到迭代次数或者阈值变化小于一临界值

def Iterate_Thresh(img, initval, MaxIterTimes=20, thre=1):
	""" 阈值迭代算法
	Args:
		img: 灰度图像
		initval: 初始阈值
		MaxIterTimes: 最大迭代次数,默认20
		thre:临界差值,默认为1
	Return:
		计算出的阈值
	"""
    mask1, mask2 = (img > initval), (img <= initval)
    T1 = np.sum(mask1 * img) / np.sum(mask1)
    T2 = np.sum(mask2 * img) / np.sum(mask2)
    T = (T1 + T2) / 2
    # 终止条件
    if abs(T - initval) < thre or MaxIterTimes == 0:
        return T
    return Iterate_Thresh(img, T, MaxIterTimes - 1)

示例:

import cv2 as cv
import numpy as np

img = cv.imread('test.jpg', 0)
# 计算灰度平均值
initthre = np.mean(img)
# 阈值迭代
thresh = Iterate_Thresh(img, initthre, 50)

dst = cv.threshold(img, thresh, 255, cv.THRESH_BINARY)[1]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图像处理:迭代阈值分割算法实现(python) 的相关文章

  • ffmpeg按桢截图

    ffmpeg ss 10 i input flv y f image2 vframes 1 s 352x240 b 03d jpg 参数解释 i 输入文件 y 覆盖 f 生成图片格式 ss 开始截图时间 seconds or in hh m
  • 如何检查Mac配备的显卡(GPU)?

    为了在屏幕上显示图形 xff0c Mac使用了图形卡 xff0c 通常称为图形处理单元 xff08 或GPU xff09 xff0c 该图形卡可以集成到Mac或离散卡上 GPU决定了Mac在游戏和其他应用程序中渲染图形的速度 那么该如何检查
  • Hive装载数据命令

    必须在表定义时创建partition a 单分区建表语句 xff1a create table day table id int content string partitioned by dt string 单分区表 xff0c 按天分区
  • OpenCore Gen-X :一键制作黑苹果OpenCore EFI文件

    OpenCore Gen X 是mac上一款黑苹果OC引导配置制作小工具 xff0c 可以一键制作黑苹果OpenCore EFI文件 xff0c 不过该 app 需要 macOS 环境才能运行 xff0c 没有的用户可以先使用虚拟机安装 m
  • 黑苹果OC配置工具OpenCore Configurator 2.42.0.0中文版

    OpenCore Configurator 一款黑苹果OC引导配置工具 xff0c 通过简化的图形界面帮助您为 OpenCore EFI 引导加载程序创建自定义配置文件 OC 是 OpenCore 的简称 xff0c 说起 OpenCore
  • 为什么无法在 Adobe XD 中导入或导出文件?

    Adobe Experience Design 是UI设计人员必备的图形化界面UX设计工具 xff01 在使用过程中用户会反馈无法导入或导出文件 xff1f 本文为 Adobe XD 中出现的文件导入和导出问题提供了解决方案 xff0c 并
  • 如何安装ArchLinux

    本文基于ArchLinux xff08 https www archlinux org xff09 Current Release 2013 08 01的ISO写的安装教程 xff01 ISO下载地址 xff1a http mirrors
  • 从源码分析HashMap集合之属性(一)

    注 xff1a 笔者所使用的jdk为1 8 xff0c 因本人水平有限 xff0c 难免会有错误 xff0c 请批评指正 xff0c 弥补不足 xff0c 多谢 xff0c 另转载请注明出处 我们首先来看下一下HashMap类 public
  • 审批流程设计方案-介绍(一)

    10年有幸接触了HP的一套PAAS平台 xff0c 里面有一套关于工作流 审批流的设置模块 公司现在做的这个项目也有用到审批流 这中间磕磕碰碰的遇到不少问题 xff0c 但最后也小有收获 xff0c 趁着周末闲暇时间 xff0c 把一些细节
  • 怎么解压system.img文件

    system img是官方的刷机包镜像 也就是安卓手机的系统 所有apk文件都在system img里面 包括系统app文件 有时候精简误删了app 那么如果不重新刷机就没有办法恢复了吗 xff1f 错 xff01 只有把系统文件重新放回去
  • 五、二叉搜索树的第k个结点

    一 题目描述 给定一棵二叉搜索树 xff0c 请找出其中的第k小的结点 例如 xff0c xff08 5 xff0c 3 xff0c 7 xff0c 2 xff0c 4 xff0c 6 xff0c 8 xff09 中 xff0c 按结点数值
  • Manjaro下安装和美化i3wm,以及相关软件配置

    Manjaro下安装及美化i3wm 由于本人是在vmware workstation pro15下安装的Manjaro Xfce桌面 xff0c 所以可能与部分用户配置步骤和配置软件并不完全相同 xff0c 具体情况大家可以去Arch Wi
  • ubantu中apt-get安装的依赖全部打包

    最近在适配国产化系统 xff0c 其中有arm和x86的 xff0c 虽然是国产化系统 xff0c 其实只是Ubuntu的包装罢了 xff1b 好不容易将海光型号的适配完毕 xff0c 就要进行测试 xff0c 但是这些海光环境并没有进行总
  • ubuntu linux 配置PATH JAVA PATH(解决双击不能启动eclipse的问题)

    我是下载了jdk 放在 opt下 于是我在 etc bash bashrc里添加 xff1a export JAVA HOME 61 opt jdk1 7 0 06 export PATH 61 PATH opt jdk1 7 0 06 b
  • Linux vi/vim命令大全

    参考资料 xff1a https www runoob com linux linux vim html 1 什么是vi vim 所有的 Unix Like 系统都会内建 vi 文书编辑器 xff0c 其他的文书编辑器则不一定会存在 但是目
  • Linux中动态库(共享库)的制作与使用

    0 库的基本概念 见博客 xff1a Linux中静态库的制作与使用 0 1 动态库的工作原理 首先回忆一下静态库 xff0c 使用静态库 xff0c 在GCC进行链接时 xff0c 会把静态库中代码打包到可执行程序中 但是使用动态库 xf
  • Linux中的source命令(.命令)的用法

    参考 xff1a https blog csdn net LEON1741 article details 81944879 1 使用格式 其使用格式如下 xff0c 其中filename必须是可执行的脚本文件 span class tok
  • 一个简单的游戏源代码

    一个简单的游戏源代码 作者 xff1a 陈跃峰 出自 xff1a http blog csdn net mailbomb 实现一个简单的翻牌游戏 xff0c 每次最多翻开两个数字 xff0c 如果数字相同则消失 xff0c 否则两个数字不显
  • 数据库事务图解

    一 基本概念 xff08 from baidu xff09 数据库事务 Database Transaction xff0c 是指作为单个逻辑工作单元执行的一系列操作 xff0c 要么完全地执行 xff0c 要么完全地不执行 事务处理可以确
  • Java新手必读

    Java 新手必读 1 学习 Java 学什么 xff1f a Java 语法基础 xff1a 如基本数据类型 流程控制 数组等等 b 面向对象的概念 xff1a 理解类和对象的概念等等 c 开发工具 xff1a Jbuilder Ecli

随机推荐