《数字图像处理-OpenCV/Python》连载:图像的阈值处理

《数字图像处理-OpenCV/Python》连载:图像的阈值处理


本书京东 优惠购书链接 https://item.jd.com/14098452.html
本书CSDN 独家连载专栏 https://blog.csdn.net/youcans/category_12418787.html

在这里插入图片描述


第 9 章 图像的阈值处理


图像的阈值处理简单、直观,计算速度快,是很多图像处理算法的预处理过程。


本章内容概要

  • 学习图像的阈值处理方法,理解不同阈值对处理结果的影响。
  • 介绍利用图像局部特征的阈值处理方法,如自适应阈值处理和移动平均阈值处理。
  • 介绍HSV模型,学习基于HSV颜色范围的彩色图像阈值处理。

9.1 固定阈值处理

根据灰度值和灰度值的限制将图像划分为多个区域,或提取图像中的目标物体,是最基本的阈值处理方法。

当图像中的目标和背景的灰度分布较为明显时,可以对整个图像使用固定阈值进行全局阈值处理。如果图像的直方图存在明显边界,则很容易找到图像的分割阈值,但如果图像的直方图分界不明显,则很难找到合适的阈值,甚至可能无法找到固定阈值有效地分割图像。

当图像中存在噪声时,通常难以通过全局阈值将图像的边界完全分开。如果图像的边界是在局部对比下出现的,使用全局阈值的效果会很差。

OpenCV中的函数cv.threshold用于对图像进行阈值处理。

函数原型

cv.threshold(src, thresh, maxval, type[, dst]) → retval, dst

参数说明

  • src:输入图像,是多维Numpy数组,允许为单通道图像或多通道图像。
  • dst:输出图像,与src的尺寸和通道数相同。
  • thresh:阈值,是浮点型数据,取值范围为0~255。
  • maxval:最大值,指饱和限值,用于部分变换类型,一般可取255。
  • type:阈值变换类型。
    • THRESH_BINARY:当大于阈值thresh时置为maxval,否则置为0。
    • THRESH_BINARY_INV:当大于阈值thresh时置为0,否则置为maxval。
    • THRESH_TRUNC:当大于阈值thresh时置为阈值thresh,否则保持不变。
    • THRESH_TOZERO:当大于阈值thresh时保持不变,否则置为0。
    • THRESH_TOZERO_INV:当大于阈值thresh时置为0,否则保持不变。
    • THRESH_OTSU:使用OTSU算法自动确定阈值,可以组合使用。
    • THRESH_TRIANGLE:使用Triangle算法自动确定阈值,可以组合使用。
  • retval:返回的阈值图像。

注意问题
(1)retval通常是二值化的阈值图像,但在某些类型(如TRUNC、TOZERO、TOZERO_INV)中返回的是阈值饱和图像。
(2)函数允许输入单通道或多通道图像,但是输入多通道图像时,要对各通道独立进行阈值处理。返回的阈值图像也是多通道图像,而不是黑白的二值图像,在使用时要特别谨慎。
(3)阈值变换类型为使用OTSU算法、Triangle算法时,只能处理8位单通道输入图像。
(4)阈值变换类型为使用OTSU算法、Triangle算法时,阈值thresh不起作用。


【例程0901】阈值处理之固定阈值法

本例程使用固定阈值法对灰度图像进行阈值处理。对于多峰灰度分布图像,阈值大小会严重影响阈值处理的结果。


# 【0901】阈值处理之固定阈值法
import cv2 as cv
import numpy as np
from matplotlib import pyplot as pltif __name__ == '__main__':# 生成灰度图像hImg, wImg = 512, 512img = np.zeros((hImg, wImg), np.uint8)  # 创建黑色图像cv.rectangle(img, (60, 60), (450, 320), (127, 127, 127), -1)  # 矩形填充cv.circle(img, (256, 256), 120, (205, 205, 205), -1)  # 圆形填充# 添加高斯噪声mu, sigma = 0.0, 20.0noiseGause = np.random.normal(mu, sigma, img.shape)imgNoise = np.add(img, noiseGause)imgNoise = np.uint8(cv.normalize(imgNoise, None, 0, 255, cv.NORM_MINMAX))# 阈值处理_, imgBin1 = cv.threshold(imgNoise, 63, 255, cv.THRESH_BINARY)  # thresh=63_, imgBin2 = cv.threshold(imgNoise, 125, 255, cv.THRESH_BINARY)  # thresh=125_, imgBin3 = cv.threshold(imgNoise, 175, 255, cv.THRESH_BINARY)  # thresh=175plt.figure(figsize=(9, 6))plt.subplot(231), plt.axis('off'), plt.title("1. Original"), plt.imshow(img, 'gray')plt.subplot(232), plt.axis('off'), plt.title("2. Noisy image"), plt.imshow(imgNoise, 'gray')histCV = cv.calcHist([imgNoise], [0], None, [256], [0, 256])plt.subplot(233, yticks=[]), plt.title("3. Gray hist")plt.bar(range(256), histCV[:, 0]), plt.axis([0, 255, 0, np.max(histCV)])plt.subplot(234), plt.axis('off'), plt.title("4. threshold=63"), plt.imshow(imgBin1, 'gray')plt.subplot(235), plt.axis('off'), plt.title("5. threshold=125"), plt.imshow(imgBin2, 'gray')plt.subplot(236), plt.axis('off'), plt.title("6. threshold=175"), plt.imshow(imgBin3, 'gray')plt.tight_layout()plt.show()

程序说明:
(1) 运行结果,使用固定阈值法对图像进行阈值处理如图9-1所示。图9-1(1)所示为程序生成的测试图,图9-1(2)所示为在图9-1(1)上添加了高斯噪声,图9-1(3)所示为图9-1(2)的灰度直方图,具有3个显著的灰度峰值分布。
(2) 图9-1(4)~(6)所示为不同阈值对图9-1(2)进行阈值处理所得到的二值图像,结果是完全不同的。表明对于多峰灰度分布图像,阈值大小会严重影响阈值处理的结果。
(3) 图9-1(4)~(6)的分割结果中都带有大量噪点,表明噪点也会影响阈值处理的结果。

图9-1 使用固定阈值法对图像进行阈值处理在这里插入图片描述
**


版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/135164986)
Copyright 2023 youcans, XUPT
Crated:2023-12-23

《数字图像处理-OpenCV/Python》 独家连载专栏 : https://blog.csdn.net/youcans/category_12418787.html

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

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

相关文章

网络监测之如何保障企业业务系统安全?

网络信息安全在网络时代的重要性不言而喻。随着互联网的普及和数字化进程的加速,网络已经成为人们生活、工作和学习的重要平台。在这个平台上,信息交流、数据存储、在线支付等都需要依赖于网络信息安全。其中企事业单位业务系统安全值得关注。 企事业单…

水印消除:三种简单方法教你如何去除图片水印

当需要使用在线素材图片作为头像或壁纸时,水印可能成为不便之处。需要解决如何去除水印的问题吗?以下是几种方法供参考: 如何去除水印方法一:水印云去除水印(适用于电脑端和手机端) 水印云专注于无痕去水印…

给零基础朋友的编程课07 - 代码

给零基础朋友的编程课07-初识色彩、初识变量、案例3讲解_哔哩哔哩_bilibili Code: // // 案例3 // //// -设定画面- // size(1000, 1000); // 设置画面大小 background(7, 119, 132); // 设置背景颜色// - 绘画 - //// 1 绘制垂线 // 设定线条风格 …

第三十六周:文献阅读+注意力/自注意力机制

目录 摘要 Abstract 文献阅读:锂离子电池RUL预测的SA-LSTM 现有问题 提出方法 提出方法的结构 SA-LSTM预测模型的结构 研究实验 研究贡献 注意力机制 Self-Attention(自注意力机制) 注意力与自注意力 代码实现attention、self-at…

[Linux] MySQL数据库之索引

一、索引的相关知识 1.1 索引的简介 索引是一个排序列表,包含索引值和包含该值的数据行的物理地址(类似于 c 语言链表,通过指针指向数据记录的内存地址)。 使用索引后可以不用扫描全表来定位某行的数据,而是先通过索…

大模型做实体识别任务的原理

1、背景 命名实体识别(named entity recognition,NER):通常是一个序列标注的任务,常见的模型框架有:LSTM-CRF、BERTBILSTMCRF等,该种任务通常被成为flat NER即:每一个token只分配一…

Python基础入门第六节课笔记

while循环 for循环用于针对序列中的每个元素的一个代码块。 while循环是不断的运行,直到指定的条件不满足为止。 while 条件: 条件成立重复执行的代码1 条件成立重复执行的代码2 …….. 当条件成立时,执行下方缩…

MongoDB查询文档

3.5 MongoDB 查询文档 MongoDB 查询文档使用 find() 方法。 find() 方法以非结构化的方式来显示所有文档。find()查询数据的语法格式如下: db.collection.find(query, projection)[.pretty()] query :可选,使用查询操作符指定查询条件 pr…

逻辑运算加法器

前言 逻辑门本质上操作的是单个二进制数,通过高低电压或者有无信号来表示,并且,因为二进制数的原因,一个数字,我们可以通过二进制数来表示,整数可以精确表示,浮点数可以近似表示 本篇文章使用逻…

信息系统定级与等级测评的具体过程

目录 信息系统安全定级流程图 信息系统定级的注意事项 补充内容 信息系统安全等级测评流程图 测评准备阶段 测评机构职责 被测单位职责 方案编制阶段 测评机构职责 被测单位职责 现场测评阶段 测评机构的职责 被测单位职责 分析与报告编制阶段 测评机构职责 被测…

fastadmin点击列表字段复制推广链接

fastadmin点击列表字段复制推广链接 要实现点击复制的功能需要引入外部js分享 利用clipboardjs实现复制功能 下载了之后需要引入外部js 1:把需要的js放在这个路径下 2.去require-frontend.js文件进行配置 3.在使用的js中引入外部js 实际调用

SpringCloudAlibaba Seata在Openfeign跨节点环境出现全局事务Xid失效原因底层探究

原创/朱季谦 曾经在SpringCloudAlibaba的Seata分布式事务搭建过程中,跨节点通过openfeign调用不同服务时,发现全局事务XID在当前节点也就是TM处,是正常能通过RootContext.getXID()获取到分布式全局事务XID的,但在下游节点就出现获…

【数据库系统概论】第3章-关系数据库标准语言SQL(3)

文章目录 3.5 数据更新3.5.1 插入数据3.5.2 修改数据3.5.3 删除数据 3.6 空值的处理3.7 视图3.7.1 建立视图3.7.2 查询视图3.7.3 更新视图3.7.4 视图的作用 3.5 数据更新 3.5.1 插入数据 注意:插入数据时要满足表或者列的约束条件,否则插入失败&#x…

《Nature》预测 2024 科技大事:GPT-5预计明年发布等

《Nature》杂志近日盘点了 2024 年值得关注的科学事件,包括 GPT-5 与新一代 AlphaFold、超算 Jupiter、探索月球任务、生产「超级蚊子」、朝向星辰大海、试验下一代新冠疫苗、照亮暗物质、意识之辩第二回合、应对气候变化。 今年以来,以 ChatGPT 为代表…

CentOS 7 用户必看SQLite 升级指南:轻松将旧版 3.7.17 升级至3.41.2详细教程

0.背景 编写此文是因为在 Linux 上跑项目时报错: sqlite3.NotSupportedError: deterministicTrue requires SQLite 3.8.3 or highe(此时已经安装了 python3)。sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) near "(&q…

新/旧版本 QT 下载,全攻略【省资源下载币专用】

看到好多朋友找不到指定版本的QT下载路径,特此更新一篇新/旧版本 QT 下载攻略 收藏一下吧,需要的时候方便查找,能为你省下好多资源下载币。 通过图示可以看出,新旧版本的界限并没有那么明晰,如果你需要的版本两个链接…

Podman配置mongodb

文章目录 查询镜像拉取镜像查看镜像运行容器创建root用户 查询镜像 podman search mongo拉取镜像 podman pull docker.io/library/mongo查看镜像 podman images运行容器 podman run -d -p 27017:27017 --namemongodb-test docker.io/library/mongo创建root用户 podman exe…

AI Earth平台简介

AI Earth地球科学云平台由达摩院-视觉技术实验室打造,基于地球科学智能计算分析方面的创新研究,致力于解决地球科学领域基础性、前沿性、业务性问题,目标成为国内一流的地球科学云计算平台。(摘自官网) 下面&#xff…

网站数据统计基础:PV、UV与IP的解读

在数字时代,了解和分析网站流量至关重要。无论是新手网站所有者还是资深市场分析师,掌握如何解读网站的PV、UV和IP等指标对于评估网站表现、优化用户体验和制定有效市场策略都是必不可少的。以下是对这三个关键指标的详细介绍。 文章目录 1. PV&#xff…

网页乱码问题(edge浏览器)

网页乱码问题(edge) 文章目录 网页乱码问题(edge)前言一、网页乱码问题1.是什么:(描述)2.解决方法:(针对edge浏览器)(1)下载charset插…