——————————————————————————
——————————————————————————
图像:用二维函数f(x,y)表示,f(x,y)是点(x,y)的幅值。
- 二值图像(binary image):图像上的每一个像素只有两种可能的取值或灰度等级状态。每个像素只需要1Bit就可以完整存储信息
- 灰度图像:灰度图只包含一个通道的信息,每个采样像素需要8位存储信息。f(x,y)取值在0~255
- 彩色图像:3个f(x,y) 每个像素通常是由红(R)、绿(G)、蓝(B)三个分量来表示的,分量介于(0,255)。
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);
彩色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');
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');
由于灰度级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('原图');