imbinarize函数用法详解与示例

news2025/1/20 19:00:55

一、函数概述

      众所周知,im2bw函数可以将灰度图像转换为二值图像。但MATLAB中还有一个imbinarize函数可以将灰度图像转换为二值图像。imbinarize函数是MATLAB图像处理工具箱中用于将灰度图像或体数据二值化的工具。它可以通过全局或自适应阈值方法将灰度图像转换为二值图像,便于后续的图像分析和处理。

imbinarize的基本用法:

BW = imbinarize(I)

BW = imbinarize(I,method)

BW = imbinarize(I,T)

BW = imbinarize(I,'adaptive',Name,Value)

  • I:输入的二维灰度图像或三维灰度图像体。数据类型可以是single、double、int8、int16、int32、uint8、uint16、uint32。如果输入的是RGB图像,imbinarize会将其视为三维体灰度图像,而不会单独对每个通道进行二值化。
  • method:指定二值化图像的方法,可以是'global'(默认)或'adaptive'。
  • 因此,BW = imbinarize(I) 等价于BW=im2bw(I,graythresh(I))
  • T:阈值,可以是指定为标量亮度值的全局图像阈值,也可以是指定为亮度值矩阵的局部自适应阈值。阈值应在范围[0, 1]内。
  • Name,Value:用于控制自适应阈值的参数对组,如'Sensitivity'(敏感度因子)和'ForegroundPolarity'(前景极性)。
  • BW:输出的二值图像,是一个与输入图像I大小相同的逻辑矩阵或逻辑数组。

、参数详解

1.全局阈值方法

1.1默认情况下,imbinarize使用Otsu方法计算全局阈值。Otsu方法通过最小化阈值化后的黑白像素的类内方差来选择阈值。

1.2可以使用graythresh或otsuthresh函数预先计算全局阈值,然后传递给imbinarize函数。

2.自适应阈值方法

2.1自适应阈值方法根据局部像素统计进行阈值化。imbinarize使用像素邻域的局部均值强度计算每个像素的阈值。

2.2可以使用'Sensitivity'参数调整自适应阈值的敏感度因子。默认值为0.5,取值范围为[0, 1]。敏感度越高,越多的像素会被阈值化为前景。

2.3可以使用'ForegroundPolarity'参数指定前景极性。默认值为'bright'(前景比背景亮),可选值为'dark'(前景比背景暗)。

   

三、应用示例程序源代码及主要运行结果

   请使用imbinarize函数和其他有关图像处理函数对coins.png和rice.png函数进行背景分割。

1.程序源代码

clear all;

close all;

clc;

% 读取灰度图像

I = imread('coins.png');

% 使用全局阈值对图像进行二值化

BW = imbinarize(I);%等价于BW=im2bw(I,graythresh(I));

% 显示原始图像和二值图像

figure;

imshowpair(I, BW, 'montage');

title('原始图像和imbinarize处理后的图像');

BWfill=imfill(BW,'holes');

figure,imshow(BWfill);%孔洞填充

I2=imread('rice.png');

BW2=imbinarize(I2);%使用全局阈值分割

BW3=imbinarize(I2,'adaptive');%使用局部自适应阈值分割

figure,

subplot(1,3,1),imshow(I2),title('原始图像');

subplot(1,3,2),imshow(BW2),title('全局阈值分割后图像');       %对大米分割效果欠佳

subplot(1,3,3),imshow(BW3),title('局部自适应阈值分割后图像'); %对大米分割效果较好

RiceBW=bwareaopen(BW3,40);

figure,imshow(RiceBW);

  1. 主要运行结果

四、结果与讨论

       由上可知,巧妙使用imbinarize函数可以较好地实现图像的快速分割,并减少代码行数。

       如果大家觉得本文对大家的学习和科研有所帮助,别忘了点赞和关注,欢迎转发,谢谢大家!

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

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

相关文章

电商项目高级篇08-springCache

电商项目高级篇08-springCache 1、整合springCache2、Cacheable细节设置 1、整合springCache 1、引入依赖 <!--引入springCache--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifa…

macOS 安装JDK17

文章目录 前言介绍新特性下载安装1.下载完成后打开downloads 双击进行安装2.配置环境变量3.测试快速切换JDK 小结 前言 近期找开源软件&#xff0c;发现很多都已经使用JDK17springboot3 了&#xff0c;之前的JDK8已经被替换下场&#xff0c;所以今天就在本机安装了JDK17&#…

ASP.NET Core - 配置系统之配置提供程序

ASP.NET Core - 配置系统之配置提供程序 3. 配置提供程序3.1 文件配置提供程序3.1.1 JSON配置提供程序3.1.2 XML配置提供程序3.1.3 INI配置提供程序 3.2 环境变量配置提供程序3.3 命令行配置提供程序3.4 内存配置提供程序3.5 配置加载顺序 3.6 默认配置来源 3. 配置提供程序 前…

[手机Linux] ubuntu 错误解决

Ubuntu: 1,ttyname failed: Inappropriate ioctl for device 将 /root/.profile 文件中的 mesg n || true 改为如下内容。 vim /root/.profile tty -s && mesg n || true 2,Errors were encountered while processing: XXX XXXX sudo apt-get --purge remove xxx…

【2024年华为OD机试】 (B卷,100分)- 敏感字段加密(Java JS PythonC/C++)

一、问题描述 题目描述 给定一个由多个命令字组成的命令字符串&#xff1a; 字符串长度小于等于 127 字节&#xff0c;只包含大小写字母、数字、下划线和偶数个双引号&#xff1b;命令字之间以一个或多个下划线 _ 进行分割&#xff1b;可以通过两个双引号 "" 来标…

使用 ChatGPT 生成和改进你的论文

文章目录 零、前言一、操作引导二、 生成段落或文章片段三、重写段落四、扩展内容五、生成大纲内容六、提高清晰度和精准度七、解决特定的写作挑战八、感受 零、前言 我是虚竹哥&#xff0c;目标是带十万人玩转ChatGPT。 ChatGPT 是一个非常有用的工具&#xff0c;可以帮助你…

【C语言系列】深入理解指针(1)

前言 总所周知&#xff0c;C语言中指针部分是非常重要的&#xff0c;这一件我们会介绍指针相关的内容&#xff0c;当然后续我还会出大概4篇与指针相关的文章&#xff0c;来深入的讲解C语言指针部分&#xff0c;希望能够帮助到指针部分薄弱或者根本不会的程序员们&#xff0c;后…

深度学习 Pytorch 基本优化思想与最小二乘法

在正式开始进行神经网络建模之前&#xff0c;我们还需要掌握pytorch中最核心的基础数学工具——autograd(自动微分)模块。虽然对于任何一个通用的深度学习框架都会提供许多自动优化的算法和现成的loss function&#xff0c;但如果想更深入理解神经网络&#xff0c;对深度学习的…

如何在vue中渲染markdown内容?

文章目录 引言什么是 markdown-it&#xff1f;安装 markdown-it基本用法样式失效&#xff1f;解决方法 高级配置语法高亮 效果展示 引言 在现代 Web 开发中&#xff0c;Markdown 作为一种轻量级的标记语言&#xff0c;广泛用于文档编写、内容管理以及富文本编辑器中。markdown…

N个utils(sql)

sql&#xff0c;操作数据库的语言&#xff0c;也可以叫做数据库软件的指令集吧。名字而已&#xff0c;无所谓啦。 本质上&#xff0c;sql并不是java语言内的范畴。但却是企业级开发的范畴。并且我整个文章的一篇逻辑的本质&#xff0c;层的概念&#xff0c;其中一个大的层级就…

Linux虚拟机安装与FinalShell使用:探索Linux世界的便捷之旅

文章目录 软件准备安装 VMware 虚拟机下载CentOS 光盘镜像文件选择适合的 CentOS 版本选择合适的镜像文件 本教程工具版本 第一部分&#xff1a;安装 Linux 虚拟机1. 启动 VMware 并创建新虚拟机2. 默认硬件兼容性设置3. 安装操作系统的设置4. 选择操作系统类型与版本5. 为虚拟…

CSS 网络安全字体

适用于 HTML 和 CSS 的最佳 Web 安全字体 下面列出了适用于 HTM L和 CSS 的最佳 Web 安全字体&#xff1a; Arial (sans-serif)Verdana (sans-serif)Helvetica (sans-serif)Tahoma (sans-serif)Trebuchet MS (sans-serif)Times New Roman (serif)Georgia (serif)Garamond (se…

如何发布自己的第一个Chrome扩展程序

如何发布自己的Chrome扩展程序 只需要六步即可完成Chrome扩展程序的发布 &#xff08;1&#xff09;首先打开google chrome 应用商城注册开发者账号的页面 &#xff08;2&#xff09;现在进行一个绑卡支付5美元的一次性注册费用即可。【不知道如何绑卡的支付的&#xff0c;文…

4.若依 BaseController

若依的BaseController是其他所有Controller的基类&#xff0c;一起来看下BaseController定义了什么 1. 定义请求返回内容的格式 code/msg/data 返回数据格式不是必须是AjaxResult&#xff0c;开发者可以自定义返回格式&#xff0c;注意与前端取值方式一致即可。 2. 获取调用…

Linux运维篇-PAM安全模块配置

PAM是什么&#xff1f; PAM&#xff08;可插入认证模块&#xff09;是UNIX操作系统上一个实现模块化的身份验证的服务。当程序需要对用户进行身份验证时加载并执行。PAM文件通常位于/etc/pam.d目录中。 而Linux-PAM&#xff0c;是linux可插拔认证模块&#xff0c;是一套可定制…

Ubuntu 24.04 LTS 空闲硬盘挂载到 文件管理器的 other locations

Ubuntu 24.04 LTS 确认硬盘是否被识别 使用 lsblk 查看信息&#xff0c;其中sda这个盘是我找不到的&#xff0c;途中是挂在好的。 分区和格式化硬盘 如果新硬盘没有分区&#xff0c;你需要先分区并格式化它。假设新硬盘为 /dev/sdb&#xff0c;使用 fdisk 或 parted 对硬盘…

Windows图形界面(GUI)-QT-C/C++ - Qt控件与布局系统详解

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 Qt布局系统(Layouts) 布局管理器基础 高级布局技巧 嵌套布局 设置间距和边距 常用控件详解 按钮类控件 QPushButton (标准按钮) QRadioButton (单选按钮) QCheckBox (复选框) …

ingress-nginx代理tcp使其能外部访问mysql

一、helm部署mysql主从复制 helm repo add bitnami https://charts.bitnami.com/bitnami helm repo updatehelm pull bitnami/mysql 解压后编辑values.yaml文件&#xff0c;修改如下&#xff08;storageclass已设置默认类&#xff09; 117 ## param architecture MySQL archit…

电梯系统的UML文档06

系统传感器 系统值是用于控制系统的。在类图中系统传感器用一个箭头和系统控制对象连接。 类图中的系统传感器包括AtFloor、电梯呼叫器、关门、开门、门反转、楼层呼叫器和驱动&#xff08;AtFloor&#xff0c;CarCall&#xff0c;DoorClosed&#xff0c;DoorOpen&#xff0c;…

低代码平台:技术复杂性的系统简化

在传统开发模式下&#xff0c;应用构建需要经历需求分析、代码开发、测试部署等多环节&#xff0c;流程繁琐且耗时&#xff0c;往往成为企业技术创新的瓶颈。低代码平台通过模块化和自动化技术重新定义开发流程&#xff0c;使开发者能够在较短时间内实现复杂的应用功能&#xf…