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

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.kler.cn/a/511739.html

相关文章:

  • Spring Boot 3.3.4 升级导致 Logback 之前回滚策略配置不兼容问题解决
  • [gdb调试] gdb调试基础实践gdb指令汇总
  • JS Clipboard API
  • Ubuntu20.04取消root账号自动登录的方法,触觉智能RK3568开发板演示
  • 锐捷路由器网关RG-NBR6135-E和锐捷交换机 Ruijie Reyee RG-ES224GC 电脑登录web方法
  • 20250118-读取并显示彩色图像以及提取彩色图像的 R、G、B 分量
  • python 基础类json和csv
  • 深入剖析iOS网络优化策略,提升App性能
  • 【LC】2239. 找到最接近 0 的数字
  • Node.js 写一个登录中间件
  • 排序算法学习小结
  • 如何确保Python爬虫不违反微店规定
  • Elixir语言的软件开发工具
  • 切面Aop的了解和使用
  • 【优选算法篇】2----复写零
  • 打游戏黑屏了但是有游戏声音 原因分析
  • 口令攻击和钓鱼攻击
  • nvm的各种命令及其用途
  • spring那些事
  • 2021最新中高阶Android面试题总结,已整理成文档_android面试题2021中高级
  • Springboot项目启动优化详解
  • 详解position: sticky粘性定位
  • 性能优化之动态加载
  • Android APK的打包流程_android apk打包流程
  • iOS UIScrollView的一个特性
  • (k8s)k8s部署mysql与redis(无坑版)