关于MATLAB图像处理基础操作的记录

一、图像的几何变换

1、图像的平移操作

关于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

关于MATLAB图像处理基础操作的记录_第2张图片
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°错切');

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

关于MATLAB图像处理基础操作的记录_第3张图片
image.png

关于MATLAB图像处理基础操作的记录_第4张图片
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图像处理基础操作的记录)