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

原始图像:大全鸡,嘿嘿在这里插入图片描述

调用主函数如下:

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

结果输出如下:
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海宝7号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值