赞
踩
图像二值化有多种方式,但重点还是如何确定阈值,图像灰度值大于阈值将变为1也就是白色,小于将变为0也就是黑色,基本代码如下:
- RGB = imread('1.jpg');%将图像读入工作区
- Y = rgb2gray(RGB);%将图像灰度化
- BW = imbinarize(Y); %将图像转换为二值图像
- figure;
- imshow(BW)%显示二值图像
这是一个最基本将彩色图像转换为二值图像的代码,接下来详细解释代码(未出现的解释去翻看之前的文章):
imbinarize是matlab自带函数,意思是将后面括号里的图像二值化
灰度图像转换为二值图像将转换灰度的步骤去掉即可,代码:
- Y= imread('1.jpg');%将图像读入工作区
- BW = imbinarize(Y); %将图像转换为二值图像
- figure;
- imshow(BW)%显示二值图像
注意imbinarize只能处理二维图像,如果是彩色图像要进行灰度化
imbinarize通过将所有高于全局阈值的值替换为 1
并将所有其他值设置为 0
,从二维或三维灰度图像 I
创建二值图像。默认情况下,imbinarize使用 Otsu 方法,该方法选择特定阈值来最小化阈值化的黑白像素的类内方差。
也就是说imbinarize其实是通过一个方法自动生成了一个阈值来进行二值化,那假如我们想自己规定一个阈值呢?
也很简单
- Y= imread('1.jpg');%将图像读入工作区
- J=imbinarize(Y,k); %转换成二值图,k为分割阈值
- figure;
- imshow(J);
这个代码里k就是阈值,如果你有更好的方法得到一个更好的阈值就可以使用这个代码。
补充一个得到阈值的代码
k=graythresh(Y); %得到最优阈值
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。