imbinarize函数用法详解与示例

devtools/2025/1/21 18:13:04/

一、函数概述

      众所周知,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.ppmy.cn/devtools/152396.html

相关文章

mac m4 安装 node

brew install node // 安装 node //安装的路径在: /opt/homebrew/bin/node brew install node14 // brew install node22 // 安装指定版本 如果需要设置环境变量:通过: which node 查找路径 export PATH"/usr/local/opt/…

Python基于OpenCV和PyQt5的人脸识别上课签到系统【附源码】

博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…

什么是HTTP3?

要想讲清楚HTTP3是什么,就不得不先说下HTTP2,而要说清楚什么是HTTP2,就不得不介绍HTTP1。正所谓:计算机软件没有银弹,每项新技术都是解决了旧技术的问题,而又引入了新的问题。所以我们从HTTP1开始讲的话&am…

《汽车维修技师》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答: 问:《汽车维修技师》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《汽车维修技师》级别? 答:省级。主管单位:北方联合出版传媒(…

湖仓一体架构解析:数仓架构选择(第48天)

系列文章目录 1、Lambda 架构 2、Kappa 架构 3、混合架构 4、架构选择 5、实时数仓现状 6、湖仓一体架构 7、流批一体架构 文章目录 系列文章目录前言1、Lambda 架构2、Kappa 架构3、混合架构4、架构选择5、实时数仓现状6、湖仓一体架构7、流批一体架构 前言 本文解析了Lam…

警惕IDEA 2024版重大Bug问题:LomBok失效、Gradle冲突、Spring Boot启动错误

一直以来我认为工具类的软件是越新越好,因为工具代表着一定的先进性;但是IDEA 2024好好的给我上了一课,比如lombok 不起作用、比如Spring Boot 3.4.x 启动报错、再比如MyBatis log plus冲突、再比如Gradle插件冲突. 一、Lombok 失效问题 请不…

算法题目总结-双指针

文章目录 1.滑动窗口类型1.长度最小的子数组1.答案2.思路 2.无重复字符的最长子串1.答案2.思路 2.双指针类型1.盛最多水的容器1.答案2.思路 2.三数之和1.答案2.思路 1.滑动窗口类型 1.长度最小的子数组 1.答案 package com.sunxiansheng.arithmetic.day10;/*** Description:…

Leetcode 3429. Paint House IV

Leetcode 3429. Paint House IV 1. 解题思路2. 代码实现 题目链接:3429. Paint House IV 1. 解题思路 这一题解法上就是一个动态规划的思路,由于题目有两个限制条件,即相邻不可以同色,以及前后同位置不可以同色,因此…