一、图像的几何变换
1、图像的平移操作
% 图像平移
J = imread('E:\photo-process\ta.jpg');
figure;
subplot(1,5,1);
imshow(J);
title('原图')
s = translate(strel(1),[200,-200]);
J1 = imdilate(J,s);
subplot(1,5,2);
imshow(J1);
title('左下方平移');
s = translate(strel(1),[200,200]);
J2 = imdilate(J,s);
subplot(1,5,3);
imshow(J2);
title('右下方平移');
s = translate(strel(1),[200,0]);
J3 = imdilate(J,s);
subplot(1,5,4);
imshow(J3);
title('下方平移');
s = translate(strel(1),[0,200]);
J4 = imdilate(J,s);
subplot(1,5,5);
imshow(J4);
title('右方平移');
2、图像的缩放操作
% 图像缩放
I = imread('E:\photo-process\cat_fish.jpg');
figure;
imshow(I);
title('原图');
J1 = imresize(I,0.5,'nearest');
figure;
imshow(J1);
title('缩小图');
J2 = imresize(I,1.2,'nearest');
figure;
imshow(J2);
title('放大图');
3、图像的旋转操作
% 图像旋转
I = imread('E:\photo-process\cat_fish.jpg');
figure;
subplot(1,2,1);
imshow(I);
title('原图');
[M,N] = size(I);
ang = 180; % 旋转角度
J = I;
% 旋转变换
for i = 1:M
for j = 1:N
x = floor((i-M/2)*cos(ang*pi/180)-(j-N/2)*(-sin(ang*pi/180))+M/2);
y = floor((j-N/2)*cos(ang*pi/180)-(i-M/2)*(-sin(ang*pi/180))+N/2);
if((x0)&&(y>0))
J(i,j) = I(x,y);
else
J(i,j) = 0;
end
end
end
subplot(1,2,2);
imshow(J);
title('图像旋转');
4、图像的镜像操作
I = imread('E:\photo-process\ta.jpg');
figure;
subplot(1,3,1);
imshow(I);
title('原图');
tform1 = maketform('affine',[-1 0 0;0 1 0;1 0 1]);
J1 = imtransform(I,tform1,'nearest');
subplot(1,3,2);
imshow(J1);
title('水平镜像');
tform2 = maketform('affine',[1 0 0;0 -1 0;0 1 1]);
J2 = imtransform(I,tform2,'nearest');
subplot(1,3,3);
imshow(J2);
title('垂直镜像');
figure;
tform3 = maketform('affine',[-1 0 0;1 1 0;1 1 1]);
J3 = imtransform(I,tform3,'nearest');
imshow(J3);
title('非常规镜像');
5、图像的错切操作
% 错切,将图像分别进行垂直45°错切
I = imread('E:\photo-process\ta.jpg');
subplot(1,2,1);
imshow(I);
title('原图');
h = size(I);
f1 = zeros(h(1) + round(h(2)*tan(pi/6)),h(2),h(3));
for m = 1:h(1)
for n = 1:h(2)
f1(m + round(n*tan(pi/6)),n,1:h(3))=I(m,n,1:h(3));
end
end
subplot(1,2,2);
imshow(uint8(f1));
title('垂直45°错切');
二、图像的读取、显示和存储
% 图像读取、显示、存储
% 使用imread函数读取图像
I = imread('E:\photo-process\1.jpg');
% whos函数可以显示一个数组的附加信息
whos I;
% 使用imshow函数显示图像,imshow(I,G),G为灰度级数 ,默认256
imshow(I);
title('原图');
% 使用imwrite函数存储图像,guality后数字整数范围0-100,越小退化越严重,可缺省
imwrite(I,'E:\photo-process\1_1.jpg','quality',2);
J = imread('E:\photo-process\1_1.jpg');
figure;
imshow(J);
title('压缩储存过的图像');
% 使用imfinfo函数,可以了解所实现的压缩并获得图像文件的其他信息
% 可以将imfinfo函数产生的所有信息存入某变量K,则通过结构变量K可以调用这些信息
imfinfo ('E:\photo-process\1_1.jpg')