处理图像前先看看 图像有几种格式
matlab im2bw作用
使用阈值(threshold)变换法
把灰度图像(grayscale image)转换成二值图像 (黑白图,0黑 255白)
当然, 也可以是其他任意两种颜色的组合。
用法:
BW = im2bw(I,level)
将灰度图像 I 转换为二进制图像。输出图像 BW 将输入图像中亮度值大于 level 的像素替换为值1 (白色),其他替换为值0(黑色)。
你指定 level 在 [0,1]之间,函数graythresh 能用来自动计算变量 level 。如果你不指定 level ,im2bw 使用 0.5。
eg: 比如level是 0.8,0.8*255=204 那么输入图像中的像素值大于204的全部变成255(白),剩下的变成0(黑)。
BW = im2bw(X,map,level)
将颜色表为 map 的索引图像 X 转换为二进制图像。
55 | 22 | 33 |
5 | 12 | 25 |
45 | 46 | 45 |
..... | ...... | ..... |
BW = im2bw(RGB,level)
将 RGB 真彩图像转换为二进制图像。Level是归一化的阈值,值域为[0,1]。Level可以由函数graythresh(I)来计算。
【如果输入图像不是灰度图像, im2bw 首先将图像转换为灰度图像,然后通过阈值将灰度图像转换成二进制图像。】
例子:
X = imread("filename")
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:上面已经解释了,输出的是二值图像。