主函数main.m
close all; %关闭当前所有图形窗口
clear all; %清空工作空间变量
clc; %清屏
I=imread('lena.bmp');
a=50;b=50;
J1=move(I,a,b);
a=-50;b=50;
J2=move(I,a,b);
a=50;b=-50;
J3=move(I,a,b);
a=-50;b=-50;
J4=move(I,a,b);
set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置
set(0,'defaultFigureColor', [1 1 1]) %修改图形背景颜色的设置
figure,
subplot(221),imshow(J1),axis on;
subplot(222),imshow(J2),axis on;
subplot(223),imshow(J3),axis on;
subplot(224),imshow(J4),axis on;
move.m
function J = move(I, a, b)
[M, N, G] = size(I);
I = im2double(I);
J = ones(M + abs(a), N + abs(b), G); %建立新的矩阵,将新图像扩大,避免越过边界
for i = 1:M
for j = 1:N
if(a < 0 && b < 0)
J(i, j, :) = I(i, j, :);
elseif(a > 0 && b > 0)
J(i + a, j + b, :) = I(i, j , :);
elseif(a < 0 && b > 0)
J(i, j + b, :) = I(i, j, :);
else
J(i + a, j, :) = I(i, j, :);
end
end
end
end
实验结果
主函数main.m
close all; %关闭当前所有图形窗口
clear all; %清空工作空间变量
clc; %清屏
I=imread('lena.bmp');
J1=mirror(I,1);% 1水平、2垂直、3水平垂直
J2=mirror(I,2);
J3=mirror(I,3);
set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置
set(0,'defaultFigureColor', [1 1 1]) %修改图形背景颜色的设置
subplot(221),imshow(I),axis on;
subplot(222),imshow(J1),axis on;
subplot(223),imshow(J2),axis on;
subplot(224),imshow(J3),axis on;
mirror.m
function J = mirror(I, a)
[M, N, G] = size(I);
I = im2double(I);
J = ones(M, N, G);
for i = 1:M
for j = 1:N
if(a == 1)%水平镜像
J(i, N-j+1, :) = I(i, j, :);
elseif(a == 2 )%垂直镜像
J(M-i+1, j, :) = I(i, j, :);
elseif(a == 3 )%水平垂直
J(M-i+1, N-j+1, :) = I(i, j, :);
end
end
end
实验结果
主函数main.m
close all;
clear all;
clc;
[I,map]=imread('lena.bmp');
I=rgb2gray(I);
J1=imresize(I,0.1);%缩小
J2=imresize(I,3);%放大两倍
J3=imresize(I,[20 10]);%设置缩放后图像行列
J4=imresize(I,1.6,'bilinear');%双线性插值法
J5=imresize(I,1.6,'triangle');%三角函数插值法
figure,
subplot(231),imshow(I),axis on;
subplot(232),imshow(J1),axis on;
subplot(233),imshow(J2),axis on;
subplot(234),imshow(J3),axis on;
subplot(235),imshow(J4),axis on;
subplot(236),imshow(J5),axis on;
实验结果
主函数main.m
close all;
clear all;
clc;
I=imread('lena.bmp');
J1=imrotate(I,45);%设置旋转角度,大于0是逆时针,小于0是顺时针。
J2=imrotate(I,-30);
J3=imrotate(I,30,'bicubic','crop'); %设置输出图像大小,双线性插值
J4=imrotate(I,30,'bicubic','loose');%图像足够大,包括旋转图像
figure,
subplot(221),imshow(J1);
subplot(222),imshow(J2);
subplot(223),imshow(J3);
subplot(224),imshow(J4);
% imrotate(I,angel,method,bbox),angel为旋转角度
% method取值为'nearest'最近邻插值,'bilinear'双线性插值和'bicubic'双三次插值
% bbox说明返回图像大小,crop表示一样,loose表示输出的图像足够大包括完整的旋转图像
实验结果