imbinarize函数用法详解与示例

一、函数概述

      众所周知,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.mzph.cn/diannao/67259.shtml

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

相关文章

centos使用dpdk库

yum -y install dpdk dpdk-devel 在 C 中使用 DPDK(Data Plane Development Kit)库通常涉及到以下几个步骤:安装 DPDK、配置编译环境、编写 C 代码并链接 DPDK 库。以下是如何在 C 中引用和使用 DPDK 的详细步骤。 1. 安装 DPDK 首先&#…

数仓建模(三)建模三步走:需求分析、模型设计与数据加载

本文包含: 数据仓库的背景与重要性数据仓库建模的核心目标本文结构概览:需求分析、模型设计与数据加载 目录 第一部分:需求分析 1.1 需求分析的定义与目标 1.2 需求分析的步骤 1.2.1 业务需求收集 1.2.2 技术需求分析 1.2.3 成果输出…

【postgres】sqlite格式如何导入postgres数据库

step1 在ubuntu系统安装pgloader(centos系统难以直接通过yum安装,如果源码安装的话,会比较费劲) step2,执行如下python脚本 from pathlib import Path import subprocess dataset_dir Path(/app/sqlite_to_pg/chas…

【C++指南】类和对象(八):匿名对象

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C指南》 期待您的关注 引言 在C编程中,匿名对象是一种特殊的对象,它在创建时没有被命名。 这种对象通常用…

编译pytorch——cuda-toolkit-nvcc

链接 https://blog.csdn.net/wjinjie/article/details/108997692https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#switching-between-driver-module-flavorshttps://forums.developer.nvidia.com/t/can-not-load-nvidia-drivers-on-ubuntu-22-10/239750https://…

智汇云舟参编《城市轨道交通安全防范系统技术要求》国标正式发布

近日,根据国家标准化管理委员会官网,全国标准信息公共服务平台发布的公告,国家标准《城市轨道交通安全防范系统技术要求》(GB/T 26718-2024)已由全国城市轨道交通标准化技术委员会上报国家标准化管理委员会&#xff0c…

45_Lua模块与包

Lua中的模块系统是该语言的一个重要特性,它允许开发者将代码分割成更小、更易于管理的部分。通过使用模块,你可以创建可重用的代码片段,并且可以降低代码间的耦合度。下面我将详细介绍Lua模块的基本概念、语法以及一些实际案例。 1.Lua模块 1.1 模块的基本概念 从Lua 5.1…

学习华为熵减:激发组织活力(系列之三)

目录 为什么学习华为? 学习华为什么? 一、势:顺势而为,在风口上猪都会飞起来。 二、道:就是认识和利用规律层面,文化和制度创新就是企业经营之道。 三、法:就是一套价值管理的变革方法论。…

Unity解决滑动条的value值的滑动条消失问题

在这里我们看到原本的value的滑动条消失了 解决办法 把编辑器的边框往外面拉一下就可以了(之前遇到这个问题还重启了几次unity没想到居然是这个问题)

HarmonyOS应用开发者初级认证最新版– 2025/1/13号题库新版

1.欢迎各位读者,本文档来自鸿蒙开发学员亲测,最新版。(考试时直接Ctrlf进行搜索,一定要认真比对答案,有的答案相似度很高)!!!!!! 欢迎…

kubernetes v1.29.XX版本HPA、KPA、VPA并压力测试

序言: 在大型电商、购物、直播活动期间,对于火爆流量的激增,如何保障业务稳定并且做到资源不浪费,自动回收。 场景:kubernetes 原生容器化承载业务流量(非云环境) 方案:kubernetes自…

HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (五、电影详情页的设计实现)

在上一篇文章中,完成了电影列表页的开发。接下来,将进入电影详情页的设计实现阶段。这个页面将展示电影的详细信息,包括电影海报、评分、简介以及相关影人等。将使用 HarmonyOS 提供的常用组件,并结合第三方库 nutpi/axios 来实现…

亲测解决CUDA error: device-side assert triggered

这个问题小虎今天刚刚遇到,问题原因有很多。但是由于使用了cuda运行,报错看不出来。解决方法是用cpu运行来看错误出在哪里。 环境 Python version is: 3.10.13 | packaged by Anaconda, Inc. | (main, Sep 11 2023, 13:24:38) [MSC v.1916 64 bit (AMD…

Vulnhub DC-8靶机攻击实战(一)

导语   Vulnhub DC-8靶机教程来了,好久没有更新打靶的教程了,这次我们在来更新一期关于Vulnhub DC-8的打靶训练,如下所示。 安装并且启动靶机 安装并且启动靶机,如下所示。 开始信息采集 进入到Kali中,通过如下的命令来查找到靶机的IP地址。 arp-scan -l根据上面的结…

神经网络基础-正则化方法

文章目录 1. 什么是正则化2. 正则化方法2.1 Dropout正则化2.2 批量归一化(BN层) 学习目标: 知道正则化的作用掌握随机失活 DropOut 策略知道 BN 层的作用 1. 什么是正则化 在设计机器学习算法时希望在新样本上的泛化能力强。许多机器学习算法都采用相关的策略来减小…

【Linux】12.Linux进程概念(1)

文章目录 1. 冯诺依曼体系结构2. 操作系统(Operator System)概念设计OS的目的胆小的操作系统定位如何理解 "管理"总结 3. 进程基本概念task_struct-PCB的一种task_ struct内容分类组织进程查看进程通过系统调用获取进程标示符通过系统调用创建进程-fork初识 1. 冯诺依…

【Linux网络编程】序列化与反序列化

目录 一,序列化和反序列化的说明 二,Jsoncpp库的介绍 三,Jsoncpp库的使用 3-1,Json::Value类 3-2,Json::StreamWriter类 3-3,Json::CharReader类 一,序列化和反序列化的说明 序列化与反…

解决 多层跳板机情况下,ssh可以成功连但是VSCode失败

ssh bbbb -p 22 -J aaaa 成功,但是用 VSCode 如下配置连接失败? Host aaHostName aaUser aaHost bbHostName bbUser bbProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -W %h:%p aa同时,VSCode 连接 aa 成功。那么问题出在哪里&#xff1…

Oracle报错ORA-01078、LRM-00109

虚拟机异常关机后,rac数据库备机无法启动数据库,报错如下 解决方法: 找到如下路径文件 执行: cp init.ora.016202516818 /u01/app/oracle/product/19.3.0/db/dbs/ mv init.ora.016202516818 initplm2.ora 再次进入命令行sqlpl…

MySQL SQL优化技巧与原理

前言 随着业务数据量的不断增加,MySQL查询语句的执行效率对程序的运行效率影响逐渐增大。因此,进行SQL优化变得至关重要。本文将结合SQL的执行语句顺序和各种SQL场景,介绍一些常见的MySQL SQL优化技巧及其背后的原理。 一、MySQL SQL执行语…