当前位置: 首页 > news >正文

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.lryc.cn/news/523636.html

相关文章:

  • 【NextJS】PostgreSQL 遇上 Prisma ORM
  • ASP.NET Core - 配置系统之配置提供程序
  • 【LeetCode: 215. 数组中的第K个最大元素 + 快速选择排序】
  • 【Flink系列】10. Flink SQL
  • JavaScript网页设计案例-JavaScript实现数据脱敏的几种解决方式
  • 第12篇:从入门到精通:掌握python高级函数与装饰器
  • 审计文件标识作为水印打印在pdf页面边角
  • leetcode416.分割等和子集
  • 使用docker-compose安装ELK(elasticsearch,logstash,kibana)并简单使用
  • 深度学习中超参数
  • [JavaScript] 运算符详解
  • Hooks 使用规则
  • Ubuntu 24.04 LTS 安装 Docker Desktop
  • 智能创造的幕后推手:AIGC浪潮下看AI训练师如何塑造智能未来
  • 从 JIRA 数据到可视化洞察:使用 Python 创建自定义图表
  • 【网络原理】万字详解 HTTP 协议
  • PHP企业IM客服系统
  • Linux操作系统的灵魂,深度解析MMU内存管理
  • PHP代码审计学习01
  • 《数据思维》之数据可视化_读书笔记
  • 深度学习常见术语解释
  • 重温STM32之环境安装
  • 使用Flask和Pydantic实现参数验证
  • python_在钉钉群@人员发送消息
  • C语言之装甲车库车辆动态监控辅助记录系统
  • 线性代数概述
  • 使用 ChatGPT 生成和改进你的论文
  • Linux命令行工具-使用方法
  • RV1126+FFMPEG推流项目(7)AI音频模块编码流程
  • 四、华为交换机 STP