博主使用的是 MATLAB R2018b 版本,所有代码都在该版本下运行。
左侧:该路径下的文件,包括图片文件、代码文件(.m),可以点击预览。
中间上部:代码编辑区,可以编辑代码。
中间下部:命令行窗口,可以输入命令,做一些操作。
右侧:工作区,在命令行或代码区定义的变量都会在工作区显示出来。
上方菜单栏可以选择编辑器,在编辑器编辑完代码可以点击上面的运行开始运行自己写的代码。
clc
:清空命令行窗口。把下方命令行的窗口输入的东西清空
clear
:清空右侧工作区。当右侧工作区有内容时,可以用该命令清空
close all
:把打开的窗口全部关闭。当打开预览的图片时是一个窗口,可以用该命令关闭所有窗口
注:在命令行输入命令时,需要在命令结尾加一个分号,然后回车执行
注:在代码编辑区编写代码时,应将这三个命令都加在行首(示例见下图)
imshow('ImageName');
从右侧目录内选择一个图片文件,并新建一个窗口打开显示
title('TitleName');
在显示的图片上方显示标题
figure;
默认所有图片都显示在一个 figure 里面(第二张图覆盖第一张),可以用 figure; 来新开一个 figure 显示新的图片
注:当一行有多个命令时用逗号分开,命令换行时用分号结尾
示例:
subplot(n, m, p), imshow('ImgaeName');
在一个 figure 中设置 n × m n×m n×m 张图片的位置,从左到右、从上到下依次为 1 , 2 , 3 ⋅ ⋅ ⋅ 1,2,3 ··· 1,2,3⋅⋅⋅ , p 为在第 p 张显示 imshow 的图片
示例:
fa = imread('imagename');
读入一张图片,并将该图片赋给以fa命名的变量,然后在工作区会出现一个条目 fa ,有该条目的名称和值信息,对于 RGB 的图一般为三个维度的值。 工作区的uint8代表8位图,即每个像素点的取值为 0-255(从黑到白)。 下图中工作区的变量 fa 表示一张 RGB 的图,215×329×3 代表 *宽×高×维度 ,三维即代表有三层同样大小的图片重叠堆成,每张图片是不一样的颜色分量,详细情况将在后续讲解。
g = rgb2gray(fa);
把变量名为 fa 的 RGB 图片转换为灰度图,灰度图有一个维度的值,每个像素点的值也是 8 位表示(即取值为0-255),可以看下图工作区变量 g 的示例。
b = imbinarize(g);
将灰度图 g 转换为二值图,二值图也为一维图,二值图的每个像素点只能取 1(代表白色) 或 0(代表黑色),其中的参数必须是灰度图。
在matlab2018中建议用 imbinarize
函数,在 matlab2016 中用 im2bw
代替 imbinarize
,两个均可以带有阈值,两个函数的详细区别见 这里。
j = imadjust(g);
自动调整灰度图 g 的对比度,传入的参数一定要是灰度图(效果见图)
j = imadjust(g, [low_in; high_in], [low_out; high_out]);
对图像 g 中的值映射,映射后的图像为 j 。 映射:使 g 图中在 low_in 和 high_in 之间的像素值,等比例映射为 low_out 和 high_out 之间。值低于 low_in 的值映射为 low_out ,高于 high_in 的值被映射为 high_out 。 后面两个参数都可以省略,即用 [ ] 来代替,代表 [0 1] 。
以下的示例先展示了将图片转换为灰度图,然后输出了用 imadjust
自动调整的图片,然后显示了用 imadjust
自己输入参数调整的图片。
示例代码:
clear,clc,close all;
f=imread('lenna.png');
fa=rgb2gray(f);
figure;
imshow(fa),title('灰度图');
ga=imadjust(fa);
figure;
imshow(ga),title('自动调整');
gb=imadjust(fa,[0.4 0.6],[0.5 0.8]);
figure;
imshow(gb),title('手工指定值');
imhist(g);
输出灰度图 g 的直方图(对有相同像素值的像素点个数统计的图表)。
以下示例输出了将 RGB 的图片转换为灰度图后,统计灰度图 fa
的直方图。
上文提到,灰度图是一维图,每个像素点的取值为 0-255,从直方图横坐标可以看到,所有像素点的取值就是在 0-255 内,取不同值的像素个数也在直方图内的纵坐标显示出来了。
示例代码:
clear,clc,close all;
f=imread('lenna.png');
fa=rgb2gray(f);
subplot(1,2,1),imshow(fa);
subplot(1,2,2),imhist(fa);
h = histeq(g);
对灰度图 g 进行直方图均衡,使图像的直方图的像素值分布的更均匀。
下例可以看到,通过 histeq
函数作用后,像素值大小不同的像素点的个数分布更加均匀了。
示例代码:
clear,clc,close all;
f=imread('lenna.png');
fa=rgb2gray(f);
subplot(2,2,1),imshow(fa);
subplot(2,2,2),imhist(fa);
gh=histeq(fa);
subplot(2,2,3),imshow(gh)
subplot(2,2,4),imhist(gh);
%
:注释代码
%%
:代码分节,将下面的代码单独分为一节,可以全部注释后在 主页>预设>编辑器/调试器>代码折叠 勾选可折叠节
+ :注释所有选中行
+ :去除所有选中行的注释
+ :缩进所有选中行
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删