一、读取、显示图片
matlab自带的imread()和imshow()函数可以读取和显示图像,读入的图像数据类型为uint8的数组成的矩阵。
例如:
img = imread('test.png');
imshow(img);
这条语句的作用就是先将'test.png'这一图像读取并保存在img这一变量中,再把img里存的内容显示出来。
二、强制类型转换
在利用matlab做图像处理时经常会出现这样的情况:程序逻辑上没有任何问题,但是处理结果就是不对,出现这种情况通常是因为数值溢出。由于使用imread()读取的图片格式是uint8格式,也就意味着矩阵中每个元素的值是不超过256的整数,如果在运算过程中超过256就会溢出导致出错。遇到这种情况就需要对读取的图片进行强制类型转换。
img = imread('test.png');
img = double(img);%将数据类型转为double
%这里对图像进行一些处理
img = img + 256;
img = img - 256;
%这里这样操作是没有意义的,仅仅是为了方便举例子
%具体的处理方式之后会提到
img = uint8(img);%将数据类型转为uint8
imshow(img);
这里需要注意的是:imshow()同样也只能显示uint8类型数据,因此在显示图像之前需要将其转为uint8格式。
三、彩色转为灰度
在进行图像处理时,尤其是刚刚入门时,我们通常不需要对彩色图像进行操作,那么我们在读取图像后第一步要做的就是把彩色图像转为灰度。matlab中rgb2gray()函数提供了这一功能。
img = imread('test.png');
img = rgb2gray(img);%将彩色图像转为灰度图
imshow(img);
四、子图的绘制
在处理完图像之后我们需要将它显示出来,只有一张结果的图片不太方便我们进行对比,用matlab提供的subplot()函数画两张子图就可以解决这个问题。
img = imread('test.png');
img = rgb2gray(img);
subplot(2,1,1)%画第一张子图,这里的参数分别表示子图行数、子图列数、第几张子图
imshow(img);
title('原图像');%加上子图的标题
img = double(img);
%这里对图像进行一些处理
img = uint8(img);
subplot(2,1,2)%画第二张子图
imshow(img);
title('处理后的图像');
今天关于matlab数字图像处理的基础内容就是这些,喜欢的话点个赞吧