C#,图像二值化(24)——局部阈值算法的NiBlack算法及源程序

news2024/11/18 6:44:54

1、局部阈值算法的NiBlack算法

摘要-医学图像的处理最为复杂人和计算机。磁性捐赠的脑组织共振成像(MRI)在许多领域是非常重要的问题例如手术和治疗。最常见的分割图像的最简单方法是使用阈值。在这项工作中,我们提出了一个有效的实现阈值,并给出详细的比较了现有的局部阈值算法。

Niblack阈值算法在预处理的输入MRI图像。输出结果如下根据区域不均匀性质量度量进行处理,以及

高效实施的质量。我们的实施是适用于处理MR脑图像分割对象的交互式平滑边界。

关键词-磁共振成像,阈值,Niblack,区域不均匀性

一、 引言

属于对象的像素的灰度级为与像素的灰度级完全不同属于背景,在图像的许多应用中处理。阈值处理变得简单,但将前景对象与出身背景我们可以将图像中的像素分成两个主要群体,根据其灰度等级。这些灰度级可以用作“检测器”,以区分背景和对象被视为前景图像[1]。在这两个主要颜色之间选择一个灰度级

灰度级组,将作为阈值区分两组(对象和背景)。图像分割由边界等执行检测或区域相关技术。但是阈值技术更加完善、简单广泛使用[2]。不同的二值化方法执行以评估不同类型的数据。这个在灰度级中使用局部自适应二值化方法低对比度、背景强度变化的图像以及噪声的存在。Niblack的方法用于灰度图像中的阈值处理效果更好,但它仍然是对其进行了修改,以获得更好的结果[3]。在这项工作中,Niblock算法的输入数据为在一些预处理下增强输出数据。这个MRI脑图像自然具有低对比度。这低对比度图像也得到增强结果从背景分析对象。当地人直方图均衡对输入图像进行了增强[12],[13]. 直方图均衡生成灰度图。它更改图像的直方图并重新排列所有像素值尽可能接近用户指定的期望值直方图。直方图均衡丰富了较低的局部对比度以获得较高的对比度。本文的组织结构如下,第二节为目的是呈现关于图像阈值的信息。详细解释了局部自适应阈值技术在第三节中,第四节侧重于Niblack算法的实现。视觉结果和第四节的质量度量结果在第节中讨论五、 最后,第六节包含结论。

二、阈值

简单地,阈值的基本函数[5]创建通过旋转所有像素从灰度级图像中提取二值图像

低于某个阈值为零且所有像素高于该阈值阈值设置为一[1],[5]。如果g(x,y)是如果f(x,y)T在某个全局阈值T时等于1否则为零[1]。阈值技术一般可分为两类,如全局阈值和局部阈值阈值。全局阈值方法考虑单个强度阈值。局部阈值方法计算图像中每个像素的阈值其附近的内容[13]。它认为图像中所有强度级别的存在。所以当地人阈值方法通常对低质量图像[3]。我们将阈值方法分组根据他们利用的信息。直方图基于形状的方法,该方法使用了波峰、波谷并分析平滑直方图的曲率。

基于聚类的方法在灰度级样本分为两部分作为背景和前景(对象)。基于熵的方法导致使用原始数据之间的交叉熵的算法以及二值化图像、前景的熵和背景区域[3]、[4]。基于对象属性的方法;搜索灰度级和二值化图像,如边缘重合、模糊形状相似性空间方法使用了像素和/或高阶概率分布。地方的方法使每个像素上的阈值适应本地图像特征[4]。

Abstract— Medical images are most complicated to process by

human and computer. Brain tissue donated by magnetic

resonance imaging (MRI) is very important issue in many

applications such as surgery and treatments. Most common

and simplest approach to segment an image is using

thresholding. In this work we present an efficient

implementation for threshoding and give a detailed

comparison of some existing local thresholding algorithm.

Niblack thresholding algorithm is implemented on

preprocessed input MRI image. The output results are

processed under Region Nonuniformity quality metrics and

the quality of efficient implementation. Our implementation is

suitable for processing the MR brain images, making

interactive smooth boundaries to the segmented object.

Keywords— Magnetic resonance imaging, thresholding,

Niblack, Region Nonuniformity

I. INTRODUCTION

The gray levels of pixels belonging to the object are

entirely different from the gray levels of the pixels

belonging to the background, in many applications of image

processing. Thresholding becomes then a simple but

effective tool to separate those foreground objects from the

background. We can divide the pixels in the image into two

major groups, according to their gray-level. These graylevels may serve as “detectors” to distinguish between

background and objects is considering as foreground in the

image [1]. Select a gray-level between those two major

gray-level groups, which will serve as a threshold to

distinguish the two groups (objects and background).

Image segmentation is performed by such as boundary

detection or region dependent techniques. But the

thresholding techniques are more perfect, simple and

widely used [2]. Different binarization methods have been

performed to evaluate for different types of data. The

locally adaptive binarization method is used in gray scale

images with low contrast, Varity of background intensity

and presence of noise. Niblack’s method was found for

better thresholding in gray scale image, but still it has been

modified for fine and better result [3].

In this work the input data of the Niblock algorithm is

under some preprocess for enhanced the output data. The

MRI brain images are naturally having low contrast. This

low contrast images also enhanced and produce a better

result to analysis the object from the background. The Local

Histogram Equalization is enhanced the input image [12],

[13]. Histogram Equalization generates a gray map. It

changes the histogram of an image and rearranges all pixels

values to be as close as possible to a user specified desired

histogram. Histogram Equalization enriches the areas of

lower local contrast to gain a higher contrast.

This paper is organized as follows, section II is for the

purpose of presenting information about image thresholding.

Local adaptive thresholding technique is explained detailed

in section III. Section IV focused the efficient

implementation of Niblack algorithm. Visual results and

quality metric results of section IV are discussed in section

V. Finally section VI contains the conclusion.

II. THRESHOLDING

Simply the basic function [5] for thresholding creates the

binary image from gray level ones by turning all pixels

below some threshold to zero and all pixels above that

threshold to one [1],[5]. If g(x, y) is a threshold version of

f(x, y) at some global threshold T. g is equal to 1 if f(x, y) T

and zero otherwise [1].

Thresholding techniques can be classified generally into

two categories like Global thresholding and Local

thresholding. Global thresholding methods consider a single

intensity threshold value. Local thresholding methods

compute a threshold for each pixel in the image on the basis

of the content in its neighbourhood [13]. It considers

presences of all intensity level in the image. So the local

thresholding methods generally perform better for low

quality images [3].

We categorize the thresholding methods in groups

according to the information they are exploiting. Histogram

shape-based methods, this method used the peaks, valleys

and curvatures of the smoothed histogram are analyzed.

Clustering-based methods perform where the gray-level

samples are clustered in two parts as background and

foreground (object). Entropy-based methods result in

algorithms that use the cross-entropy between the original

and binarized image, the entropy of the foreground and

background regions [3], [4]. Object attribute-based methods;

search a similarity measure between the gray-level and the

binarized images, such as edge coincidence, fuzzy shape

similarity. The spatial methods use correlation between

pixels and/or higher-order probability distribution. Local

methods adapt the threshold value on each pixel to the local

image characteristics [4].

2、局部阈值算法的NiBlack算法源程序

二值算法综述请阅读:

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

namespace Legalsoft.Truffer.Binarization
{
public static partial class BinarizationHelper
{

    #region 灰度图像二值化 局部算法 NiBlack 算法

    /// <summary>
    /// 局部算法
    /// 图像二值化的 NiBlack 算法
    /// https://blog.csdn.net/lucayhaozi/article/details/9967963
    /// </summary>
    /// <param name="data">灰度化后的图像byte数组</param>
    /// <param name="k"></param>
    public static void Niblack_Algorithm(byte[,] data, double k = -0.1)
    {
        int height = data.GetLength(0);
        int width = data.GetLength(1);

        int Niblack_s = Math.Max(5, width / 32);
        int Niblack_q = Math.Max(5, height / 32);

        byte[,] dump = (byte[,])data.Clone();
        for (int y = 0; y < height; y++)
        {
            for (int x = 0; x < width; x++)
            {
                int begin_y = Math.Max(0, y - Niblack_q);
                int begin_x = Math.Max(0, x - Niblack_s);
                int end_y = Math.Min(height, y + Niblack_q);
                int end_x = Math.Min(width, x + Niblack_s);
                //if (begin_y < 0) begin_y = 0;
                //if (begin_x < 0) begin_x = 0;
                //if (end_y > height) end_y = height;
                //if (end_x > width) end_x = width;

                //该领域内总的像素点数
                double mean = 0.0;
                int total = (end_y - begin_y) * (end_x - begin_x);
                for (int yy = begin_y; yy < end_y; yy++)
                {
                    for (int xx = begin_x; xx < end_x; xx++)
                    {
                        mean += dump[yy, xx];
                    }
                }
                //计算在该小领域内灰度值总和
                //该领域的平均灰度
                mean /= (double)total;

                double std_error = 0.0;
                for (int yy = begin_y; yy < end_y; yy++)
                {
                    for (int xx = begin_x; xx < end_x; xx++)
                    {
                        std_error += (mean - dump[yy, xx]) * (mean - dump[yy, xx]);
                        //std += sq;
                    }
                }
                //求出该领域内总的方差和
                std_error /= (double)total;
                //求出标准差
                std_error = (Math.Abs(std_error) < float.Epsilon) ? 0.0 : Math.Sqrt(std_error);

                //求出所得到的的阈值
                double threshold = mean + k * std_error;
                data[y, x] = (byte)((dump[y, x] > threshold) ? 255 : 0);
            }
        }
    }

    #endregion

}
}

3、局部阈值算法的NiBlack算法及源程序计算效果

POWER BY 315SOFT.COM & TRUFFER.CN

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

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

相关文章

SpringBoot整合Mybatis和MybatisPlus

目录 一、整合MyBatis操作 1、配置模式 2、注解模式 3、混合模式 二、整合 MyBatis-Plus 完成CRUD 1、什么是MyBatis-Plus 2、整合MyBatis-Plus 3、CRUD功能 一、整合MyBatis操作 官网&#xff1a;MyBatis GitHub SpringBoot官方的Starter&#xff1a;spring-boot-st…

兼容东西,贯通南北:超聚变的“四水归堂”

四水归堂&#xff0c;是中国建筑艺术中的一种独特形式。这种形式下&#xff0c;由四面房屋围出一个天井&#xff0c;房屋内侧坡向天井内倾斜&#xff0c;下雨时雨水会从东西南北四方流入天井&#xff0c;从而起到收集水源&#xff0c;防涝护屋的作用&#xff0c;寓意水聚天心&a…

每日一问-ChapGPT-20230114-关于小年

文章目录每日一问-ChapGPT系列起因每日一问-ChapGPT-20230114-关于小年腊月每天都做些什么的歌谣为什么现在的年味淡了很多&#xff0c;感觉不到过年为什么春节放假要调休&#xff0c;不能多放几天吗说说现在世界上极端气候&#xff0c;以及多少年后&#xff0c;地球存在不适宜…

Asp.Net项目的部署到Linux中(Linux + Jexus+Nginx )

因为老项目用的Asp.Net Web API技术开发部署到Window系统上&#xff0c;而新项目用的是.Net Core部署到Ubuntu系统中&#xff0c;所以在管理切换上有些不便。于是决定将老项目的测试服部署到Ubuntu中&#xff0c;试试水。 一、简述 要实现Asp.Net项目部署到Linux中&#xff0c…

C语言入门教程|| C语言 程序结构|| C语言 基本语法

在我们学习 C 语言的基本构建块之前&#xff0c;让我们先来看看一个最小的 C 程序结构&#xff0c;在接下来的章节中可以以此作为参考。 C 程序主要包括以下部分&#xff1a; 预处理器指令函数变量语句 & 表达式注释 让我们看一段简单的代码&#xff0c;可以输出单词 &qu…

Anfis-基于模糊推理的自适应神经网络程序(免费分享)

输出结果展示&#xff1a;完整代码&#xff1a;clear;close all;gamma0.75;%设定惯性因子eps10.005;%设定停止训练的条件参数m18;%设定隶属函数个数m28;a-1;b1;w0a(b-a)*rand(1,m1*m2);%初始化权值阵for i1:2switch icase 1,beta0.75;%设定学习率otherwise,beta0.25;endc[2/7*(…

ESP-IDF:链表例程实现创建,增加,打印数据成员,释放链表空间等功能

链表例程&#xff1a; typedef struct LISTNODE { void *data_p; LISTNODE *next; } mlistnode; typedef struct MYLIST { int size; mlistnode *head; } mylist; mylist *initial_mylist() { mylist *p (mylist *)malloc(sizeof(mylist)); p->size 0; p->head (ml…

下载指定的tomcat版本和配置

如何下载指定的tomcat版本 tomcat官网:https://archive.apache.org/ tomcat指定版本下载地址&#xff1a;https://archive.apache.org/dist/tomcat/ 找到指定的版本&#xff0c;例如这里要找到tomcat8.0.1 bin是二进制文件&#xff0c;src是源码文件 配置tomcat环境变量 t…

Paddle进阶实战系列(二):智慧交通预测系统

✨写在前面&#xff1a;强烈推荐给大家一个优秀的人工智能学习网站&#xff0c;内容包括人工智能基础、机器学习、深度学习神经网络等&#xff0c;详细介绍各部分概念及实战教程&#xff0c;通俗易懂&#xff0c;非常适合人工智能领域初学者及研究者学习。➡️点击跳转到网站。…

[ 环境搭建篇 ] 安装python环境并配置环境变量(附python3.10.3安装包)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

力扣刷题记录——496. 下一个更大元素 I、500. 键盘行、506. 相对名次

本专栏主要记录力扣的刷题记录&#xff0c;备战蓝桥杯&#xff0c;供复盘和优化算法使用&#xff0c;也希望给大家带来帮助&#xff0c;博主是算法小白&#xff0c;希望各位大佬不要见笑&#xff0c;今天要分享的是——《496. 下一个更大元素 I、500. 键盘行、506. 相对名次》。…

Acwing4700. 何以包邮?(DP,01背包)

新学期伊始&#xff0c;适逢顿顿书城有购书满 x 元包邮的活动&#xff0c;小 P 同学欣然前往准备买些参考书。 一番浏览后&#xff0c;小 P 初步筛选出 n 本书加入购物车中&#xff0c;其中第 i 本&#xff08;1≤i≤n&#xff09;的价格为 ai 元。 考虑到预算有限&#xff0…

【大厂高频真题100题】《删除无效的括号》 真题练习第24题 持续更新~

删除无效的括号 给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。 返回所有可能的结果。答案可以按 任意顺序 返回。 示例 1: 输入:s = "()())()" 输出:["(())()","()()()"] 示例 2: 输入:…

1.初识React

React是用于构建用户界面的JavaScript库&#xff0c;可以应用于web&#xff0c;app(react-native),VR(react 360) 目录 1 安装React 2 简单使用 2.1 在页面上创建一个元素 2.2 React.createElement() 2.3 ReactDom.render() 3 React脚手架 3.1 初始化项目 3.2 …

国际人才考试中级的一点备考经验

在学英语的过程中&#xff0c;考证算是一件检验自己学习成果不错的方法&#xff0c;一开始是考虑了考雅思的&#xff0c;但综合自己幼儿园水平的听力&#xff0c;打算先放一放&#xff0c;考一考国才试试水。 国才考试近几年才有&#xff0c;知名度稍差&#xff0c;不过它不限制…

【Nginx】Nginx原理及优化参数配置

1. master和worker2. worker如何进行工作3. 一个master和多个woker有好处4. 设置多少个worker合适5. 连接数worker_connection 1. master和worker 2. worker如何进行工作 3. 一个master和多个woker有好处 首先&#xff0c;对于每个 worker 进程来说&#xff0c;独立的进程&am…

读书:《有无之境:王阳明哲学的精神》

《有无之境&#xff1a;王阳明哲学的精神》 王阳明晚年的时候&#xff0c;把他的哲学概括成了四句话&#xff0c;即四句教&#xff1a; 无善无恶心之体&#xff1b; 有善有恶意之动&#xff1b; 知善知恶是良知&#xff1b; 为善去恶是格物。 第一句&#xff1a;无善无恶心…

Trino源码分析:sql字段解析

业务中需要对Trino查询语句中涉及的字段进行处理&#xff0c;所以对这一段源码进行追踪分析&#xff0c;记录如下。 源码追踪是从QueuedStatementResource类开始的。 QueuedStatementResource类与ExecutingStatementResource类&#xff0c;提供用户执行查询相关的Restful接口。…

【C进阶】自定义类型——结构体、枚举和联合体

家人们欢迎来到小姜的世界&#xff0c;<<点此>>传送门 这里有详细的关于C/C/Linux等的解析课程&#xff0c;家人们赶紧冲鸭&#xff01;&#xff01;&#xff01; 客官&#xff0c;码字不易&#xff0c;来个三连支持一下吧&#xff01;&#xff01;&#xff01;关注…

MySQL高级【事务原理】

1&#xff1a;事务原理1.1&#xff1a;事务基础1). 事务 事务 是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 2). 特性 • …