C#,图像二值化(01)——二值化算法综述与二十三种算法目录

news2024/12/23 3:05:23

图像二值化,就是把彩色(先转为灰色图)最终转为黑白两色图片的计算过程。

看似极其简单,但人们研究了几十年,却始终未达到至臻境界的问题。

本文简要介绍了 图像二值化的算法原理、分类及二十三种算法的目录,后续逐个发布源代码与使用效果的图片。

一、图像二值化 和 彩色图转灰度图是图像类AI的基石

图像处理的两个基础功能:图像二值化 和 彩色图转灰度图,是一切图像(视频)为核心的AI的基础。很多AI系统,未能取得良好的预期效果,其中的原因不是AI算法问题,也不是训练集的问题,而是图像二值化 和 彩色图转灰度图 造成的基础数据的问题。当然,更大的问题是,很多AI研究者却未能意识到这个问题,始终在 AI 算法或训练集中打转。

北京联高软件开发有限公司拥有最好的图像二值化 和 彩色图转灰度图算法,其效果是远超 OpenCV ,Matlab 这些学院派产品的。联高算法在 《原本专业级图片漂白软件》 软件中得以实现与应用。

 

二、图像二值化算法概要

2.1 基本概念

2.1.1 灰度图 Gray Scale Image

彩色图一般以3或4个8位byte保存图像数据。灰度图以3个相同的byte值保存图像(很浪费!)。

每个byte,从0---255,因而灰度级别也就是256个级别。0--为黑色;255为白色。

 

2.1.2 二值图(黑白图)Binary Image

二值图,理论上是0/1数据图。为了能够支持各种使用环境,一般以灰度图替代,就是0和255。

2.1.3 直方图 Histogram

灰度直方图是关于灰度级分布的函数,是对图像中灰度级分布的统计。灰度直方图是将数字图像中的所有像素,按照灰度值的大小,统计其出现的频率。灰度直方图是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图像中某种灰度出现的频率。 

直方图均衡化可以使得图片看起来更清晰。 

很多二值化算法是基于灰度直方图进行的。人们一直在想尽办法从直方图中寻找最好的阈值。 

2.1.4 阈值 Threshold

阈的意思是界限,故阈值又叫临界值,是指一个数据的分界值。

按图像某一行的灰度值划分的阈值:

 

按灰度直方图的划分:

 

2.2 图像二值化算法的分类

二值化的核心是寻找最佳的阈值,使得二值化之后出现期望的结果。

按阈值的使用范围,二值化算法分为全局阈值算法 和 局部阈值算法两种。

全局阈值算法 计算简单,速度快,但无法处理很多特殊的图片。

局部阈值算法 计算复杂,速度慢很多,但可以处理这些特殊的图片。

2.2.1 全局阈值 Global Threshold

一般的图片,选择一个合适的阈值,并以该唯一的阈值进行计算,就可以达到效果。

 

2.2.2 局部阈值 Local Threshold

局部阈值是指在一个窗口区内寻找合适的阈值,并对该区域进行计算。

局部阈值的计算往往设计均值平滑、高斯平滑等等更多的、速度比较慢的算法。

三、二十三种二值化算法的目录

3.1 支持函数

3.2 全局阈值算法目录

3.1.1 基本阈值算法 Threshold_Algorithm
3.1.2 Kittler 算法 Kittler_Algorithm
3.1.3 联高基础自适应算法 Automatic_Adaptive_Algorithm
3.1.4 大津算法 Otsu_Algorithm
3.1.5 迭代算法 Iteration_Algorithm
3.1.6 全局加权阈值算法 Global_Threshold_Algorithm
3.1.7 最大熵算法 Maxium_Entropy_Algorithm
3.1.8 均值算法 Mean_Algorithm
3.1.9 百分比算法 Percentage_Algorithm
3.1.10 谷底算法 Valley_Bottom_Algorithm
3.1.11 双峰算法 Intermodes_Algorithm
3.1.12 最佳迭代算法 Best_Iteratived_Algorithm
3.1.13 一维最大熵 Maxium_Entropy_1D_Algorithm
3.1.14 力矩保持法 Moment_Preserving_Algorithm
3.1.15 IsoData算法 IsoData_Algorithm
3.1.16 模糊集理论算法 Huang_Fuzzy_Algorithm
3.1.17 Shanbhag算法 Shanbhag_Algorithm
3.1.18 Yen算法 Yen_Algorithm

3.3 局部阈值算法目录

3.2.1 Wellner自适应算法 Wellner_Adaptive_Algorithm
3.2.2 Bernsen自适应算法 Bernsen_Algorithm
3.2.3 Sauvola自适应算法 Sauvola_Algorithm
3.2.4 Niblack自适应算法 Niblack_Algorithm
3.2.5 Yanowitz Bruckstein自适应算法 Yanowitz_Bruckstein_Algorithm
 

作者将逐步发布以上算法的C#源代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111807.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

freeswitch的gateway配置方案

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 在voip的网络模型中,网关是我们经常会遇到的概念。 在freeswitch中,如何配置gateway,如何使用好gateway的模型和功能。 本节简单介绍fs中gateway相关的配置方案。 环境 centos&am…

csp-202209

202209题目一:如此编码【100分】题目二:何以包邮?【100分】题目三:防疫大数据【100分】题目一:如此编码【100分】 比较简单的题,根据题意计算一遍就行 一定要关注csp题目中的提示,这个是很有用…

达梦数据IPO过会:拟募资24亿 光谷“扫地僧”冯裕才将敲钟

雷递网 雷建平 12月23日武汉达梦数据库股份有限公司(简称:“达梦数据”)日前IPO过会,准备在科创板上市。达梦数据计划募资23.51亿元。其中,3.52亿元用于集群数据库管理系统升级项目,3.43亿元用于高性能分布…

[翻译+笔记]变分自编码器:从AutoEncoder到Beta-VAE

与GAN的那篇笔记相同, 做一下笔记. 并不是全文翻译, 只翻译一部分. 原文地址: from AutoEncoder to Beta-VAE 0. 前言 自编码器是用来重构高维数据的,它利用一个有bottleneck层的神经网络。bottleneck层获取压缩的潜在编码,这样将嵌入向量以低维表示可…

Activity生命周期

Activity生命周期 1.Activity状态 1.基本状态 运行,active。位于最前台,可以和用户交互的激活状态。暂停,pause,被透明或者Dialog覆盖,此时可见失去焦点但是不允许交互。停止,stop,被Active覆盖…

spring提前加载,懒加载,bean的作用域和注入注解讲解

前言 sping知识随笔笔记;spring提前加载,懒加载,bean的作用域和注入注解讲解 这里写目录标题前言1 depends-on2 bean的作用域3 lazy-init 懒加载4 Autowrite和Resource的区别和使用1 depends-on depends-on 是提前加载,比如在实…

关于node.js版本切换nvm的命令和安装

首先是安装,第一步,搜索下方链接地址下载Releases coreybutler/nvm-windows GitHub 安装应用下载好后直接安装就可以了,或者下载一个压缩包,在下载安装之前建议先将之前下载的node版本给删除,否则会报错。 上面的操作都结束后,那么,下面就需要通过管理员的权限去查…

外汇天眼:利空美元!2023年美国经济将如履薄冰?各大银行预测整体不乐观!

高盛表示,美国经济可能避免衰退。摩根士丹利预计,美国经济在2023年只是避开了衰退,但着陆并不那么软。瑞士信贷认为,美国明年可以避免经济下滑。摩根大通警告称,明年很有可能出现经济衰退。美国银行预测2023年第一季度…

大学宿舍四位舍友皆为软测,3年后的现状~

笔者最近收到测试员好友小H的分享,临年关,他参加了一场大学舍友毕业3年后的聚会,感慨良多。 从2019年至今,这已经是毕业的第3个年头了。小H的寝室大多来自五湖四海,毕业后,能够相聚的时间也少之又少&#…

Android -- 每日一问:如何设计一个照片上传 app ?

经典回答 把自己放在一个面试官的角度,自己先实现一次这个 App ,然后自己总结一下你在这次实现中需要哪些能力、需要注意哪些事项。最后,再回过头来看,如果你是面试官,你希望面试者怎么回答才算是符合你的标准的&…

el-table 列的动态显示与隐藏

目录 业务场景 官方链接 实现效果图 使用框架 代码展示 template代码 ①、为什么要给el-table绑定【:key"reload"】? ②、为什么给每个绑定【key"Math.random()"】呢? ③、为什么列改变之后要添加【reload Math.random();…

【HarmonyOS】调测助手安装失败10内部错误

关于鸿蒙开发通过应用调测助手向watch gt 3 手表安装hap时报错。 问题背景: 鸿蒙开发,使用新建工程的helloworld 没有其他修改,生成hap包。然后通过应用调测助手向watch gt 3 手表安装hap时提示 安装失败:10.内部错误。 Sdk: a…

Shiro之授权

授权 1、角色认证 在controller层创建接口 使用shiro中的注解RequiresRoles指定能访问的角色名称 /*** 登录认证角色*/ RequiresRoles("admin") GetMapping("/userLoginRoles") ResponseBody public String userLoginRoles(){System.out.println("…

54 线程最外层异常的处理

前言 之前在 kafka 消费者客户端的一个 case 中曾经看到了这样的了一个情况 我没有配置 "group.id", 然后 kafka 客户端抛出了 InvalidGroupIdException 然后 输出的日志信息 除了类型, 其他 什么都没有, 主要是 么有堆栈信息 这里 来大致看一下 这个问题, 以及…

WooCommerce Product Feed指南 – Google Shopping和Facebook[2022]

在过去十年中,在线购物一直在增加。全球超过 85% 的人更喜欢网上购物而不是光顾实体店。 许多 WooCommerce 商店都做得非常好,销售额是大约几年前的三倍。 您是否知道您也可以立即轻松地将商店销售额翻三倍? 秘诀是什么? 好吧&…

【网络安全】浅识 SQL 注入

前言 SQL 注入(SQL Injection)是发生在 Web 程序中数据库层的安全漏洞,是网站存在最多也是最简单的漏洞。主要原因是程序对用户输入数据的合法性没有判断和处理,导致攻击者可以在 Web 应用程序中事先定义好的 SQL 语句中添加额外…

AcrGIS Pro一键出图

简介 日常工作中我们经常遇到批量出图的场景,比如对某个县下的各个乡镇分别按照其行政区范围出图、对某个流域/河流按照一定方向纵横的网格排布顺序出图等等要求,ArcGIS Pro对于上述需求提供了一个良好的解决方案——地图系列! 那么应该如何创建一个地图系列呢?ArcGIS Pro…

我不是浮躁,只是迷茫,北大毕业转行学编程

北大毕业的我选择去学习编程了!!! 没有希望的地方,就没有奋斗。于千万人之中遇见它,于千万年之中,时间的无涯的荒野里,没有早一步,也没有晚一步,刚巧赶上了,那…

9_SpringMVC_作用域传参

PageContext对象 作用域范围:当前jsp页面内有效 request对象 作用域范围:一次请求内。 作用: 解决了一次请求内的资源的数据共享问题 session对象 作用域范围:一次会话内有效。 说明:浏览器不关闭,并且后台的session不失效,在任意请求中都可以获取到同一个se…