笔记基于matlab官网的图像处理课程。
1.读入图片和显示图片
-
格式:
读入 imread(’’);
显示 imshow(’’); -
首先找到自己存放图片的文件夹,它在matlab中是灰色显示的
-
如果不将这个灰色的文件夹导入到matlab路径,则图片不可以正常的读入和显示,但最好是添加路径,将文件夹变成黑色
2. 二值化—把彩色图转化为灰度图
- 格式:im2bw(img, [level]); level表示阈值的水平,可加可不加,表示大于level的数字为黑,小于level的数字为白
pic1 = im2bw(picture);
imshow(pic1);
pic2 = im2bw(picture, 0.8);
imshow(pic2);
3. 显示多幅图片
-
subplot—多幅图片显示在同一张画布上
-
picture = imread('matlabCode\images\3.jpg'); pic1 = im2bw(picture) pic2 = im2bw(picture, 0.8); subplot(1,3,1),imshow(picture); subplot(1,3,2),imshow(pic1); subplot(1,3,3),imshow(pic2);
-
picture = imread('matlabCode\images\3.jpg'); pic1 = im2bw(picture); pic2 = im2bw(picture, 0.8); %figure(1) subplot(1,3,1); imshow(picture); subplot(1,3,2); imshow(pic1); subplot(1,3,3); imshow(pic2);
-
-
多幅图片显示在多张画布上
picture = imread('matlabCode\images\3.jpg'); pic1 = im2bw(picture); pic2 = im2bw(picture, 0.8); %分号或逗号均可 figure(1),imshow(picture); figure(2),imshow(pic1); figure(3),imshow(pic2);
4. 给图像加标题
-
语法:title(’’)
picture = imread('matlabCode\images\3.jpg'); pic1 = im2bw(picture); pic2 = im2bw(picture, 0.8); subplot(1,3,1); imshow(picture); title('原图') subplot(1,3,2); imshow(pic1); title('二值化1') subplot(1,3,3); imshow(pic2); title('阈值为0.8的二值化')
4. 显示图像大小
-
格式:size()
disp(size(picture)) %显示disp(),3表示三维通道 1018 1024 3
5. 显示变量值
-
格式:disp() whos xxx(必须为字符串标量或字符向量)
whos picture %结果 Name Size Bytes Class Attributes picture 1018x1024x3 3127296 uint8
6. 点运算
- 通过变换函数,将图像的单个像素拿出来运算
1)灰度图:rgb2gray()
picture = imread('matlabCode\images\3.jpg');
pic_gray = rgb2gray(picture)
subplot(1,2,1),imshow(picture),title('原图');
subplot(1,2,2),imshow(pic_gray),title('灰度图');
2)灰度直方图:图像灰度分布的情况
- 格式:imhist( , [划分区间数])
subplot(1,3,3),imhist(pic_gray),title('灰度直方图');
- 横坐标表示像素值,纵坐标表示像素个数
3)彩色图像的直方图
- 原理:一张彩色图有三个通道R、G、B,将这三个通道拆分显示的过程如下
%提取RGB三个分量分别显示
[x, y, z] = size(picture)
subplot(2,2,1),imshow(picture),title('原图');
%提取R通道
r = picture;
%将图片第2,3个通道所有行和列赋值为0
r(:,:,2)=zeros(x, y)
r(:,:,3)=zeros(x, y)
subplot(2,2,2),imshow(r),title('R通道');
%提取G通道
g = picture;
%将图片第1,3个通道所有行和列赋值为0
g(:,:,1)=zeros(x, y)
g(:,:,3)=zeros(x, y)
subplot(2,2,3),imshow(g),title('G通道');
%提取B通道
b = picture;
%将图片第1,2个通道所有行和列赋值为0
b(:,:,1)=zeros(x, y)
r(:,:,2)=zeros(x, y)
subplot(2,2,4),imshow(b),title('B通道');
-
彩色图像的直方图如下
%绘制RGB3个通道的直方图 r = picture(:,:,1); g = picture(:,:,2); b = picture(:,:,3); subplot(2,2,1),imshow(picture),title('原图'); subplot(2,2,2),imhist(r),title('R通道直方图'); subplot(2,2,3),imhist(g),title('G通道直方图'); subplot(2,2,4),imhist(b),title('B通道直方图');
4)灰度线性变换
-
将图像的像素值通过指定的线性函数进行变换,以增强或者减弱图像的灰度
-
变换公式:g(x,y) = k*f(x,y)+d
-
k>1,增强图像的对比度,图像灰度分布被拉伸了;k<1,图像对比度被消弱了,图像灰度分布变窄;k=1,修改d,图像亮度改变;k<0,原图亮的地方变暗,暗的地方变亮
%灰度线性变换 i = im2double(rgb2gray(picture)); subplot(1,3,1),imshow(picture),title('原图'); pic_gray = rgb2gray(picture) subplot(1,3,2),imshow(pic_gray),title('灰度图'); %增加对比度 k = 1.25; b = 0; pic3 = i .* k + b; subplot(1,3,3),imshow(pic3),title('增加对比度');
-