C#,图像二值化(17)——全局阈值的ISODATA算法(亦称作InterMeans法)及其源程序

news2024/11/20 10:42:16

 

  二值算法综述请阅读:

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

1、ISODATA算法

原文:

Ridler, TW & Calvard, S (1978), "Picture thresholding using an iterative selection methodhttp://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4310039

ISO数据

基于isodata算法的迭代程序:

Ridler,TW&Calvard,S(1978),“使用迭代选择方法的图像阈值”,IEEE系统、人和控制论汇刊8:630-632

该过程通过采用初始阈值将图像划分为对象和背景,然后计算阈值或阈值以下的像素和阈值以上的像素的平均值。计算这两个值的平均值,增加阈值并重复该过程,直到阈值大于复合平均值。即,

阈值=(平均背景+平均对象)/2。

该方法有几种实现方式。请参见源代码以获取更多注释。

IsoData
Iterative procedure based on the isodata algorithm of:

Ridler, TW & Calvard, S (1978), "Picture thresholding using an iterative selection method", IEEE Transactions on Systems, Man and Cybernetics 8: 630-632
The procedure divides the image into object and background by taking an initial threshold, then the averages of the pixels at or below the threshold and pixels above are computed. The averages of those two values are computed, the threshold is incremented and the process is repeated until the threshold is larger than the composite average. That is,

threshold = (average background + average objects)/2. 
Several implementations of this method exist. See the source code for further comments.
 

在农业信息领域,植物叶片病害的检测对农民的生活和环境都非常重要。为了提高植物叶病检测的准确性并减少图像处理时间,本研究提出了改进的K均值++聚类和均值间阈值方法。所提出的算法用于在两个不同的数据库中训练和测试植物叶片图像中的疾病。在所提出的方法中,将基于不同的阈值来选择中间均值算法。阈值的最佳值,即中间均值算法,将有助于提高植物叶片图像中疾病分类的准确性和速度。这种方法也将用于植物叶子的不可见图像。植物叶病检测的实验结果达到了98.10%的平均检测准确率。与基于标准K-均值聚类的结果相比,当前方法给出了23.20%左右的更好结果。所提出的算法比用于检测植物叶病的标准算法更有效,以及计算机计算能力中cots的减少。

In the field of agricultural information, the plant leaf disease detection is highly important for both farmer life and environment. To improve the accuracy of plant leaf disease detection and reduce the image processing time, the improved K‒mean++ clustering and intermeans thresholding method are proposed in this study. The proposed algorithms are used for training and testing diseases in plant leaf images in two different databases. Of the proposed methods, the intermeans algorithm will be selected based on different thresholding values. The optimal value of thresholding-i.e., the intermeans algorithm-will help increase the accuracy and speed of classifying diseases in plant leaf images. This method will be also used with unseen images of plant leaf. The experimental result of the detection of plant leaf diseases achieves an average detection accuracy of 98.10%. When compared with the results based on standard K‒mean clustering, the current method gives better results around 23.20%. The proposed algorithm is more effective than the standard algorithms for detecting plant leaf diseases, as well as the reduction in cots in the computational power of computers.

INTERMEANS ITER算法细节

一种迭代算法,其结果与OTSU算法相似

计算强度低于OTSU

算法从t的初始猜测开始

定义两类的均值μt和νt

设置t=[(μt+νt)/2]并重新计算μt和νt。

重复,直到t在两次连续迭代中具有相同的值

获得的t可能强烈依赖于其初始值

如果对象和背景占据可比较的区域,请使用平均值

如果对象与背景相比较小,请使用INTERMODES。

工具书类

T、 Ridler和S.Calvard,使用迭代选择方法的图像阈值,IEEE Trans。系统人网络。,第8卷,第630-6321978页。

H、 J.Trussell,评论?使用迭代选择方法的图像阈值处理?,IEEE Trans。系统人网络。,第9卷,第311页,1979年。

Details of INTERMEANS ITER algorithm
An iterative algorithm that gives similar results as the OTSU algorithm
Computationally less intensive than OTSU
The algorithm starts with an initial guess for t
Define the means μt and νt of the two classes
Set t = [(μt + νt)/2] and recalculate μt and νt.
Repeat until t has the same value in two consecutive iterations
The obtained t may strongly depend on its initial value
If the objects and background occupy comparable areas, use MEAN
If the objects are small compared to the background, use INTERMODES.
References

T. Ridler and S. Calvard, Picture thresholding using an iterative selection method, IEEE Trans. Systems Man Cybernet., vol. 8, pp. 630-632, 1978.
H. J. Trussell, Comments on ?Picture thresholding using an iterative selection method?, IEEE Trans. Systems Man Cybernet., vol. 9, p. 311, 1979.
Acknowledgements Based on the HistThresh Toolbox by Antti Niemistö, Tampere University of Technology, Finland
 

2、ISODATA算法源程序

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 灰度图像二值化 全局算法 ISODATA法 

        /// <summary>
        /// ISODATA(也叫做intermeans法)
        /// </summary>
        /// <param name="histogram"></param>
        /// <returns></returns>
        public static int IsoData_Threshold(int[] histogram)
        {
            int g = Histogram_Left(histogram) + 1;
            while (true)
            {
                int w = 0;
                int totl = 0;
                for (int i = 0; i < g; i++)
                {
                    totl = totl + histogram[i];
                    w = w + (histogram[i] * i);
                }
                int h = 0;
                int toth = 0;
                for (int i = g + 1; i < histogram.Length; i++)
                {
                    toth += histogram[i];
                    h += (histogram[i] * i);
                }
                if (totl > 0 && toth > 0)
                {
                    w /= totl;
                    h /= toth;
                    if (g == (int)Math.Round((w + h) / 2.0))
                    {
                        break;
                    }
                }
                g++;
                if (g > (histogram.Length - 2))
                {
                    return 0;
                }
            }
            return g;
        }


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

        #endregion

    }
}
 

3、ISODATA算法程序计算效果

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

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

相关文章

Smart Finance成为火必投票竞选项目,参与火必投票获海量奖励

最近&#xff0c;Huobi推出了新一期的“投票上币”活动&#xff0c;即用户可以通过HT为候选项目投票&#xff0c;在投票截止后&#xff0c;符合条件的优质项目将直接上线Huobi。而Smart Finance成为了新一期投票上币活动的竞选项目之一&#xff0c;并备受行业关注&#xff0c;与…

android 11+后台启动FGS的while-in-use权限限制

while-in-use权限限制 为了帮助保护用户隐私&#xff0c;Android 11&#xff08;API 级别 30&#xff09;对前台服务何时可以访问设备的位置、摄像头或麦克风进行了限制。 当您的应用程序在后台运行时启动前台服务时&#xff0c;前台服务有以下限制&#xff1a; 除非用户已向您…

智能家居创意产品一智能插座

WiFi智能插座对于新手接触智能家居产品更加友好&#xff0c;不需要额外购买网关设备 很多智能小配件也给我们得生活带来极大的便捷&#xff0c;智能插座就是其中之一&#xff0c;比如外出忘记关空调&#xff0c;可以拿起手机远程关闭。 简单说就是&#xff1a;插座可以连接wi…

python深拷贝和浅拷贝

python深拷贝和浅拷贝&#xff08;一&#xff09; 定义 直接赋值&#xff1a;其实就是对象的引用。浅拷贝&#xff1a;拷贝父对象&#xff0c;不会拷贝对象的内部的子对象。深拷贝&#xff1a; copy 模块的 deepcopy 方法&#xff0c;完全拷贝了父对象及其子对象。 浅拷贝&am…

【自学C++】C++变量

C变量 C变量教程 不论是使用哪种高级程序语言编写程序&#xff0c;变量都是其程序的基本组成单位。变量相当于内存中一个数据存储空间的表示&#xff0c;通过变量名可以访问到变量的具体的值。 C 的变量&#xff08;variable&#xff09;是有明确 类型 的。编译器会检查 函数…

Linux 安装OpenSSL及解决遇到的问题

OpenSSL下载openssl安装包解压配置相应检查编译安装测试创建软链接N次测试下载openssl安装包 wget https://www.openssl.org/source/openssl-3.0.1.tar.gz执行后如果拉不下来&#xff0c;出现证书过期 需要加上 --no-check-certificate 不做检查 wget https://www.openssl.o…

C语言char类型的存储

目录char是如何存储的char的类型char的取值范围例题char是如何存储的 字符型&#xff08;char&#xff09;用于储存字符&#xff08;character&#xff09;&#xff0c;如英文字母或标点。但是char类型在内存中并不是以字符的形式储存&#xff0c;而是以ASII码的形式储存&…

python对接API二次开发高级实战案例解析:Zabbix API封装类实现获取认证密钥、所有主机组、所有主机、所有监控项和历史数据

Zabbix API是基于Web的API&#xff0c;作为Web前端的一部分提供。它使用JSON-RPC 2.0协议&#xff0c;这意味着两点&#xff1a; 该API包含一组独立的方法&#xff1b;客户端和API之间的请求和响应使用JSON格式进行编码。 传送门&#xff1a;Zabbix API官方文档 导入模块 在za…

单线程Reactor模型

单线程Reactor模型 Reactor模型只是对select\poll\epoll等网络模型的封装&#xff0c;本文讲解基于epoll实现Reactor模型 Reactor模型 单线程Reactor模型较为简单&#xff0c;如图&#xff1a; 服务器接收多个client连接请求后&#xff0c;统一交由Reactor处理&#xff0c;其…

Qt—QPainter基本图形绘制详解

QPainter描述1、QPainter 类在小部件和其他绘制设备上执行低级绘制。2、QPainter 提供了高度优化的功能来完成大多数图形GUI程序所需的工作。它可以画从简单的线条到复杂的形状。它还可以绘制对齐的文本和像素图。QPainter 可以对继承 QPaintDevice 类的任何对象进行操作。3、Q…

【追光者】2022年终总结,又是一个开始,新的挑战。愿你历尽千帆,归来仍是少年。

本文为我原创&#xff0c;未经授权&#xff0c;禁止转载&#xff0c;本文首发于 CSND博客。 这几天&#xff0c;前前后后&#xff0c;断断续续&#xff0c;一边写博客&#xff0c;一边学习&#xff0c;一边回顾我的2022&#xff0c;打磨了好几天&#xff0c;尽管还是有好多想说…

指针进阶之函数指针和函数指针数组

文章目录一、函数指针1.简单介绍2.回忆函数3.函数地址4.函数指针5.案例&#xff08;1&#xff09;案例一&#xff08;2&#xff09;案例二&#xff08;3&#xff09;案例三&#xff08;4&#xff09;案例四代码1代码2误区6.补充二、函数指针数组1.定义2.补充3.案例&#xff08;…

剑指offer----C语言版----第十二天

目录 打印从1到最大的n位数 1.1 题目描述 1.2 Leetcode上的解题思路 1.3 考虑大数的问题 1.3.1 使用字符串模拟数字的加法 1.3.2 使用全排 打印从1到最大的n位数 原题链接&#xff1a;剑指 Offer 17. 打印从1到最大的n位数 - 力扣&#xff08;LeetCode&#xff09;1.1 题…

算法刷题打卡第58天:删除排序链表中的重复元素

删除排序链表中的重复元素 难度&#xff1a;简单 给定一个已排序的链表的头 head &#xff0c;删除所有重复的元素&#xff0c;使每个元素只出现一次。返回已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,1,2] 输出&#xff1a;[1,2]示例 2&#xff1a; 输入…

Cesiumlab对人工模型、建筑矢量面和BIM模型的处理参数设置 CesiumLab系列教程

CesiumLab中将人工模型&#xff08;fbx、obj&#xff09;、建筑矢量面&#xff08;shp&#xff09;和BIM模型&#xff08;clm&#xff09;的处理都集中在一起&#xff0c;统一使用通用模型处理。 输入文件部分&#xff0c;加载文件在这里不在赘述&#xff0c;输入了文件后&…

陪诊系统搭建,陪诊平台应当具备什么功能?

随着近些年来市场的变化&#xff0c;陪诊服务也在慢慢的受到人们的关注&#xff0c;自从有了陪诊系统之后&#xff0c;帮助了许许多多独立就医不便的人群&#xff0c;给了像是搞不清就诊流程的老年人、家人不方便陪伴的孕妇、残障人士&#xff0c;以及需要陪伴就医的独居人士等…

上海市“专精特新”中小企业和杨浦区“专精特新”中小企业给予5万元和3万元资助

杨浦区“专精特新”中小企业认定一、主管部门杨浦区商务委员会二、政策依据《关于印发<杨浦区“专精特新”中小企业培育工程实施办法>的通知》&#xff08;杨商务委规〔2018〕1号&#xff09;《关于组织推荐2021年度杨浦区“专精特新”中小企业申报(复核)的通知》三、扶持…

【Qt】加载.ui转化的.h头文件显示窗体

【Qt】加载.ui转化的.h头文件显示窗体1、背景2、实例3、验证1、背景 将.ui文件转化为.h头文件参考如下博客&#xff1a; 【Qt】将QtDesigner生成的.ui文件转化为.h头文件 https://jn10010537.blog.csdn.net/article/details/128589666其中生成的ui_widget.h头文件内容如下&am…

TensorFlow之超级参数调优

Keras技术框架提供工具类库&#xff0c;用于对TensorFlow程序相关的超级参数进行调优&#xff0c;为机器学习选择正确的超级参数集合的过程被称之为超级参数调优。 超级参数是指用于治理一个机器学习模型的训练过程及其拓扑结构的变量&#xff0c;这些变量在整个训练过程中保持…

尚医通-项目启动过程

1.先启动Redis&#xff1a; redis-server redis.conf & 2.启动docker&#xff1a; systemctl start docker 3.进入mongo容器&#xff1a; docker exec -it mymongo /bin/bash 4.使用MongoDB客户端进行操作 mongo 5.启动nginx&#xff1a;cmd 输入命令nginx 前期使…