matlab 图像处理保存,关于MATLAB图像处理基础操作的记录

一、图像的几何变换

1、图像的平移操作

image.png

% 图像平移

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、图像的缩放操作

image.png

% 图像缩放

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、图像的旋转操作

image.png

% 图像旋转

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、图像的镜像操作

image.png

image.png

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、图像的错切操作

image.png

% 错切,将图像分别进行垂直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°错切');

二、图像的读取、显示和存储

image.png

image.png

% 图像读取、显示、存储

% 使用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')

你可能感兴趣的:(matlab,图像处理保存)