C#,图像二值化(15)——全局阈值的一维最大熵(1D maxent)算法及源程序

news2025/1/17 3:56:00

1、最大熵(maxent)

最大熵(maxent)方法植根于信息理论,并已成功应用于许多领域,包括物理学和自然语言处理。它创建了一个模型,该模型最好地解释了可用数据,但有一个约束,即在没有任何附加信息的情况下,该模型应该最大化熵。换句话说,该模型通过最大化条件熵来偏好均匀分布。最大熵模型最初由Berger等人(1996)开发,用于自然语言应用,如信息检索和语音识别。Jeon和Manmatha(2004)将该模型用于图像。我们遵循Jeon和Manmatha(2004)将maxent应用于形状分类问题的推导。

Maximum entropy
The maximum entropy (maxent) approach is rooted in information theory and has been successfully applied to many fields including physics and natural language processing. It creates a model that best accounts for the available data but with a constraint that without any additional information the model should maximize entropy. In other words, the model prefers a uniform distribution by maximizing the conditional entropy. The maximum entropy model was originally developed by Berger et al. (1996) for natural language applications such as information retrieval and speech recognition. Jeon and Manmatha (2004) adapted the model for images. We follow the derivation of Jeon and Manmatha (2004) applying maxent to the problem of shape classification.

最大熵原理是一个规则,它允许我们从多个不同的概率分布中选择一个“最佳”,这些概率分布都表示当前的知识状态。它告诉我们,最好的选择是熵最大的那个。

这将是剩余不确定性最大的系统,通过选择它,您可以确保您的分析中没有添加任何额外的偏见或不必要的假设。

我们知道,随着时间的推移,所有系统都趋向于最大熵配置,因此,最大熵分布准确表示系统的可能性高于更有序系统表示的可能性。

The maximum entropy principle is a rule which allows us to choose a ‘best’ from a number of different probability distributions that all express the current state of knowledge. It tells us that the best choice is the one with maximum entropy.

This will be the system with the largest remaining uncertainty, and by choosing it you’re making sure you’re not adding any extra biases or uncalled for assumptions into your analysis.

We know that all systems tend toward maximal entropy configurations over time, so the likelihood that your system is accurately represented by the maximum entropy distribution is higher than the likelihood it would be represented by a more ordered system.
 

2、灰度图像二值化,全局算法,一维最大熵的阈值算法源程序

  二值算法综述请阅读:

C#,图像二值化(01)——二值化算法综述与二十三种算法目录https://blog.csdn.net/beijinghorn/article/details/128425225?spm=1001.2014.3001.5502

支持函数请阅读:

C#,图像二值化(02)——用于图像二值化处理的一些基本图像处理函数之C#源代码https://blog.csdn.net/beijinghorn/article/details/128425984?spm=1001.2014.3001.5502

using System;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Collections;
using System.Collections.Generic;
using System.Drawing.Imaging;
 
namespace Legalsoft.Truffer.ImageTools
{
    public static partial class BinarizationHelper
    {
        #region 灰度图像二值化 全局算法 一维最大熵

        /// <summary>
        /// 一维最大熵
        /// </summary>
        /// <param name="histogram"></param>
        /// <returns></returns>
        public static int Maxium_Entropy_1D_Threshold(int[] histogram)
        {
            int MinValue = Histogram_Left(histogram);
            int MaxValue = Histogram_Right(histogram);
            double[] HistGramD = Histogram_Normalize(histogram);

            int Threshold = 0;
            double MaxEntropy = double.MinValue;
            for (int i = MinValue + 1; i < MaxValue; i++)
            {
                double SumIntegral = 0.0;
                for (int j = MinValue; j <= i; j++)
                {
                    SumIntegral += HistGramD[j];
                }

                double EntropyBack = 0.0;
                for (int j = MinValue; j <= i; j++)
                {
                    EntropyBack += (-HistGramD[j] / SumIntegral * Math.Log(HistGramD[j] / SumIntegral));
                }

                double EntropyFore = 0.0;
                for (int j = i + 1; j <= MaxValue; j++)
                {
                    EntropyFore += (-HistGramD[j] / (1.0 - SumIntegral) * Math.Log(HistGramD[j] / (1.0 - SumIntegral)));
                }

                if ((EntropyBack + EntropyFore) > MaxEntropy)
                {
                    Threshold = i;
                    MaxEntropy = EntropyBack + EntropyFore;
                }
            }
            return Threshold;
        }

        public static void Maxium_Entropy_1D_Algorithm(byte[,] data)
        {
            int[] histogram = Gray_Histogram(data);
            int threshold = Maxium_Entropy_1D_Threshold(histogram);
            Threshold_Algorithm(data, threshold);
        }

        #endregion

    }
}
 

3、灰度图像二值化,全局算法,一维最大熵的阈值算法计算效果

效果很一般一般一般。 

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

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

相关文章

甘特图中的依赖关系是什么?

依赖关系是甘特图应用中常见的概念。甘特图依赖关系也称为任务依赖关系&#xff0c;它是指项目任务之间的关系&#xff0c;需要按特定顺序执行一个或多个任务才能完成某项任务&#xff0c;依赖于完成前一任务的任务是后继任务&#xff0c;而其依赖的任务是前导任务。依赖关系一…

字典特征提取、文本特征提取、jieba分词处理、tf-idf文本特征提取概念及代码实现

一、特征提取 特征提取&#xff1a;将任意数据&#xff08;如文本或图像&#xff09;转换为可用于机器学习的数字特征&#xff0c;特征值化是为了计算机更好的去理解数据 特征提取api&#xff1a;sklearn.feature_extraction 特征提取分类 字典特征提取(特征离散化)文本特征…

小蓝本 第一本《因式分解技巧》 第九章 待定系数法 笔记 (第九天)

小蓝本 第一本《因式分解技巧》 第九章 待定系数法 笔记 &#xff08;第九天&#xff09;前言待定系数法二次因式一次因式分解缺陷二次因式分解方法注意既约的情况拓展习题9题目题解前言 已经进行了9天&#xff0c;第八章有一点烧脑&#xff0c;但感觉还是很不错的&#xff0c…

Python类继承:深入了解

引言 前段时间刚好学习了&#xff0c;C中类方面的内容&#xff0c;发现和Python中有许多不同之处&#xff0c;尤其是在类的继承这一块&#xff0c;今天有空&#xff0c;正好写篇文章&#xff0c;记录一下有兴趣的东西&#xff0c;也算是对Python的一个复习。 1 C中的构造析构函…

设计模式学习(二):Observer观察者模式

一、什么是Observer模式在Observer模式中&#xff0c;当观察对象的状态发生变化时&#xff0c;会通知给观察者。Observer模式适用于根据对象状态进行相应处理的场景。简单一句话概况就是&#xff1a;观察者会发送观察对象状态变化的通知。二、Observer模式示例代码下面示例程序…

10种顶流聚类算法Python实现(附完整代码)

目录 前言 一、聚类 二、聚类算法 三、聚类算法示例 1、库安装 2、聚类数据集 3、亲和力传播 4、聚合聚类 5、BIRCH 6、DBSCAN 7、K均值 8、Mini-Batch K-均值 9、均值漂移聚类 10、OPTICS 11、光谱聚类 12、高斯混合模型 三、总结 前言 今天给大家分享一篇关…

虚幻五引擎的出现会不会导致技术美术需求的下降?

先来结论&#xff1a;不会&#xff0c;虚幻五引擎的出现反而会致使技术美术需求的增加。 UE5主要引入的两大新技术 Nanite ​ 渲染技术Nanite&#xff0c;能够直接在游戏里表现出影视级别的超高精度模型。在演示中有一个古代雕塑的镜头&#xff0c;使用的模型超过3300万多边形…

Spring MVC阶段测试

Spring MVC阶段测试 1.新建Maven项目&#xff0c;静态资源文件&#xff0c;如JS、CSS、图片应存放在&#xff08; C &#xff09;目录下。 A、src/main/java B、src/test/java C、src/main/resources/static D、src/main/resources/templates 2.新建Maven项目&#xff0c…

无风扇工控主机支持一路CAN总线

CAN 接口如图所示&#xff0c;输入如下命令&#xff1a; ifconfig -a //查看所有网卡 如果 FlexCAN 驱动工作正常的话就会看到 CAN 对应的网卡接口&#xff0c;如图。从图中可 以看出&#xff0c;有一个名为“can0”的网卡&#xff0c;这个就是 BL302 板上的 CAN1 接口对应的 c…

Selenium用法详解【设置元素等待】【JAVA爬虫】

简介本文主要介绍如何使用java代码利用Selenium操作浏览器&#xff0c;某些网页元素加载慢&#xff0c;如何操作元素就会把找不到元素的异常&#xff0c;此时需要设置元素等待&#xff0c;等待元素加载完&#xff0c;再操作。设置元素等待很多页面都使用 ajax 技术&#xff0c;…

Python - Flask 整合 UEditor

1. 引言 UEditor 是由百度「FEX前端研发团队」开发的所见即所得富文本 web 编辑器&#xff0c;具有轻量&#xff0c;可定制&#xff0c;注重用户体验等特点&#xff0c;开源基于MIT协议&#xff0c;允许自由使用和修改代码 官方文档地址&#xff1a;http://fex.baidu.com/ued…

软件构造与与体系结构习题

软件构造与与体系结构习题第一章第二章第三章第一章 1.下面关于类的描述正确的是&#xff1f;A A、类是一组相似事物的统称。 B、一个事物可以称为一类。 C、两个完全相同的事物可以称为一类。 D、“奥巴马”和“特朗普”可以统称为“奥巴马”。 解析&#xff1a; 类&am…

【Python笔记】课时01:Python3+Pip环境配置(python安装)

1. 不同环境下安装python windows&#xff08;不好安装相关python包&#xff0c;不推荐&#xff09;anaconda&#xff08;科学计算环境 python 相关python包&#xff09;&#xff08;推荐&#xff09;linux&#xff08;如 ubuntu&#xff09;macos 2.1. windows 安装 pytho…

前端性能优化(五):webpack构建优化

目录 一&#xff1a;webpack的优化配置 1.1.Tree-shaking 1.2.JS压缩 1.3.作用域提升 1.4.Babel 优化配置 二&#xff1a;webpack的依赖优化 2.1.noParse&#xff08;不解析&#xff09; 2.2.DllPlugin 三&#xff1a;webpack 细节优化 四&#xff1a;webpack的资源压…

Linux和windows文件互传

文章目录一、方法1&#xff1a;设置共享剪切版二、方法2&#xff1a;使用FileZilla软件1.开启 Ubuntu 下的 FTP 服务2.查看Ubuntu的ip地址2.windows安装FileZilla注意一、方法1&#xff1a;设置共享剪切版 在Ubuntu20版本中好像已经自动实现 本人使用的是旧版18.4&#xff0c…

【每日十分钟前端】基础篇21,为什么HTTPS更安全(SSL原理)、单行/多行文本溢出的省略样式、DOM常见的操作有哪些

1、[HTML]为什么HTTPS更安全(SSL原理)&#xff1a;对称加密、非对称加密、摘要、数字签名、数字证书。 2、[CSS]单行/多行文本溢出的省略样式。 3、[JS]DOM常见的操作有哪些&#xff1f; 1、[HTML]为什么HTTPS更安全(SSL原理)&#xff1a; 对称加密&#xff1a;协商密钥对数据…

异常检测实战应用案例精讲-【工具篇】时序异常检测TODS

前言 时间序列异常值检测旨在识别数据中意外或罕见的实例。作为数据分析最重要的任务之一,异常值检测在时间序列数据上有多种应用,例如欺诈检测、故障检测和网络安全攻击检测。例如,雅虎 和微软 已经建立了自己的时间序列异常值检测服务来监控他们的业务数据并触发异常值…

Hudi、Iceberg底层索引Z-Order

目录 第一部分 数据库领域的Z-Order 1.1 最左匹配原则 1.2 Z-Order动机 1.3 OLTP 1.4 OLAP 第二部分 Z-Order效率分析 2.1 按照A进行查询 2.2 按照B进行查询 2.3 总结 第三部分 Z-Order缺陷 第四部分 总结及建议 参考文章 Z-Order最早是1966提出的一项将多维数据映…

数据分析-深度学习 Day1

目录&#xff1a;第一节 机器学习&深度学习介绍第二节 机器学习攻略一、机器学习的框架二、模型训练攻略三、针对Optimization Issue的优化&#xff0c;类神经网络训练不起来怎么办(一) 局部最优点和鞍点(二) 批处理和momentum(三) 自动调节学习率Learning rate(四) 损失函…

cmake的常用语法

cmake 的注释 # 注释 #[[大段注释 第二行注释 第三行注释]]cmake的log -message cmake messagemessage(arg1 arg2 arg3 arg4) # 会自动连起message 多级别输出 message(FATAL_ERROR,"abc") # 最严重的错误&#xff0c;直接停止执行 message(SEND_ERROR,"aba…