数字图像处理——二值、灰度和彩色图像,位图切割

二值、灰度和彩色图像处理

    • 1. 二值、灰度图像的转换
    • 2. 彩色图像的表示
    • 3. 位图切割

——————————————————————————
——————————————————————————

图像:用二维函数f(x,y)表示,f(x,y)是点(x,y)的幅值。

  • 灰度级:0~255 ==》256个灰度级
  • 层次:图像实际拥有灰度级的数量
  • 对比度:灰度反差的大小
  1. 二值图像(binary image):图像上的每一个像素只有两种可能的取值或灰度等级状态。每个像素只需要1Bit就可以完整存储信息
  2. 灰度图像:灰度图只包含一个通道的信息,每个采样像素需要8位存储信息。f(x,y)取值在0~255
  3. 彩色图像:3个f(x,y) 每个像素通常是由红(R)、绿(G)、蓝(B)三个分量来表示的,分量介于(0,255)。

1. 二值、灰度图像的转换

matlab代码:

%原图
data = imread('lena.jpg');  %读取lena.jpg图片   
subplot(221);  %两行两列的画布上,这个图象在第一个位置
               %subplot(2,2,[1 3]) 占1和3的位置(不对称图案)
imshow(data);   %显示图片

%灰度图
gdata = rgb2gray(data);  %灰度化处理
subplot(222);
imshow(gdata);

%二值图
n = graythresh(gdata);  %获得一个合适的阈值 阈值取值范围【0,1】
bw = im2bw(data, n);  %将灰度图像转变成二进制图像bw
subplot(223);
imshow(bw);

结果图:
数字图像处理——二值、灰度和彩色图像,位图切割_第1张图片

2. 彩色图像的表示

彩色RGB图像用三维数组表示,最后一维长度为3(1,2,3分别表示RGB三个分量),对于每一个分量,数值范围也是0~255。红、绿、蓝三个通道的缩略图,都是以灰度显示的,用不同的灰度色阶来表示“ 红,绿,蓝”在图像中的比重。通道中的纯白,代表了该色光在此处为最高亮度,亮度级别是255,0表示亮度最低,255表示亮度最亮。只有三个通道同时有值才可以显示出彩色(如红色通道显示为红色)。

image = imread('lennacolor.png');
image_r=image(:,:,1);
image_g=image(:,:,2);
image_b=image(:,:,3);
zero=zeros(512,512);  %生成512*512全零矩阵
R=cat(3,image_r,zero,zero);  %将输入的3个数组image_r,zero,zero按照数组维度3连接起来
G=cat(3,zero,image_g,zero);
B=cat(3,zero,zero,image_b);
RGB=cat(3,image_r,image_g,image_b);
subplot(2,2,1),imshow(R),title('Red component');
subplot(2,2,2),imshow(G),title('green component');
subplot(2,2,3),imshow(B),title('blue component');
subplot(2,2,4),imshow(RGB),title('original image');

数字图像处理——二值、灰度和彩色图像,位图切割_第2张图片

F = imread('lennacolor.png');
subplot(2,2,1),imshow(F(:,:,1)),title('红色分量');
subplot(2,2,2),imshow(F(:,:,2)),title('绿色分量');
subplot(2,2,3),imshow(F(:,:,3)),title('蓝色分量');
subplot(2,2,4),imshow(F),title('RGB');

数字图像处理——二值、灰度和彩色图像,位图切割_第3张图片

3. 位图切割

由于灰度级L=2^k,是由2的次方构成,每个像素值看作是由K个二进制数组成的。于是每个平面k-1,k-2,…,1,0 中的每一个像素值都等于该像素在该平面的项数值。

f=imread('lena.jpg');
g=double(f);
L1=mod(g,2);
L2=mat2gray(mod(g./2,2));
L3=mat2gray(mod(g./(2.^2),2)); 
L4=mat2gray(mod(g./(2.^3),2)); 
L5=mat2gray(mod(g./(2.^4),2)); 
L6=mat2gray(mod(g./(2.^5),2)); 
L7=mat2gray(mod(g./(2.^6),2)); 
L8=mat2gray(mod(g./(2.^7),2)); 
figure()
subplot(3,3,1);imshow(L1),title('第一层');
subplot(3,3,2);imshow(L2),title('第二层');
subplot(3,3,3);imshow(L3),title('第三层');
subplot(3,3,4);imshow(L4),title('第四层');
subplot(3,3,5);imshow(L5),title('第五层');
subplot(3,3,6);imshow(L6),title('第六层');
subplot(3,3,7);imshow(L7),title('第七层');
subplot(3,3,8);imshow(L8),title('第八层');
subplot(3,3,9);imshow(f),title('原图');

数字图像处理——二值、灰度和彩色图像,位图切割_第4张图片

你可能感兴趣的:(数字图像处理,图像处理)