MATLAB图像处理学习日记之图像的基本几何变换——平移旋转裁剪123基础

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

原始图像:大全鸡,嘿嘿MATLAB图像处理学习日记之图像的基本几何变换——平移旋转裁剪123基础_第1张图片

调用主函数如下:

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);

执行后的结果如下:MATLAB图像处理学习日记之图像的基本几何变换——平移旋转裁剪123基础_第2张图片

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');

效果图如下:
MATLAB图像处理学习日记之图像的基本几何变换——平移旋转裁剪123基础_第3张图片

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('中心镜像');%上下左右绕中心

结果输出如下:
MATLAB图像处理学习日记之图像的基本几何变换——平移旋转裁剪123基础_第4张图片

你可能感兴趣的:(matlab2020B,matlab,计算机视觉,人工智能,图像处理)