MATLA图像处理之二值化以及灰度处理

首先先来明白几个概念:
1、彩色图像(RGB):图像的每个像素点都是由红(R)、绿(G)、蓝(B)三个分量来表示的,每一个分量一般分别介于0-255之间,当然如果每一个颜色分量用更多的位数去表示的话,那么分量的取值就会大于255。假设现在每个基色用一个字节表示,那么彩色图像的每一个像素就是用3*8=24位来表示,即一个像素可以呈现出2的24次方种颜色,大约是1600万种颜色。彩色图像在MATLAB中存储是一个三维的像素矩阵,第一维代表图像的X坐标,第二维代表图像的Y坐标,第三维代表R、G、B,第三维中的数字1代表R,数字2代表G,数字3代表B。
2、灰度图像(gray image):图像的每一个像素点只有一个颜色分量,这个颜色分量的取值同样也与每个像素的表示数据位数有关系,如果是8位的(即用8个二进制数来表示一个像素点的数值),那么分量取值就是0-255,共256级灰度,如果是16位的,那么分量取值就是0-65535,共65536级灰度。灰度图像在MATLAB中存储是一个二维像素矩阵,第一维代表图像的X坐标,第二维代表图像的Y坐标。
3、二值图像(binary image):图像的每一个像素点取值只有两种可能,要么是黑色,要么是白色。通常我们把其他图像转化为二值图像的时候,就会设定一个阈值,当原始图像的某个像素的数值大于这个阈值的时候,我们就把这个像素变成白色(颜色分量为255),如果某个像素的数值小于这个阈值的时候,我们就把这个像素变成黑色(颜色分量为0),当把原始图像的每一个像素点都这样遍历完之后,就形成了一幅二值化图像。二值化图像在MATLAB中是一个二维像素矩阵,第一维代表图像的X坐标,第二维代表图像的Y坐标。

下面我们在MATLAB中进行各个图像之间的转化

%读取一张图片,并显示
original_picture=imread('C:\Users\MyPC\Desktop\cat.jpg');
figure(1);
imshow(original_picture);
title('原始RGB图像')

%把图像转换成灰度图像
GrayPic=rgb2gray(original_picture);%把RGB图像转化成灰度图像
figure(2)
imshow(GrayPic);
title('RGB图像转化为灰度图像')

%对图像进行二值化处理
thresh=graythresh(original_picture);%graythresh为自动确定二值化阈值函数,大于该阈值的就变成白色,小于该阈值的就变成黑色,所以阈值越大越黑,阈值越小越白
Pic2=im2bw(original_picture,thresh);%如果想要自己设定阈值,那么就可以这样写Pic2=im2bw(original_picture,value);,value=[0,1]中间的任何数值
figure(3);
imshow(Pic2);
title('RGB图像转化为二值化图像')

thresh=graythresh(GrayPic);
Pic2_=im2bw(GrayPic,thresh);
figure(4);
imshow(Pic2_);
title('灰度图像转化为二值化图像')

结果如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述