C#,图像二值化(04)——全局阈值 Kittler 算法及其源程序

news2025/1/13 17:39:48

1、Kittler算法(最小误差法)概述

最小误差法是 J. Kittler & J. Illingworth 1986年在《MINIMUM ERROR THRESHOLDING》文章中提出的一种基于直方图的阈值分割方法,简称 Kittler 算法。其思想:假设灰度图像由目标和背景组成,且目标和背景满足一混合高斯分布,计算目标和背景的均值、方差,根据最小分类误差思想得到的最小误差目标函数,取目标函数最小时的阈值即为最佳阈值。按此阈值将图像分割为二值图像。

Kittler算法与Otsu方法效果接近,但速度更快,更适宜应用于像素质量较高的图像中。
Kittler算法的中心思想是,计算整幅图像的梯度灰度的平均值,以此平均值做为阈值。
 

2、Kittler算法源代码

using System;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Drawing.Imaging;

namespace Legalsoft.Truffer.ImageTools
{
    public static partial class BinarizationHelper
    {
        #region 灰度图像二值化 全局算法 Kittler 算法

        /// <summary>
        /// Kittler算法
        /// </summary>
        /// <param name="data"></param>
        public static void Kittler_Algorithm(byte[,] data)
        {
            int height = data.GetLength(0);
            int width = data.GetLength(1);
            double sumGrads = 0.0;
            double sumGrayGrads = 0.0;
            for (int y = 1; y < height - 1; y++)
            {
                for (int x = 1; x < width - 1; x++)
                {
                    double Grads = Math.Max(Math.Abs(data[y - 1, x] - data[y + 1, x]), Math.Abs(data[y, x - 1] - data[y, x + 1]));
                    sumGrads += Grads;
                    sumGrayGrads += Grads * (data[y, x]);
                }
            }
            int threshold = (int)(sumGrayGrads / sumGrads);
            Threshold_Algorithm(data, threshold);
        }

        #endregion
    }
}

The Kittler binarization method is a classic binarization method based on histogram. ... The idea isfirst cut the image into small patches of the same sizeand then use the method mentioned in the paper to calculate a local (relative to the entire imagethreshold for each small patchand then use bilateral interpolation 

3、Kittler算法的二值化效果以及与基本阈值算法的对比

 The Kittler binarization method is a classic binarization method based on histogramProposed by JKittler in the paper " Minimum Error Thresholdingpublished in 1986 .

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

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

相关文章

11个技巧让你成为更好的 Typescript 程序员

学习 Typescript 通常是一次重新发现之旅。您的最初印象可能非常具有欺骗性&#xff1a;这不就是一种注释 Javascript 的方式&#xff0c;所以编译器可以帮助我找到潜在的错误吗&#xff1f; 通过 r/mevlixreddit 虽然这句话通常是正确的&#xff0c;但随着您继续前进&#xff…

【聆思CSK6 视觉AI开发套件试用】AI识别试用以及闭坑方案

本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;X Y Z 非常感谢能有这次机会体验聆思CSK6 视觉AI开发套件。上班的一大早收到了快递&#xff0c;迫不及待的打开快递。必须先来个图&#xff0…

4个技巧,节约网络工程师一半的时间

01 批量ping网段 对于一个网段ip地址众多&#xff0c;如果单个检测实在麻烦&#xff0c;那么你就可以直接批量ping网段检测&#xff0c;那个ip地址出了问题&#xff0c;一目了然。 先看代码&#xff0c;直接在命令行窗口输入&#xff1a; for /L %D in (1,1,255) do ping 10…

渗透测试神器--Burp Suite

一、介绍 Burp Suite 是用于攻击web 应用程序的集成平台。Burp Suite是一款信息安全从业人员必备的集成型的渗透测试工具&#xff0c;它采用自动测试和半自动测试的方式&#xff0c;包含了Proxy、Spider、Scanner、Intruder、Repeater、Sequencer、Decoder、Comparer等工具模块…

uniapp 窗口小工具、桌面小部件、微件 Ba-AppWidget

简介&#xff08;下载地址&#xff09; Ba-AppWidget 是一款窗口小工具&#xff08;桌面小部件、微件&#xff09;插件&#xff0c;默认为音乐播放器的样式&#xff0c;有其他界面需要&#xff0c;可联系作者定制。 支持点击事件监听支持动态更改页面内容支持设置小工具的预览…

区块链(一): 以太坊基础知识

目录什么是区块链&#xff1f;什么是以太坊&#xff1f;什么是加密货币&#xff1f;以太坊与比特币有什么不同&#xff1f;以太坊能做什么&#xff1f;什么是智能合约&#xff1f;以太坊社区以太坊白皮书什么是区块链&#xff1f; 区块链是一个交易数据库&#xff0c;在网络中…

容器,容器技术,云容器相关入门知识

前言 最近面试了一家国企&#xff0c;交谈愉快&#xff0c;对方的工程师问到容器时&#xff0c;突然愣了一下。脑子里有学习前端时候学习的docker&#xff0c;但印象里docker可不能代表容器技术&#xff0c;于是学习容器相关知识后整理相关知识以作巩固。 什么是容器 有点开…

SuperMap iDesktop/iDesktopX 端性能优化

作者&#xff1a;yd&hyy 一、背景 在使用iDesktop/iDesktopX的三维场景加载GIS数据的过程中&#xff0c;随着数据的种类、大小、数量的增多&#xff0c;往往会有很多的性能问题&#xff0c;加载速率缓慢&#xff0c;数据显示清晰度不足&#xff0c;多数据交叠显示错误&am…

『分分钟玩转VueRouter●上』VueRouter的一些基础配置

文章目录前言一、vue中如何使用VueRouter?二、路由使用的基本配置1.多级路由配置2.路由中的query参数3.命名路由4.路由的params参数5.路由的props配置6.router-link的replace属性7.通配符路由前言 计算机网络中有一个路由的概念&#xff1a;路由是指网络数据包发送到目的地址的…

php宝塔搭建部署实战SDCMS蓝色通用宽屏企业网站源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套php开发的SDCMS蓝色通用宽屏企业网站源码&#xff0c;感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&…

maven 继承和聚合的区别

maven 继承和聚合的区别 参考 https://cloud.tencent.com/developer/article/1397748 继承 目的&#xff1a;统一管理version版本&#xff0c;少写冗余代码。使用&#xff1a; 父类pom不写业务&#xff0c;只写 pom的jar包版本等信息&#xff0c;子类中使用 parent 标签&…

STM32G473CBT6关于ADC采集的总结

STM32G473CBT6单片机在浮点运算&#xff0c;信号采集、数据处理方面有很大的用途。因相关的资料较少&#xff0c;特此做一下笔记&#xff0c;方便后期使用。STM32CubeMX软件比较强大&#xff0c;兼容IAR和keil方便直接生成代码文件&#xff0c;但相关的库不熟悉&#xff0c;好东…

【Web安全】应用层拒绝服务攻击

目录 1、DDOS简介 &#xff12;、应用层DDOS 2.1 &#xff23;&#xff23;攻击 2.2 限制请求频率 2.3 道高一尺&#xff0c;魔高一丈 3、验证码 &#xff23;&#xff21;&#xff30;&#xff34;&#xff23;&#xff28;&#xff21; 4、防御应用层DDOS 5、资源…

章节五:RASA NLU组件介绍--语言模型和分词器

​ 这里写目录标题一、前言二、语言模型组件1、MitieNLP2、SpacyNLP三、分词器1、WhitespaceTokenizer2、JiebaTokenizer3、MitieTokenizer4、SpacyTokenizer5、自定义分词器一、前言 RASA在处理对话时&#xff0c;整体流程是pipeline结构&#xff0c;自然语言理解&#xff08…

【漏洞分析】Apache ShardingSphere-Proxy <5.3.0 身份认证绕过

漏洞简介 2022年12月22日&#xff0c;Apache 官方公告发布 ShardingSphere-Proxy 5.3.0 之前版本存在身份绕过漏洞&#xff08;CVE-2022-45347&#xff09;。当 ShardingSphere-Proxy 使用 MySQL 作为后端数据库时&#xff0c;由于 ShardingSphere-Proxy 在客户端认证失败后没…

Linux-脚本安装jdk(使用jdk压缩包方式)

1、下载Linux版jdk oracle官网:Java Downloads | Oracle 2、上传jdk到linux 在linux中软件一般安装到/usr/local目录中 3、将jdk解压 解压命令: tar -zxvf jdk-8u301-linux-x64.tar.gz 将解压后的jdk改名为jdk8 mv jdk1.8.0_301 jdk8 4、配置jdk环境变量 使用vi打开/etc/p…

Java 面试题 (六) --------- 框架相关

1、什么是 Spring 框架&#xff1f;Spring 框架有哪些主要模块&#xff1f; Spring是一个控制反转和面向切面的容器框架。 Spring有七大功能模块&#xff1a; 1、Core Core模块是Spring的核心类库&#xff0c;Core实现了IOC功能。 2、AOP Apring AOP模块是Spring的AOP库&…

FLTK的UI设计工具FLUID使用方法总结

tags: FLTK C GUI 写在前面 终于又捡起来FLTK了, 先来看看怎么通过FLUID创建一个图形界面并完成回调函数的创建, 参考的是官方教程中关于创建一个CubeView程序的例子, 教程里面很多都与最新版本的FLTK界面不太一致, 但是通过我的摸索还是找出了方法. 下面来分享一下. 创建类…

centos7搭建mysql5.6

检查是否安装mysql rpm -qa | grep mysql 检查已安装的Mariadb rpm -qa | grep -i mariadb 卸载已安装的Mariadb数据库 rpm -qa | grep mariadb | xargs rpm -e --nodeps 下载mysql5.6安装包文件 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm安…

详解什么是Polygon跨链桥| Tokenview

Polygon是一个Layer2网络&#xff0c;用于解决以太坊的吞吐量和主权挑战。尽管以太坊是最受欢迎的区块链开发平台&#xff0c;但它的吞吐量很低&#xff0c;不适合某些应用程序。Polygon提供特定于应用程序的、与以太坊兼容的侧链&#xff0c;将独立链的可扩展性和独立性与以太…