0%

Matlab图像


【常用函数介绍】

初始化操作

1
2
3
clc                 %清屏, 即Command Window里的内容会被清除掉,但变量的值仍在
clear %清除所有的变量
close all %关闭所有打开的图片

Help

1
2
doc function_name   %查看名为function_name的函数的用法
help function_name %同上,但是没有上面解释的详细

Others

1
2
3
4
5
whos                %输出当前工作区中所有变量的属性
whos Variable_name %输出当前工作区中名为Variable_name的变量的属性

mkdir('image') %在Matlab主目录下创建一个文件夹, 名为image
mkdir('D:\image') %在D盘创建一个文件夹, 名为image

【坐标轴设置】

1
2
3
4
5
6
7
8
9
10
11
f1=ezplot('sinx');

%设置x轴的显示范围,x坐标刻度数字的字体、大小
set(gca,'Xlim',([35 46]),'Fontname','Arial','Fontsize',25);

%设置y轴的显示范围,坐标刻度,数字的字体、大小
set(gca,'Ylim',([0 2]),'ytick',[0.1 0.5 0.7],'yticklabel',{'0.1' '0.5' 'c'},'Fontname','Arial','Fontsize',25);

%| 'Ylim',([0 2]) |, 设置y轴的显示范围为[0 2]
%| 'ytick',[0.1 0.5 0.7] |, 设置y轴只在y=0.1, y=0.5, y=0.7处显示刻度; 空缺表示不显示
%| 'yticklabel',{'0.1' '0.5' 'c'} |, 设置y轴在y=0.1, y=0.5, y=0.7处的标签依次为0.1, 0.5, c; 空缺表示不显示

【图片设置】

1
2
3
4
5
6
7
8
9
10
11
%以比例的方式设置图片在屏幕的显示位置,大小
%x0, y0分别表示图片窗口的起始点在屏幕中的横纵位置,。如果起始点在屏幕的最左下角, 则x0为0, y0也为0;
%Lx, Ly分别表示图片窗口的长度和高度
%set(f1,'units','normalized','position',[x0 y0 Lx Ly]);
set(f1,'units','normalized','position',[0 0 0.7 0.9]);

%以比例的方式设置坐标轴在图片中的显示位置,大小
%x0, y0分别表示图片的起始点在图片窗口的横纵位置,。如果起始点在图片窗口的最左下角, 则x0为0, y0也为0;
%Lx, Ly分别表示图片的长度和高度;如果是比例,则表示图片窗口的比例
%set(gca,'units','normalized','Position',[x0 y0 Lx Ly]);
set(gca,'units','normalized','Position',[.15 .15 .75 .75]);

【图片标注】

1
2
3
4
5
6
7
8
9
10
11
12
%Math works有个文档叫Controlling Legends, 讲如何控制Legend。下例中,legend中跳过了图像h2。
figure(1)
x=0:0.1:1;
y1=sin(x);
y2=cos(x);
y3=sin(x).*cos(x);
h1=plot(x,y1);
hold on
h2=plot(x,y2);
hold on
h3=plot(x,y3);
legend([h1 h3],{'sinx','sinx*cosx'})

矩阵

将矩阵的一部分取出并赋值

A=load(‘Zone_1.txt’);
A_sub=Data(2:10,3:9); %将A的第2:10行,第3:9行赋值给A_sub。


【读取图像】

读取内置图像

1
2
3
4
5
6
7
8
I=imread(‘pout.tif’)                   %读取Matlab的内置图像'pout.tif', 并将值存储在变量I中。
I=imread('image\image_name.jpg') %相对路径读取, image是Matlab主目录下的一个文件夹
I=imread('D:\image\image_name.jpg') %绝对路径读取, image是D盘下的一个文件夹

%循环读取多个图像
for i=1:20
I=imread(['D:\image\',num2str(i),'.jpg']);
end

图像的值的意义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
%读取图像I的属性
>> whos I
Name Size Bytes Class Attributes

I 291x240 69840 uint8

%输出图像I的值(只示一部分结果),数值表示灰度值
>> I
82 82 82 84 87 83 82 83 83 83 82 80
80 82 82 82 89 83 84 83 83 82 82 80
82 82 80 80 84 84 84 84 83 82 82 83
84 84 82 82 84 87 87 89 87 84 84 86
97 93 93 93 94 97 97 95 95 97 97 97
...

显示图像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
imshow(I)           %按照图像原始比例显示
imtool(I) %暂时用不到, 待补充
image(I) %暂时用不到, 待补充

%如果只是让Matlab显示多张图片,而不对图片进行操作
figure;
imshow(I1)
figure;
imshow(I2)
figure;
imshow(I3)

%如果既要让Matlab显示多张图片,又要对图片进行操作,则需要指定图像句柄
f1=figure(1);
imshow(I1)
f2=figure(2);
imshow(I2)
f3=figure(3);
imshow(I3)

%在一张图中显示多个子图
I=imread('pout.tif');
subplot(2,2,1);imshow(I);title('1');
subplot(2,2,2);imshow(I);title('2');
subplot(2,2,3);imshow(I);title('3');
subplot(2,2,4);imshow(I);title('4');


【存储图像】

1
2
3
4
5
6
7
8
9
10
11
%将图像I存储为image_name.format, 路径为Matlab主目录。image_name是图片的名字;format是图片的格式, 可选jpg, png, tif等 
imwrite(I,strcat('image_name','.format'))

%将图像I存储为image_name.format, 路径为D:\image
imwrite(I,['D:\image\', strcat('image_name','.format')])


%循环存储多个图像
for i=1:20
imwrite(I, ['D:\image\',num2str(i),'.jpg']);
end

Reference

https://www.zhihu.com/question/23230625