01、平移函数
自动保存为ffmove.m然后等待后面的调用
function J = ffmove(Ixy, a, b)
% 定义一个函数名为ffmove, Ixy表示输入图像,a和b描述图像沿着x轴和y轴移动的距离,
[M,N,G] = size(Ixy);
Ixy = im2double(Ixy);
J = ones(M,N,G);
for i=1:M
for j=1:N
if((i+a)>=1&&(i+a)<=M && (j+b)>=1&&(j+b)<=N);
J(i+a, j+b, :)=Ixy(i, j, :);
end
end
end
调用主函数如下:
clear all;clc;
I = imread('sfrggtth.jpg');
a = 20; b = 80;
J1 = ffmove(I, a, b);
a = -20; b = 80;
J2 = ffmove(I, a, b);
a = 28; b = -90;
J3 = ffmove(I, a, b);
a = -30; b = -100;
J4 = ffmove(I, a, b);
subplot(221),imshow(J1);
subplot(222),imshow(J2);
subplot(223),imshow(J3);
subplot(224),imshow(J4);
02、旋转函数
I=imread('cameraman.tif');
I_45N=imrotate(I,45,'bilinear');
imwrite(I_45N,'cameraman_nishizhen45.tif');
I_30S=imrotate(I,-30,'bilinear');
imwrite(I_30S,'cameraman_shuunshizhen30.tif');
I_180=imrotate(I,180,'bilinear');
subplot(221);imshow(I);title('原始图像');
subplot(222);imshow(I_45N);title('逆时针45度');
subplot(223);imshow(I_30S);title('顺时针30度');
subplot(224);imshow(I_180);title('翻转180');
03、裁剪函数
自定义裁剪框,交互调试,可实时调整。
img=imread('fertt.png');
imshow(img);
imgn=imcrop(); %这里把要裁剪的图像框出来
figure;
imshow(imgn) %显示裁剪的图像
注意到十字黑标的位置。可以自定义选择区域,进行框选。
04、镜像函数
定义为ffmirror.m
保存如下
function OutImage = ffmirror(InImage, n)
%I为输入图像,n=1,2,3,分别为水平,垂直,水平垂直镜像,其他报错.
[M, N, G] = size(InImage);
I = InImage;
J = InImage;
if (n==1)
for i = 1:M
for j = 1:N
J(i, j, :) = I(M-i+1, j, :);
end
end
elseif (n==2)
for i = 1:M
for j = 1:N
J(i, j, :) = I(i, N-j+1, :);
end
end
elseif (n==3)
for i = 1:N
for j = 1:M
J(i, j, :) = I(M-i+1, N-j+1, :);
end
end
else
error('参数n错误,n的取值应为1,2,3') %提示输入错误
end
OutImage = J;
主函数如下:
注意打开的文件格式要求,最好是灰度图。
I = imread('cameraman.tif');
J1 = ffmirror(I,1);
J2 = ffmirror(I,2);
J3 = ffmirror(I,3);
subplot(221),imshow(I);title('原始图像');
subplot(222),imshow(J1);title('水平镜像');%上下方向
subplot(223),imshow(J2);title('垂直镜像');%左右方向
subplot(224),imshow(J3);title('中心镜像');%上下左右绕中心