数字图像处理笔记——阈值(Thresholding)

数字图像处理笔记——阈值(Thresholding)阈值我们将图像分块最简单的方法就是设定一个阈值对图像进行二值化处理,那么这个阈值我们应该如何选择呢对于图像的直方图存在明显边界的图像,我们可以很容易找到这个阈值,但是如果图像直方图分界不明显,那么这个阈值的寻找将变得十分困难。因此我们存在全局阈值与局部阈值两种全局阈值全局阈值就是在整幅图像中我们只有一个阈值来对图像进行二值化,但是其存在其局限性,例如图像中存在高斯噪声的情况…

大家好,又见面了,我是你们的朋友全栈君。

阈值

我们将图像分块最简单的方法就是设定一个阈值对图像进行二值化处理,那么这个阈值我们应该如何选择呢

数字图像处理笔记——阈值(Thresholding)

对于图像的直方图存在明显边界的图像,我们可以很容易找到这个阈值,但是如果图像直方图分界不明显,那么这个阈值的寻找将变得十分困难。因此我们存在全局阈值与局部阈值两种

数字图像处理笔记——阈值(Thresholding)

全局阈值

全局阈值就是在整幅图像中我们只有一个阈值来对图像进行二值化,但是其存在其局限性,例如图像中存在高斯噪声的情况下,我们无法找到一个很好的阈值将图像的边界分开

数字图像处理笔记——阈值(Thresholding)数字图像处理笔记——阈值(Thresholding)

另外如果图像的边界是在局部对比下出现的,即不同位置阈值不同,那么全局阈值的效果也非常不好

数字图像处理笔记——阈值(Thresholding)

我们先不管全局阈值的缺点,我们来看看我们如何通过计算来获得这个全局阈值T呢?我们又OTSU’S算法

数字图像处理笔记——阈值(Thresholding)

下面是一些数学概念在图像上的体现

数字图像处理笔记——阈值(Thresholding)

OTSU算法就是想把图像分为两个块,然后使得这两个块之间的方差最大,也就是最大化两个块的均值与全局均值的差的平方

数字图像处理笔记——阈值(Thresholding)

数字图像处理笔记——阈值(Thresholding)

由于只存在这么一个阈值,那么我们在计算的时候可以简单地让这个值遍历0-255,然后找到σB最大的值,这个值就是我们要的阈值。我们可以理解为这个值把图像分为了相距最远的两块。我们在matlab中有graythresh这个函数来实现这个过程

数字图像处理笔记——阈值(Thresholding)

下图就显示了一个OTSU算法不是很理想的例子

数字图像处理笔记——阈值(Thresholding)

为了克服以上缺点我们有两点解决方法:1.先通过低通滤波器去噪再用OTSU 2.只在考虑边缘部分的像素来计算阈值,这样可以大大减少其他不重要部分对阈值计算过程的影响

数字图像处理笔记——阈值(Thresholding)

局部阈值

下面让我们来看看局部阈值/自适应阈值。它的原理就是将图像分块,对于不同的部分应用不同的阈值,在matlab中我们有blockproc这个函数来实现这个过程

数字图像处理笔记——阈值(Thresholding)

我们看到相比于之前,效果确实有很大的提升,但是缺点也特别明显,就是图像会出现分块化

数字图像处理笔记——阈值(Thresholding)

我们可以调小块的大小,但是这样的话会出现如果块内像素值变化不大的话,块内像素被全部分作黑或白而缺失了边界(例如右上角窗户的上方黑色的窗框内有白色的像素块)。因此块的选择是十分重要的

数字图像处理笔记——阈值(Thresholding)

更好的方式是我们在每个像素周围的一个区域内来计算阈值,根据这个块内的均值方差来计算这个像素的值是1还是0

数字图像处理笔记——阈值(Thresholding)

数字图像处理笔记——阈值(Thresholding)

RGB图阈值

除了将阈值在灰度图上应用,我们还可以将其应用在RGB图中,我们可以设定一种颜色,来得到与这种颜色相近颜色的物体

数字图像处理笔记——阈值(Thresholding)

例如我们取下图丝带的颜色可以得到如右图的结果

数字图像处理笔记——阈值(Thresholding)

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140854.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • YUI3学习(一)—入门

    YUI3学习(一)—入门   学习YUI3有一段时间,并且应用在了一些项目的前端开发中,感觉还是蛮不错的,所以决定开始记录下YUI3的学习历程和个人经验。   YUI3在前身YUI2基础上进行了大量的重新设计,并不只是简单的版本升级。YUI3强调代码重用,将功能做了级别划分和颗粒化的设计。在概念上抽象出核心、工具、和组件类,分别放在不同的目录结构中,需要的时候自行去引用。为动态加载的框架设计做铺垫。YUI3…

    2022年7月12日
    26
  • 网络诊断dns服务器未响应,网络诊断提示DNS服务器未响应解决方法

    网络诊断dns服务器未响应,网络诊断提示DNS服务器未响应解决方法DNS服务器未响应是什么意思DNS服务器是计算机域名系统(DomainNameService)的缩写,它是由域名解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发…

    2022年5月9日
    44
  • python学习——pandas查看数据集null值:isnull

    python学习——pandas查看数据集null值:isnull在数据集中,可能有些字段下会有null值,我们在进行数据处理的时候,不能视而不见,可以使用isnull查看是否有空值In:all_dummy_df.isnull().sum().sort_values(ascending=False).head(10)Out:LotFrontage486GarageYrBlt159MasVnrArea23…

    2022年10月20日
    3
  • file_handle_windows句柄

    file_handle_windows句柄1.概述在实际工作中会经常遇到一些bug,有些就需要用到文件句柄,文件描述符等概念,比如报错:toomanyopenfiles,如果你对相关知识一无所知,那么debug起来将会异常痛苦。在linux操作系统中,文件句柄(包括Socket句柄)、打开文件、文件指针、文件描述符的概念比较绕,而且windows的文件句柄又与此有何关联和区别?这一系列的问题是我们不得不面对的。博主通过翻…

    2022年10月10日
    2
  • 树莓派新手教程_新手入门树莓派必做的四件事

    树莓派新手教程_新手入门树莓派必做的四件事此篇文章獻給所有第一次把玩樹莓派的新手、以及樹莓派的愛好者。 ByHerbfargus-Ownwork,CCBY-SA4.0,https://commons.wikimedia.org/w/index.php?curid=47497384 目標建立一個省電的家用伺服器 小弟選用樹莓派作為家用伺服器,…

    2022年10月14日
    2
  • ScriptManager的简单用法「建议收藏」

    ScriptManager的简单用法「建议收藏」ScriptManager的简单用法资料中如实是说:1,ScriptManager(脚本控制器)是asp.netajax存在的基础.2,一个页面只允许有一个ScriptManager,并且放

    2022年7月4日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号