转自:https://www.cnblogs.com/lihuidashen/p/3432562.html
im2bw是基于转换为二值图像的算法,用的是otsu’s method.

matlab中DIP工具箱函数im2bw使用阈值(threshold)变换法把灰度图像(grayscale image)转换成二值图像。所谓二值图像, 一般意义上是指只有纯黑(0)、纯白(255)两种颜色的图像。 当然, 也可以是其他任意两种颜色的组合。 在matlab命令行中键入doc im2b或help im2bw即可获得该函数的帮助信息。

阈值变换

比如数组 a = [120, 254, 0, 200, 99];

设定一个阈值125, 并对a进行阈值变换, 那么a中凡是大于125的, 则变为255, 小于等于125的则变为0

(具体对临界情况处理可能不同, 不过matlab中im2bw函数是按照上述方法处理的)

这样a经过阈值变换后变为[0, 255, 0, 255, 0]

功能:

通过设定亮度将阈值灰度、真彩、索引图像转换为二值图像。

用法:

BW = im2bw(I,level)

将灰度图像 I 转换为二进制图像。输出图像 BW 将输入图像中亮度值大于 level 的像素替换为值1 (白色),其他替换为值0(黑色)。你指定 level 在 [0,1]之间,不用管输入图像的等级。函数graythresh 能用来自动计算变量 level 。如果你不指定 level ,im2bw 使用 0.5。

BW = im2bw(X,map,level)

将颜色表为 map 的索引图像 X 转换为二进制图像。

BW = im2bw(RGB,level)

将 RGB 真彩图像转换为二进制图像。Level是归一化的阈值,值域为[0,1]。Level可以由函数graythresh(I)来计算。
【如果输入图像不是灰度图像, im2bw 首先将图像转换为灰度图像,然后通过阈值将灰度图像转换成二进制图像。】

例子:load trees

BW = im2bw(X,map,0.4);

imview(X,map),imview(BW)

(拓展一下)各个函数的使用:

im2uint8:将输入转化为uint8,有效的输入图像数据类型包括logical, uint8, uint16, double

im2uint16:将输入转化为uint16,有效的输入图像数据类型包括同上

mat2gray:将输入转化为double,但是输出的double数据都在[0, 1]范围内,有效的输入只有double

im2double:如果输入的不是double类型图像,在输出都是在[0, 1]范围,如uint8则输出为uint8/255。但如果是double类型,则原样输出

im2bw:上面已经解释了,输出的是二值图像。

图像处理函数im2bw详解相关推荐

  1. 数字图像处理:OpenCV-Python中的直方图均衡知识介绍及函数equalizeHist详解

    一.引言 在<数字图像处理:直方图均衡(Histogram Equalization)的原理及处理介绍 >(链接:https://blog.csdn.net/LaoYuanPython/a ...

  2. matlab对图像操作函数的详解(笔记1)

    matlab对图像操作函数的详解 一. 读写图像文件 1. imread imread函数用于读入各种图像文件,如:a=imread('e:\w01.tif') 注:计算机E盘上要有w01相应的.ti ...

  3. OpenCV-Python图像处理:仿射变换详解及案例

    仿射变换博文传送门(带星号的为付费专栏文章): *图像仿射变换原理1:齐次坐标来龙去脉详解 *图像仿射变换原理2:矩阵变换.线性变换和图像线性变换矩阵 *图像仿射变换原理3:仿射变换类型及变换矩阵详解 ...

  4. mybatis接口中的方法重载_MyBatis的Mapper接口以及Example的实例函数及详解

    一.mapper接口中的方法解析 mapper接口中的函数及方法 方法 功能说明 int countByExample(UserExample example) thorws SQLException ...

  5. ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)

    ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...

  6. R语言tidyr包gather()函数实战详解:数据收缩、从宽表到窄表

    R语言tidyr包gather()函数实战详解:数据收缩.从宽表到窄表 目录 R语言tidyr包gather()函数实战详解:数据收缩.从宽表到窄表 收缩两列数据

  7. R语言tidyr包spread()函数实战详解:数据裂变、从窄表到宽表

    R语言tidyr包spread()函数实战详解:数据裂变.从窄表到宽表 目录 R语言tidyr包spread()函数实战详解:数据裂变.从窄表到宽表

  8. R语言tidyr包Unite()函数实战详解:多个数据列合并为一列

    R语言tidyr包Unite()函数实战详解:多个数据列合并为一列 目录 R语言tidyr包Unite()函数实战详解:多个数据列合并为一列

  9. R语言tidyr包separate()函数实战详解:一列裂变为多列

    R语言tidyr包separate()函数实战详解:一列裂变为多列 目录 R语言tidyr包separate()函数实战详解:一列裂变为多列 一列裂变为两列

最新文章

  1. keras 的 example 文件 addition_rnn.py 解析
  2. 软件工程系列教材:软件架构设计实践教程
  3. hadoop 运行java程序_Hadoop java 程序运行
  4. 富文本编辑器的配置使用
  5. 面试必会系列 - 1.1 Java SE 基础
  6. python进行数据查询_如何进行python数据库查询?(实例解析)
  7. 我们真正需要的目标(原名:制定目标你会吗?)
  8. 你认识的有钱人,是怎么起家的?是做什么生意的?
  9. qt qtableview插入进度条_Qt之QSqlTableModel的使用
  10. C# dataGridView选中一行右键出现菜单,对数据进行操作(datatable的操作)
  11. MySQL 数据库性能调优
  12. EXCEL VBA编程入门三:VBA开发环境认识
  13. c语言搜索算法伪代码,FFT算法伪代码
  14. LeetCode995.Minimum Number of K Consecutive Bit Flips(K 连续位的最小翻转次数 )
  15. 我的十余年职业生涯之路
  16. Mac上doc 转docx
  17. oracle通信通道的文件结尾_“ORA-03113: 通信通道的文件结尾”报错处理
  18. SQL --理解SQL SERVER中的逻辑读,预读和物理读
  19. php 元旦祝福,元旦祝福语大全简短 简短独特
  20. 我给文案新人的1点建议!

热门文章

  1. 微信增加“数字人民币”入口
  2. 内存访问顺序 - part2: 屏障及Linux kernel中屏障的使用
  3. 【招聘直通车】美团公交业务部交通事业部招聘啦!
  4. SiC肖特基的电流密度提高了50%,浪涌额定值也提高了50%
  5. ROS-RouterOS hAP ac2+usb 4G上网卡+小米新推的无线上网卡是绝配
  6. 中国十大“勾魂”美景-雪山
  7. PMP培训机构是不是实战培训?
  8. C++异常中的堆栈跟踪
  9. 时间序列分析之排列熵(Permutation Entropy)
  10. 关于iOS招聘面试的一些问题