Read and Show an image
- Read an image:
imread()
- Show an image:
imshow()
I = imread('pout.tif'); %read
imshow(I); %show
一张图片有 rgb 三种颜色,每个点就是一个矩阵的数值,而这个数值就代表着 rgb,所以我们操作一个图片,也就相当于操作一个矩阵内的数值,或者说,修改矩阵内的数值,也就相当于修改图片
接下来做一个操作,将这个矩阵内行数和列数能被 2 整除的,将这一行和列内的值全部变为 0
for i = 1 : size(i,1)
for j = 1 : size(i,2)
if(rem(i,2) == 0 || rem(j,2) == 0)
I(i,j) = 0;
end
end
end
Imageinfo
如果想要查询有关于一张图片的相关信息,可以使用函数imageinfo
,其调用格式为:imageinfo('string')
,其中 string 为图片的名称(包含后缀名)
imageinfo('pout.tif')
Imtool
imtool
函数主要是用来查看一个图片的每个像素对应的数值
imtool('pout.tif')
Image Processing
immultiply()
immultiply
函数的调用格式为:Immultiply(I,x)
,其含义是,将图像对应的矩阵 I 内的所有数值乘以 x
I = imread('rice.png');
subplot(1,2,1);
imshow(I);
J = immultiply(I,1.5);
subplot(1,2,2);
imshow(J);
imadd()
imadd
函数的作用是将两张影像相加,其调用格式为:imadd(I,J)
,I 的含义是一个影像对应的矩阵,J 是另一个影像对应的矩阵,但是使用imadd()
函数有一个限制条件,就是 I,J 必须是同型的矩阵,否则无法相加
I = imread('rice.png');
J = imread('cameraman.tif');
K = imadd(I,J);
subplot(1,3,1);imshow(I);
subplot(1,3,2);imshow(J);
subplot(1,3,3);imshow(K);
imhist()
imhist()
函数的作用是将一个图片的数值分析出来并做成一个柱状图,其调用格式为:imhist(I)
I = imread('pout.tif');
imhist(I);
稍微解释一下这个图,横坐标是 0-255,纵坐标是频数,表示这个值有多少个
histeq()
通过分析上面的图,我们发现他在某一个区间数值比较集中,而其他数值几乎就没有,这种图像的数值分布并不是很均匀,所以如果我们想要它分布更加均匀,就可以使用histeq
函数,起调用格式为:histeq(I)
I = imread('pout.tif');
I2 = histeq(I);
subplot(1,4,1);imhist(I);
subplot(1,4,2);imshow(I);
subplot(1,4,3);imshow(I2);
subplot(1,4,4);imhist(I2);
imrotate()
imrotate
函数的作用是旋转一个图像,其调用格式为:imrotate(I,theta,’bilinear’)
,theta
表示旋转的角度,billinear
照写即可
I = imread('rice.png');
subplot(1,2,1);
imshow(I);
J = imrotate(I,35,'bilinear');
subplot(1,2,2);
imshow(J);
还有一些对影像的操作,这里就不讲了,下面附一张图,有需要的可以自行Google
imwrite()
imwrite
函数的作用是保存图像,其调用格式为:imwrite(I,’string’)
,其中,I 是保存图像对应的矩阵,string 是保存的名字(包含后缀名)